Come vengono archiviate le strutture di directory nel filesystem UNIX?


8

Ho letto che ogni directory memorizza il suo contenuto (file e sottodirectory) usando un elenco di coppie di nome file e inode. Ma nessuno dei riferimenti che ho ricevuto ha detto qualcosa su come sono memorizzati.

Sono memorizzati sull'inode della loro directory principale, usando blocchi di dati come un normale file o forse usando altri modi di cui non sono a conoscenza?

Grazie per il chiarimento.


Non esiste un solo modo in cui Unix memorizza i file. Simile a non esiste un modo unico per come Windows archivia i file. In entrambi i casi dipende dal filesystem utilizzato. (FAT, NTFS, ext2, UFS, ...)
Hennes,

Per i filesystem la struttura delle directory su disco è definita in dirent.h, e dovresti usare le libcalls opendir / readdir / closedir ecc per accedere al contenuto.
ott--

Risposte:


10

Vedi gli interni del file system che delineano in modo piuttosto semplice gli interni di un tipico file system Unix.

inserisci qui la descrizione dell'immagine

La maggior parte dei filesystem Unix contiene

  • Un blocco di avvio
  • Un superblocco (geometria del disco, layout della partizione, conteggio degli inode, ecc.)
  • Blocchi Inode
  • Blocchi di dati

I filesystem moderni contengono strutture aggiuntive.

Una delle cose nel superblocco è la posizione degli inode per la directory principale.

Una directory è un file appositamente formattato. Come con tutti i file ordinari, ha blocchi di dati.

Puoi vederlo in The Linux Documentation Project: Filesystem

inserisci qui la descrizione dell'immagine

Puoi usare debugfsper esplorare queste strutture.


2
"Una directory è un file appositamente formattato. Come tutti i file ordinari, ha blocchi di dati." Quindi le directory memorizzano le loro coppie nome file-inode (tabella più a sinistra nella prima immagine o la riga nella seconda immagine) nei loro blocchi di dati?
Oka,

1
@Oka: è corretto.
RedGrittyBrick il

Quindi, per essere chiari, la directory è un file, quindi è memorizzata in un blocco dati. Ad esempio, ogni directory nel ext4filesystem (ciò che è rappresentato ext4_dir_entry_2è lunga 263 byte) un singolo blocco 4KB può contenere circa 15 voci di directory?
campescassiano,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.