Dentro il sistema

L'HPFS

Marco Bertini
 

Sul numero 2/97 di Marzo/Aprile di Just WARP! nell'articolo High Performance File System è stata presentata la struttura dell'HPFS; in questo articolo invece esamineremo l'uso dell'HPFS da parte di altri sistemi operativi, tra cui NT 4, che a differenza da quanto detto da Microsoft e dalle riviste informatiche che si trovano in edicola, può supportare l'HPFS; rivedremo brevemente le caratteristiche tecniche dell'HPFS, ed esamineremo perché la frammentazione dei file è praticamente inesistente con l'HPFS e come recuperare file e dischi danneggiati. .

L'HPFS e gli altri file system


L'HPFS è il file system nativo di OS/2; è vero che questo supporta anche la FAT, ma in questo articolo vedremo molte ragioni per cui è preferibile usare l'HPFS.
Innanzi tutto ricordiamo che OS/2 può gestire più file system, tramite il meccanismo degli Installable File System, ovvero un set di speciali librerie dinamiche che provvedono il supporto per vari formati di dischi, e sono specificate nel file CONFIG.SYS con l'istruzione IFS; alcuni di questi IFS sono, oltre l'HPFS stesso, il CDFS per i CD, il NETWKSTA per i Warp connessi in rete e l'HPFS386 per i Warp Server.
In questo modo è possibile aggiungere il supporto per nuovi file system come per l'EXT2 di Linux; se a questi aggiungiamo anche per esempio l'RSJ CD-Writer della RSJ, per masterizzare CD, che tratta il masterizzatore esattamente come se fosse un hard disk, ci si rende conto dell'estrema potenza del sistema degli IFS.
Cominciamo con un breve elenco dei vantaggi dell'HPFS rispetto alla FAT del DOS e alla VFAT di Windows 95:

  • risparmio di spazio, infatti FAT e VFAT allocano cluster di settori di diversi kilobyte, un file di 1 byte in realtà può arrivare a occupare 32kb, questo può essere un serio problema, per dischi di 1 o 2 Gb si può arrivare a sprecare il 40% usando la FAT o VFAT! L'HPFS invece alloca settori di 512 byte.
  • una vera gestione dei nomi lunghi, la VFAT in realtà infatti salva il nome lungo in un cluster a parte, aumentando ancora lo spreco di spazio.
  • migliore performance nella gestione e recupero delle directory e file.
  • maggiore sicurezza dei dati; anche solo usando il CHKDSK fornito con il sistema, con il parametro /F:2, è possibile recuperare praticamente tutti i danni che può subire un sistema HPFS.
  • migliore supporto degli attributi estesi, in una partizione FAT vengono conservati in un file nascosto nella directory principale, mentre la gestione nativa dell'HPFS è più veloce e sicura, ed un'interfaccia ad oggetti come la Workplace Shell dipende molto dagli attributi estesi.

A tutto questo aggiungiamo il fatto che l'HPFS e'supportato anche da Linux, Windows NT, e DOS, sia a livello di sistema che usando utility freeware o shareware a basso costo.
Per il DOS queste si trovano su Hobbes (hobbes.nmsu.edu) e consentono in genere sia di leggere che scrivere partizioni HPFS, come già visto su Just WARP! 4/96 nell'articolo OS/2 e... gli altri.
Per Windows NT invece la gestione dell'HPFS è nativa fino alla versione 3.51, NT 4.0 non la include. Il problema si risolve però facilmente con HPFS/NT (http://www.htc.net/~nbehnken) un'utility gratuita che installando il driver per l'HPFS di NT 3.5x (PINBALL.SYS) ne consente di nuovo una gestione completa.
Anzi, in questo modo è possibile "installare" NT 4 su una partizione HPFS; dopo averlo installato su una partizione FAT, e averci aggiunto il supporto HPFS, basta usare Partition Magic per convertire il file system FAT in HPFS.
Per quanto riguarda l'accesso alle partizioni NTFS di Windows NT da parte di OS/2, per ora questo è disponibile in sola lettura grazie a NTFS-OS2, un insieme di utility freeware di Daniel Steiner. Lo sviluppo di queste utility è tuttora in corso, e se ci sarà sufficiente interesse l'autore porterà sotto OS/2 l'IFS di Linux, che consente anche l'accesso in scrittura.

La struttura dell'HPFS


Vediamo meglio come mai HPFS funziona così bene.
In definitiva questo è dovuto a una buona progettazione; il disco è diviso in zone di 16 Mbyte, con le strutture di allocazione dello spazio e delle directory nel mezzo, così nel caso peggiore un file dista 8 Mbyte dalle strutture che ne gestiscono l'accesso, a differenza di quanto accade nella FAT/VFAT, che ha queste strutture nei cilindri più esterni del disco.

- mappa di un disco HPFS -

Anche la directory radice del disco è situata nel centro, per ridurre gli spostamenti della testina.
La struttura delle directory usa BTree (alberi binari bilanciati), e la ricerca di un file usa una strategia di ricerca binaria estremamente veloce, infatti nei nodi dell'albero binario delle directory sono contenuti i blocchi di dati dei file, ordinati alfabeticamente; per cercare un file quindi si esamina un blocco finché si trova o una corrispondenza o un nome lessicalmente maggiore, in quest'ultimo caso se c'è un puntatore ad un altro nodo si segue, altrimenti la ricerca finisce, perché il file non esiste.
La FAT invece usa liste lineari, per cui la ricerca di un file, che abbia successo o meno, prevede sempre il dover scorrere tutta la lista.
Per maggiori informazioni potete leggere l'articolo High Performance File System su Just WARP! 2/97.

La frammentazione dei file


Passiamo ora all'annoso problema della deframmentazione dei dischi, che angoscia gli utilizzatori di DOS e Windows 95, sempre alla ricerca della più veloce e sicura utility di deframmentazione.
In realtà questo problema con HPFS praticamente non esiste, grazie al suo sistema di allocazione: i settori di un file sono riuniti in gruppi contigui (extent) ognuno grande al massimo 16 MByte.
Quando un nuovo file è creato, il suo extent è allocato in zone il più possibile separate da quelle già in uso, e se non è possibile allocare un'unica zona contigua sono usate delle strategie per diminuire il numero di extent necessari.
Una variazione degli alberi binari visti prima, il B+Tree, è usata per l'allocazione di file che necessitano di più di 8 extent, ovvero potenzialmente più grandi di 128 MByte. Questa tecnica rende il sistema capace di gestire file grandi fino a 2 GByte e altamente frammentati; comunque ora il tempo di accesso dipenderebbe più dalla dimensione stessa che dal livello di frammentazione.
Esistono comunque deframmentatori, che in questi casi potrebbero risultare utili; sono sia freeware come HPFSDFRG, o come HPFSOPT, e che potete trovare su Hobbes, sia commerciali come quelli compresi nelle Graham utilities o nelle Gammatech utilities.
Nella figura si vede l'ottimizzatore della Gammatech, da cui si vede anche l'infima percentuale di file frammentati.

- Gammatech 3.0 HPFS Opt -

La sicurezza dei file


Guardiamo adesso alle ragioni della maggiore sicurezza di HPFS rispetto a FAT e VFAT, la questione è importante specialmente per un sistema operativo che deve stare in rete; fondamentalmente la resistenza agli errori è dovuta alla ridondanza di informazioni del file system.
Tutti i settori hanno un identificatore univoco a 32 bit che rende possibile al CHKDSK di riconoscere le strutture dati anche su dischi estremamente rovinati, es. con directory radice perse; inoltre tutte le strutture utilizzate, settori di allocazione, blocchi directory, ecc. sono collegate fra loro con puntatori da padre a figlio e viceversa, a differenza della VFAT che ha solo puntatori in avanti; proprio per questa robustezza non è necessario ricorrere ad equivalenti delle varie utility di crash recovery del mondo DOS e Windows.
Esaminiamo allora il CHKDSK e il suo parametro di file recovery: /F:livello.
Al livello 1 viene risolta qualsiasi inconsistenza nelle strutture del file system, al 2 livello viene controllato anche lo spazio utilizzato ma a cui non ci sono riferimenti nel file system, e directory e file trovati vengono recuperati; al 3 livello si eseguono le stesse operazioni del 2 ma questa volta su tutto il disco.
In generale non si dovrebbe mai usare il parametro /F:3 a meno che non si sia formattato per errore il disco!
Altra linea guida è di eseguire il CHKDSK fino a quando non si ricevono più indicazioni di riparazione; questo non è più vero per la nuova versione a 32 bit (CHKDSK32) che si trova negli ultimi fix pack; oltre ad essere capace di risolvere ancora più problemi e ricostruire i nomi originari di directory e file, esegue tutte le riparazioni in una sola passata.
Come utility commerciali per il recupero di dischi danneggiati ci sono le Graham e Gammatech Utilities.
Per quanto riguarda il recupero dei file cancellati sono disponibili oltre al supporto nativo del sistema, con la direttiva DELDIR del CONFIG.SYS, anche utility come File Phoenix (gratuita), shareware come FM/2 e HPFSutil, e commerciali come le Graham e Gammatech Utilities.

Conclusioni


Abbiamo visto molte ragioni per cui l'HPFS e superiore ad altri file system, come FAT e VFAT; nel corso dell'articolo sono state citate anche diverse utility, di cui esistono recensioni sia in Just WARP! che su MC MicroComputer, ecco quali:

I programmi shareware e commerciali citati possono essere registrati o comprati presso OSOSOFT o BMTMicro.


[Pagina precedente] [Sommario] [Pagina successiva]