पदानुक्रमित फ़ाइल सिस्टम (Apple)

हिएरार्चिकल फाइल सिस्टम (एचएफएस) क्लासिक मैक ओएस चलाने वाले कंप्यूटर सिस्टम में उपयोग के लिए ऐप्पल इंक द्वारा विकसित मालिकाना सॉफ्टवेयर फ़ाइल सिस्टम है। मूल रूप से फ्लॉपी डिस्क और हार्ड डिस्क पर उपयोग के लिए डिज़ाइन किया गया है, इसे सीडी रॉम जैसे रीड-ओनली मीडिया पर भी पाया जा सकता है। एचएफएस को मैक ओएस स्टैंडर्ड (या एचएफएस स्टैंडर्ड) भी कहा जाता है, जबकि इसके उत्तराधिकारी, एचएफएस प्लस को मैक ओएस एक्सटेंडेड (या एचएफएस एक्सटेंडेड) भी कहा जाता है।

मैक ओएस मैकओएस 10.15 से प्रारंभ होकर, एचएफएस डिस्क को अब पढ़ा नहीं जा सकता है।

इतिहास
एप्पल ने सितंबर 1985 में एचएफएस का प्रारंभ किया, विशेष रूप से मैकिंटोश 128K लिए एप्पल की पहली हार्ड डिस्क 20 का समर्थन करने के लिए, मैकिंटोश फ़ाइल सिस्टम (एमऍफ़एस) की स्थान, मूल फ़ाइल सिस्टम जिसे डेढ़ साल पहले पहले मैकिंटोश 128K कंप्यूटर के साथ प्रस्तुत किया गया था। एचएफएस ने असफल एप्पल III के लिए हिएरार्चिकल फ़ाइल सिस्टम, एप्पल एसओएस के साथ एप्पल के पहले ऑपरेटिंग सिस्टम पर भारी प्रभाव डाला, जो एप्पल IIe और एप्पल लिसा पर हिएरार्चिकल फ़ाइल सिस्टम के लिए आधार के रूप में भी कार्य करता था। एचएफएस को पैट्रिक डर्क्स और बिल ब्रुफ़ी द्वारा विकसित किया गया था। इसने एमएफएस के साथ अनेक डिज़ाइन सुविधाएँ साझा कीं जो उस समय की अन्य फ़ाइल प्रणालियों में उपलब्ध नहीं थीं (जैसे कि डॉस की फ़ाइल आवंटन तालिका)। फ़ाइलों में अनेक  फ़ोर्क (सामान्यतः डेटा और संसाधन फ़ोर्क) हो सकते हैं, जो फ़ाइल के मुख्य डेटा को उन संसाधनों से भिन्न  संग्रहीत करने की अनुमति देता है जैसे कि आइकन जिन्हें स्थानीयकृत करने की आवश्यकता हो सकती है। फ़ाइलों को फ़ाइल नामों के अतिरिक्त अद्वितीय फ़ाइल आईडी के साथ संदर्भित किया गया था, और फ़ाइल नाम 31 वर्ण तक लंबे हो सकते हैं।

चूँकि, एमएफएस को बहुत छोटे और धीमे मीडिया, अर्थात् फ्लॉपी डिस्क पर उपयोग करने के लिए अनुकूलित किया गया था, इसलिए एचएफएस को बड़े मीडिया, विशेष रूप से हार्ड ड्राइव के प्रारंभ के साथ आने वाली कुछ प्रदर्शित समस्याओं को दूर करने के लिए प्रस्तुत किया गया था। मुख्य चिंता किसी फ़ोल्डर की सामग्री को प्रदर्शित करने में लगने वाले समय की थी। एमएफएस के अनुसार सभी फ़ाइल और निर्देशिका सूची की जानकारी एक ही फ़ाइल में संग्रहीत की गई थी, जिसे सिस्टम को किसी विशेष फ़ोल्डर में संग्रहीत फ़ाइलों की सूची बनाने के लिए खोजना था। इसने कुछ सौ किलोबाइट स्टोरेज और संभवतः सौ फाइलों वाले सिस्टम के साथ अच्छा कार्य किया, किंतु जैसे-जैसे सिस्टम मेगाबाइट और हजारों फाइलों में बढ़ता जाता है, इस प्रकार प्रदर्शन में तेजी से गिरावट आती है।

समाधान यह था कि एमएफएस की निर्देशिका संरचना को बड़े फ़ाइल सिस्टम के लिए उपयुक्त से बदल दिया जाता है। एचएफएस ने फ्लैट टेबल संरचना को कैटलॉग फ़ाइल से बदल दिया जो बी-ट्री संरचना का उपयोग करती है जिसे आकार की परवाह किए बिना बहुत तेज़ी से खोजा जा सकता है। एचएफएस ने बड़ी संख्याएं रखने में सक्षम होने के लिए विभिन्न संरचनाओं को फिर से डिजाइन किया है, 16-बिट पूर्णांक को लगभग सार्वभौमिक रूप से 32-बिट द्वारा प्रतिस्थापित किया गया है। विचित्र रूप से, उन कुछ स्थानों में से एक जहां यह अपसाइज़िंग नहीं हुई थी वह फ़ाइल निर्देशिका ही थी, जो एचएफएस को प्रत्येक लॉजिकल डिस्क पर कुल 65,535 फ़ाइलों तक सीमित करती है।

जबकि एचएफएस मालिकाना फ़ाइल सिस्टम प्रारूप है, यह अच्छी तरह से प्रलेखित है; अधिकांश आधुनिक ऑपरेटिंग सिस्टम से एचएफएस-स्वरूपित डिस्क तक पहुंचने के लिए सामान्यतः समाधान उपलब्ध हैं।

ऐप्पल ने आवश्यकतानुसार सितंबर 1985 में मैकिंटोश के लिए अपनी पहली 20 एमबी हार्ड डिस्क 20 की प्रस्तुति के साथ एचएफएस का प्रारंभ किया था, जहां इसे पैच फ़ाइल (हार्ड डिस्क 20) का उपयोग करके बूट पर एमएफएस फ्लॉपी डिस्क से रैम में लोड किया गया था। चूँकि, एचएफएस को तब तक व्यापक रूप से प्रस्तुत नहीं किया गया था जब तक कि इसे 128K रीड ऑनली मेमोरी में सम्मिलित नहीं किया गया था, जो जनवरी 1986 में मैकिंटोश प्लस के साथ मैकिंटोश के लिए बड़े 800 KB फ़्लॉपी डिस्क ड्राइव के साथ प्रारंभ हुआ था जिसमें एचएफएस का भी उपयोग किया गया था। एचएफएस का प्रारंभ ऐप्पल द्वारा मैकिंटोश कंप्यूटर मॉडल को पीछे छोड़ने वाली पहली प्रगति थी: मूल मैकिंटोश 128K, जिसमें एचएफएस कोड को लोड करने के लिए पर्याप्त मेमोरी की कमी थी और इसे तुरंत संवृत कर दिया गया था।

1998 में, एप्पल ने एचएफएस में डिस्क स्थान के अकुशल आवंटन को संबोधित करने और अन्य सुधार जोड़ने के लिए एचएफएस प्लस का प्रारंभ किया था। एचएफएस प्लस अभी भी मैक ओएस के वर्तमान संस्करणों द्वारा समर्थित है, किंतु मैक ओएस या अद्यतन किया गया है। मैकओएस सिएरा (10.12) में, एप्पल के रिलीज़ नोट्स में कहा गया है कि एचएफएस मानक फ़ाइल सिस्टम अब समर्थित नहीं है। चूँकि, रीड-ओनली एचएफएस मानक समर्थन मैकओएस 10.15 के रिलीज़ होने तक कार्य करता रहा है। 35 वर्षों के बाद क्लासिक एचएफएस मानक के लिए आधिकारिक समर्थन समाप्त किया गया था।

डिज़ाइन
एक भंडारण मात्रा स्वाभाविक रूप से 512 बाइट्स के तार्किक ब्लॉक में विभाजित है। हिएरार्चिकल फ़ाइल सिस्टम इन तार्किक ब्लॉकों को आवंटन ब्लॉकों में समूहित करता है, जिसमें वॉल्यूम के कुल आकार के आधार पर एक या अधिक तार्किक ब्लॉक हो सकते हैं। एचएफएस आवंटन ब्लॉकों को संबोधित करने के लिए 16-बिट मान का उपयोग करता है, जिससे आवंटन ब्लॉकों की संख्या 65,535 (216-1) तक सीमित हो जाती है।

पांच संरचनाएं एचएफएस वॉल्यूम बनाती हैं:
 * 1) वॉल्यूम के लॉजिकल ब्लॉक 0 और 1 बूट फ़ील्ड  हैं, जिनमें सिस्टम स्टार्टअप जानकारी होती है। उदाहरण के लिए, सिस्टम और शेल (सामान्यतः मैकिंटोश खोजक ) फ़ाइलों के नाम जो स्टार्टअप पर लोड किए जाते हैं।
 * 2) लॉजिकल ब्लॉक 2 में मास्टर डायरेक्ट्री ब्लॉक (जिसे एमडीबी भी कहा जाता है) सम्मिलित है। यह वॉल्यूम के बारे में डेटा की विस्तृत विविधता को परिभाषित करता है, उदाहरण के लिए जब वॉल्यूम बनाया गया था तो दिनांक और समय टिकटें, अन्य वॉल्यूम संरचनाओं का स्थान जैसे वॉल्यूम बिटमैप या आवंटन ब्लॉक जैसी तार्किक संरचनाओं का आकार था। एमडीबी का डुप्लिकेट भी है जिसे वैकल्पिक मास्टर निर्देशिका ब्लॉक (जिसे वैकल्पिक एमडीबी भी कहा जाता है) दूसरे से अंतिम तार्किक ब्लॉक में वॉल्यूम के विपरीत छोर पर स्थित है। यह मुख्य रूप से डिस्क उपयोगिताओं द्वारा उपयोग के लिए है और इसे केवल तभी अपडेट किया जाता है जब कैटलॉग फ़ाइल या एक्सटेंशन ओवरफ़्लो फ़ाइल का आकार बढ़ता है।
 * 3) लॉजिकल ब्लॉक 3 वॉल्यूम बिटमैप का प्रारभिकी ब्लॉक है, जो ट्रैक करता है कि कौन से आवंटन ब्लॉक उपयोग में हैं और कौन से निःशुल्क हैं। वॉल्यूम पर प्रत्येक आवंटन ब्लॉक को मानचित्र में बिट द्वारा दर्शाया गया है: यदि बिट सेट है तो ब्लॉक उपयोग में है; यदि यह स्पष्ट है तो ब्लॉक का उपयोग निःशुल्क है। चूंकि वॉल्यूम बिटमैप में प्रत्येक आवंटन ब्लॉक का प्रतिनिधित्व करने के लिए बिट होना चाहिए, इसका आकार वॉल्यूम के आकार से ही निर्धारित होता है। एक्स्टेंट ओवरफ़्लो फ़ाइल बी-ट्री है जिसमें अतिरिक्त एक्सटेंशन होते हैं जो रिकॉर्ड करते हैं कि कैटलॉग फ़ाइल में प्रारभिकी तीन एक्सटेंशन का उपयोग होने पर कौन से आवंटन ब्लॉक किन फ़ाइलों को आवंटित किए जाते हैं। बाद के संस्करणों में एक्सटेंट ओवरफ़्लो फ़ाइल में व्यर्थ ब्लॉकों को रिकॉर्ड करने और फ़ाइल सीमा को संग्रहीत करने की क्षमता भी जोड़ी गई थी, जिससे फ़ाइल सिस्टम को किसी फ़ाइल में व्यर्थ ब्लॉक को आवंटित करने के प्रयास करने से रोका जा सकता है।
 * 4) कैटलॉग फ़ाइल अन्य बी-ट्री है जिसमें वॉल्यूम में संग्रहीत सभी फ़ाइलों और निर्देशिकाओं के रिकॉर्ड सम्मिलित हैं। यह चार प्रकार के रिकॉर्ड संग्रहीत करता है। प्रत्येक फ़ाइल में फ़ाइल थ्रेड रिकॉर्ड और फ़ाइल रिकॉर्ड होता है जबकि प्रत्येक निर्देशिका में निर्देशिका थ्रेड रिकॉर्ड और निर्देशिका रिकॉर्ड होता है। कैटलॉग फ़ाइल में फ़ाइलें और निर्देशिकाएं उनके अद्वितीय कैटलॉग नोड आईडी (या सीएनआईडी) द्वारा स्थित होती हैं।
 * 5) * एक फ़ाइल थ्रेड रिकॉर्ड केवल फ़ाइल का नाम और उसकी मूल निर्देशिका का सीएनआईडी संग्रहीत करता है।
 * 6) * एक फ़ाइल रिकॉर्ड फ़ाइल के बारे में विभिन्न प्रकार के मेटाडेटा को संग्रहीत करता है जिसमें उसका सीएनआईडी, फ़ाइल का आकार, तीन टाइमस्टैम्प (जब फ़ाइल बनाई गई थी, अंतिम बार संशोधित, अंतिम बार बैकअप किया गया), डेटा की पहली फ़ाइल विस्तार और संसाधन फोर्क्स सम्मिलित हैं और एक्सटेंट ओवरफ़्लो फ़ाइल में फ़ाइल के पहले डेटा और संसाधन सीमा रिकॉर्ड के संकेतक है। फ़ाइल रिकॉर्ड दो 16 बाइट फ़ील्ड भी संग्रहीत करता है जिनका उपयोग फ़ाइंडर द्वारा फ़ाइल के बारे में विशेषताओं को संग्रहीत करने के लिए किया जाता है, जिसमें इसके निर्माता कोड, प्रकार कोड, फ़ाइल को प्रदर्शित होने वाली विंडो और विंडो के अन्दर उसके स्थान जैसी चीज़ें सम्मिलित हैं।
 * 7) * एक डायरेक्ट्री थ्रेड रिकॉर्ड केवल डायरेक्टरी का नाम और उसकी मूल निर्देशिका का सीएनआईडी संग्रहीत करता है।
 * 8) * एक निर्देशिका रिकॉर्ड जो निर्देशिका के अन्दर संग्रहीत फ़ाइलों की संख्या, निर्देशिका की सीएनआईडी, तीन टाइमस्टैम्प (जब निर्देशिका बनाई गई थी, अंतिम बार संशोधित किया गया था, अंतिम बार बैकअप किया गया था) जैसे डेटा संग्रहीत करता है। फ़ाइल रिकॉर्ड की तरह, डायरेक्ट्री रिकॉर्ड भी फ़ाइंडर द्वारा उपयोग के लिए दो 16 बाइट फ़ील्ड संग्रहीत करता है। ये निर्देशिका की सामग्री, विंडो के डिस्प्ले मोड (आइकन दृश्य, सूची दृश्य इत्यादि) और विंडो की स्क्रॉल बार की स्थिति को प्रदर्शित करने के लिए उपयोग की जाने वाली विंडो के लिए चौड़ाई और ऊंचाई और x और y निर्देशांक जैसी चीजों को संग्रहीत करते हैं।

सीमाएँ
कैटलॉग फ़ाइल, जो सभी फ़ाइल और निर्देशिका रिकॉर्ड को एक ही डेटा संरचना में संग्रहीत करती है, जब सिस्टम कंप्यूटर कंप्यूटर मल्टीटास्किंग की अनुमति देता है, तो प्रदर्शन संबंधी समस्याएं उत्पन्न होती हैं, क्योंकि एक समय में केवल एक ही प्रोग्राम इस संरचना में लिख सकता है, इसका अर्थ यह है कि एक प्रोग्राम द्वारा सिस्टम को "हॉगिंग" करने के कारण अनेक प्रोग्राम श्रंखला में प्रतीक्षा कर रहे होंगे। यह गंभीर विश्वसनीयता चिंता का विषय भी है, क्योंकि इस फ़ाइल के क्षतिग्रस्त होने से संपूर्ण फ़ाइल सिस्टम नष्ट हो सकता है। यह अन्य फ़ाइल सिस्टमों से भिन्न है जो फ़ाइल और निर्देशिका रिकॉर्ड को भिन्न -भिन्न संरचनाओं (जैसे डॉस की फैट फ़ाइल सिस्टम या यूनिक्स फ़ाइल सिस्टम) में संग्रहीत करते हैं, जहाँ संरचना को डिस्क पर वितरित करने का मतलब है कि एकल निर्देशिका को हानि पहुँचाना सामान्यतः गैर-घातक है और डेटा संभवतः गैर-क्षतिग्रस्त भागों में रखे गए डेटा के साथ इसका पुनर्निर्माण किया जा सकता है।

इसके अतिरिक्त, 65,535 आवंटन ब्लॉकों की सीमा के परिणामस्वरूप फ़ाइलों का न्यूनतम आकार डिस्क के आकार 1/65,535वें के समान्तर हो गया है। इस प्रकार, कोई भी वॉल्यूम, चाहे उसका आकार कोई भी हो, अधिकतम 65,535 फ़ाइलें ही संग्रहीत कर सकता है। इसके अतिरिक्त, किसी भी फ़ाइल को आवंटन ब्लॉक आकार तक, वास्तव में आवश्यकता से अधिक स्थान आवंटित किया जाता है। जब डिस्क छोटी थीं, तो इसका कोई परिणाम नहीं था, क्योंकि व्यक्तिगत आवंटन ब्लॉक का आकार तुच्छ था, किंतु जैसे-जैसे डिस्क 1 जीबी के चिह्न तक पहुंचने लगी, तो किसी भी फ़ाइल द्वारा कैप्चर की जा सकने वाली सबसे छोटी स्थान (एक एकल आवंटन ब्लॉक) अत्यधिक बड़ी हो गई, इस प्रकार डिस्क स्थान की महत्वपूर्ण मात्रा नष्ट कर रहा है। उदाहरण के लिए, 1 जीबी डिस्क पर, एचएफएस के अनुसार आवंटन ब्लॉक का आकार 16 केबी है, इसलिए 1 बाइट फ़ाइल भी 16 केबी डिस्क स्थान लेती है। बड़ी फ़ाइलें (जैसे चित्र, डेटाबेस या ऑडियो) रखने वाले उपयोगकर्ताओं के लिए यह स्थिति कम समस्या वाली थी क्योंकि ये बड़ी फ़ाइलें अपने फ़ाइल आकार के प्रतिशत के रूप में कम स्थान नष्ट करती थीं। दूसरी ओर, अनेक  छोटी फ़ाइलों वाले उपयोगकर्ता, बड़े आवंटन ब्लॉक आकार के कारण प्रचुर मात्रा में स्थान खो सकते हैं। इसने मैक उपयोगकर्ताओं के लिए छोटे लॉजिकल वॉल्यूम में विभाजन डिस्क को बहुत आकर्षक बना दिया था, क्योंकि छोटे वॉल्यूम पर संग्रहीत छोटे दस्तावेज़ बड़े विभाजन पर रहने की तुलना में बहुत कम स्थान लेता है। यही समस्या फैट16 फ़ाइल सिस्टम में भी उपस्थित थी।

एचएफएस उस फ़ाइल के केस को सहेजता है जिसे बनाया गया है या उसका नाम बदला गया है किंतु संचालन में केस-असंवेदनशील है।

यह भी देखें

 * फ़ाइल सिस्टम की तुलना
 * एपीएफएस
 * एचएफएस प्लस

बाहरी संबंध

 * HFS specification from developer.apple.com
 * Filesystems HOWTO: HFS - slightly out of date
 * HFS File Structure Explained - early description of HFS
 * DiskWarrior - Software to eliminate all damage to the HFS disk directory
 * MacDrive - Software to read and write HFS/HFS Plus-formatted disks on Microsoft Windows
 * hfsutils - open-source software to manipulate HFS on Unix, DOS, Windows, OS/2