HPFS

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 13. června 2016; kontroly vyžadují 10 úprav .

HPFS  (zkratka z anglického  High performance file system ) je souborový systém vyvinutý specialisty Microsoftu a IBM na základě zkušeností IBM s vytvářením MVS , souborových systémů VM a metody virtuálního přístupu. Pro Microsoft vedl zkušený programátor Gordon Letwin

Podpora HPFS se poprvé objevila v OS /2 verze 1.2. Od té doby je nativní podpora pro HPFS přítomna ve všech verzích OS/2 . Windows NT měl podporu pro HPFS až do verze 3.51 včetně (ačkoli existují příběhy o úspěchu pro použití starého ovladače HPFS ve Windows NT 4.0 a Windows 2000). Následně Microsoft opustil HPFS ve prospěch vlastního souborového systému NTFS , jehož vývoj vzal v úvahu zkušenosti s vytvářením HPFS.

V OS/2 existuje serverová verze ovladače HPFS s názvem HPFS386, která má některé další funkce.

Struktura

Disk v HPFS je rozdělen na sektory pevné velikosti (512 bajtů v aktuální implementaci, zatímco číslo sektoru nebo počet sektorů je interně zakódován jako 4bajtové celé číslo bez znaménka, což umožňuje adresovat disky až do velikosti 2 32 * 512 = o velikosti 2 terabajty ).

Na začátku disku je několik řídicích bloků:

  1. Boot sektor DOS -ovskogo typu.
  2. SuperBlock obsahuje informace o geometrii disku, ukazatele na bitmapy (tzv. bitmaps , z angličtiny  bitmaps ) volného místa, ukazatel na kořenový adresář, velikost pruhu disku, číslo pruhu s adresáři, ukazatel na seznam špatných bloků atd. SuperBlock také obsahuje datum posledního spuštění nástroje CHKDSK . Normálně změní SuperBlock pouze programy CHKDSK a FORMAT .
  3. SpareBlock obsahuje ukazatele na fond oblastí HOTFIX , fond odolnosti proti chybám (pouze HPFS386 používá odolnost proti chybám), fond bloků pro téměř plné diskové operace a další ukazatele, příznaky a deskriptory.
  4. Bootstrap oblast.
  5. Oblast sektorů používaných (dočasně) k provádění operací, které vyžadují další místo na disku. Tato oblast se například někdy používá při přejmenování souboru na plném disku.
  6. Ostatní oblasti.

K určení, zda je sektor volný nebo zaneprázdněn, používá HPFS bitmapy , kde každý bit odpovídá jednomu sektoru. Pokud bit obsahuje 1, znamená to, že sektor je zaneprázdněn, jinak je volný. Pokud by na celém disku byla pouze jedna bitmapa, pak byste ji pro výměnu museli přesunout čtecími/zápisovými hlavami v průměru přes polovinu disku. Aby se tomu zabránilo, HPFS rozděluje disk na "pásma" (nebo skupiny , z angličtiny  bands ) dlouhé 8 megabajtů a ukládá bitmapy volných sektorů na začátek nebo konec každého proužku. V tomto případě jsou bitmapy sousedních pásem umístěny vedle sebe:

±----------- 16 MB -----------+ *** - Použít/uvolnit bitmapu sektoru. | | ±-|-------------±----------±--|--±-----±-- --------- ----+ |*** Pásmo 0 | Dráha 1 ***|*** Dráha 2 | Pásmo 3***| ±---------------±--------------±-------------------- -------------+ 0 MB 8 MB 16 MB 24 MB 32 MB

Vzdálenost mezi dvěma bitmapami je 16 MB. Velikost pruhu (8 MB) se může v budoucích verzích HPFS změnit, protože na něj nejsou žádné přímé odkazy. HPFS určuje velikost pruhu při čtení řídicích bloků z disku během operace FSHelperAttach.

Velikost bitmapy je 2 kB (8 MB/512/8 = 2 kB).

Proužek ve středu disku slouží k ukládání adresářů. Toto pásmo se nazývá Directory Band. Pokud se však zaplní, HPFS začne umisťovat adresáře souborů do jiných pruhů.

Soubory a adresáře v HPFS jsou založeny na základním objektu zvaném FNode . Každý FNode zabírá jeden sektor a v HPFS je vždy umístěn poblíž svého souboru nebo adresáře (obvykle bezprostředně před souborem nebo adresářem). FNode obsahuje délku a prvních 15 znaků názvu souboru, statistiky přístupu k souboru, interní informace, rozšířené atributy a ACL (nebo jen část, pokud jsou velmi velké), asociativní informace o umístění a podřízenosti souboru atd. .

Délka názvů souborů a adresářů s plnou náhradou (od kořene) by neměla přesáhnout 260 znaků, přičemž každá součást cesty by neměla být delší než 255 znaků. V názvech souborů nejsou povoleny následující znaky:

0h-1Fh , 7Fh , /, |, \, *, ?, ", <, >

Koncové sekvence jsou ignorovány, pokud je na konci souboru tečka, pak je také ignorována (kvůli kompatibilitě programu). Uvnitř názvu souboru je tečka stejný znak jako ostatní. S ruskými písmeny nejsou žádné problémy. Když je soubor vytvořen, HPFS si pamatuje pravopis jeho názvu, i když nerozlišuje malá a velká písmena v dalších operacích než těch, které vracejí informace o souboru.

Příklady jmen:

  1. "FILE.ASM"
  2. „Zlý soubor. ASM.OBJ.EXE"
  3. "Ještě zlomyslnější." TXT"

Z hlediska umístění zachází HPFS se soubory, adresáři a jejich rozšířenými atributy (pokud se nevejdou do FNode) jako se sadami oblastí . Rozsah je část souboru, která leží v po sobě jdoucích sektorech. Každý rozsah je popsán dvěma čísly: číslem prvního sektoru a délkou (v sektorech). Dva po sobě jdoucí rozsahy jsou vždy pomocí HPFS sloučeny do jednoho. Minimální velikost rozsahu je jeden sektor. Protože vzdálenost mezi sousedními bitmapami volných sektorů je 16 MB, je velikost maximálního rozsahu 16 MB. Pokud se soubor skládá z osmi oblastí nebo méně, pak se celý jeho popis uloží do FNode.

Pokud se soubor skládá z více než osmi oblastí, pak jeho popis může zabírat několik sektorů umístěných blíže k souboru, přičemž tyto sektory neobsahují seznam, ale sešitý vyvážený B + strom rozsahů. Strom je konstruován tak, že jeho nevyváženost nikdy nepřesáhne 1/3 objemu a neliší se od optimální o více než jednu úroveň. Kořen stromu je ve FNode a může obsahovat až 12 prvků. Každý další sektor, což je větev stromu, obsahuje až 60 prvků a list obsahuje 40 prvků. Pokud se tedy soubor skládá z jednoho sektorového rozsahu (to se nikdy nestane!) a má velikost 2 GB, bude k jeho popisu vyžadovat strom následující struktury: 12*60*60*60*40=53 MB listů a 1,7 MB větví. Pro náhodný přístup k jakékoli části souboru to bude vyžadovat (v nejhorším případě) 5 čtení řídicích struktur.

Skutečné soubory se skládají z 1-3 oblastí.

Maximální velikost souboru v HPFS je nyní 2 GB, ale to je určeno pouze velikostí pole velikosti souboru a ukazatelem souboru (4 bajty) v samotném OS/2 a jeho API . Toto není limit HPFS. Je třeba si uvědomit, že HPFS nemá koncept clusteru, soubor může zabírat 1, 2, 3, 4 nebo jakýkoli jiný počet sektorů.

Při vytváření/rozšiřování souborů se HPFS snaží minimalizovat počet oblastí pomocí statistik, bitmap volného sektoru a dalších informací. Například HPFS se snaží podmíněně vyhradit alespoň 4 kilobajty místa na konci souborů, které rostou. Dalším trikem je umístit kompetitivně rostoucí soubory nebo soubory otevřené různými řetězci nebo procesy do různých diskových pruhů.

Adresáře v HPFS, stejně jako ve FAT , tvoří stromovou strukturu. Zároveň však uvnitř adresáře vytváří HPFS vyvážený B * strom založený na názvech souborů, aby bylo možné rychle vyhledat soubor podle názvu v adresáři. Pokud například adresář obsahuje 4096 souborů, FAT přečte v průměru 64 sektorů, aby našel soubor v adresáři, zatímco HPFS přečte 2-4 sektory a najde soubor.

Velikost bloku z hlediska toho, které adresáře jsou alokovány, je v aktuální verzi HPFS 2 KB. Velikost záznamu popisujícího soubor závisí na velikosti názvu souboru. Pokud je název 13 bajtů (8,3), pak 2kilobajtový blok obsahuje 41 deskriptorů souborů. Bloky jsou sešity seznamem (stejně jako deskriptory rozsahu), aby se usnadnilo sekvenční procházení.

HPFS nemá problémy FAT s "únikem" místa na disku při mazání velkého počtu souborů v adresáři.

Přejmenování souboru může vést k opětovnému vyvážení stromu. Tato operace může vyžadovat přidělení dalších bloků na plném disku. V tomto případě se bloky odebírají ze speciálního fondu, jehož ukazatel leží v SpareBlock.

Rozšířené atributy a jejich varianty ACL HPFS ukládá ve FNode. Pokud se nevejdou do FNode, HPFS je uloží téměř jako soubor vytvořením B±Stromu. Rozšířené názvy atributů před HPFS386 nebyly seřazeny v B-stromu.

HPFS386

HPFS386  je ovladač pro souborový systém HPFS , který je určen pro serverové systémy s velkým zatížením diskových operací. Ovladač HPFS386 je dodáván se serverem LAN pro OS/2 .

Hlavní rozdíly mezi HPFS386 a standardním ovladačem HPFS v OS / 2 :

Literatura