Che cosa sono i metadati e in che modo aiutano nel processo "fsck"?


8

Se lo capisco correttamente, "fsck" viene utilizzato nei sistemi UNIX per verificare la coerenza interna all'interno dei dischi dopo un arresto anomalo. Mi chiedevo, quindi, come usa i "metadati" per assicurarsi che tutto nel filesystem sia coerente, per esempio quali passi deve prendere il processo fsck per ripristinare e riparare?

-> modifica: sarebbe anche utile se qualcuno potesse chiarire a cosa si riferisce anche "scrittura sincrona" in questa immagine.


Sembra che sarebbe più in argomento su U&L, forse.

Risposte:


13

I metadati sono informazioni sui dati. Se si pensa a un file di testo, la sequenza di lettere del file di testo corrisponde ai dati effettivi contenuti nel file. Tuttavia, il file ha un nome, un proprietario, una data di creazione, una posizione sul supporto di archiviazione, ecc. Tutte queste informazioni sono metadati. Si noti che i metadati possono essere gestiti allo stesso modo dei dati. Ad esempio, Unix memorizza i metadati dei file in file di dati chiamati directory (o cartelle in questa nuova era dell'informatica :-)

Il file system Unix utilizza un'unità di memoria di base chiamata inode . Un singolo inode può contenere dati di file effettivi, informazioni sulla directory (metadati) o essere inutilizzato (gratuito). Si noti che l'atto di creare un nuovo file comporta la modifica dello stato di un inode da libero a allocato, la scrittura di dati nel nuovo file e la scrittura di metadati in un file di directory. È possibile che un computer si arresti in modo anomalo durante questo tipo di operazione, nel qual caso il file system può essere danneggiato .

Il controllo del file system consiste nella lettura di tutti gli inode e nel tentativo di risolvere il maggior numero possibile di problemi di corruzione. Ad esempio, supponiamo che un inode non sia nell'elenco di inode liberi, ma non ci sono voci di directory che affermano che questo inode sia parte di un file in una qualsiasi delle directory di cui il file system è a conoscenza. Questo inode può essere ricollocato nell'elenco di inode gratuiti.

La scrittura sincrona è un modo per eseguire la scrittura sul disco in modo da garantire che, in caso di arresto anomalo, il file system possa essere ripristinato. Ad esempio, quando si crea un nuovo file, è necessario allocare un inode, creare l'inode con i relativi set di metadati, quindi aggiornare il file contenente le informazioni sulla directory. Con la scrittura sincrona , queste vengono eseguite come azioni separate, una alla volta, in quell'ordine. Se l'arresto anomalo si verifica prima della scrittura della directory, l'inode può essere ricollocato nell'elenco gratuito e la creazione del file non si è verificata.

Sono possibili anche altri tipi di controlli del file system.


6

Nel contesto dei file system Unix o Linux, i "metadati" sono informazioni su un file: ID utente di chi lo possiede, autorizzazioni, tipo di file (speciale, regolare, named pipe, ecc.) E quali blocchi del disco utilizza il file. In genere è tutto contenuto in una struttura su disco chiamata "inode". Una delle informazioni in un inode è il numero di "collegamenti" al file esistenti. Un file normale in genere ha 1, ma una directory (che è principalmente un file con un segno di tipo "Sono una directory" speciale) ha almeno 2 collegamenti. Tutto ciò che è visibile in un file system ha un collegamento dalla directory in cui appare, ma poiché ogni directory ha un "." nome così come il suo nome ordinario, hanno 2 collegamenti.

fsckpuò eseguire la scansione dei "blocchi di inode" di un file system (i blocchi di dischi che contengono le strutture di dati degli inode) per trovare inode con un conteggio dei collegamenti maggiore di 0. Un file rappresentato da un inode con un conteggio dei collegamenti maggiore di 0 dovrebbe apparire in un directory da qualche parte. Se tale inode non viene visualizzato in una directory, fsckinserisce il file in una directory ben nota, in genere "lost + found" nella parte superiore del file system. Si noti che i file system Unix / Linux in genere non hanno metadati in un inode su quale directory appartiene l'inode, solo informazioni nel file di directory su quali file contiene la directory.

fsckpuò usare altri metadati come i blocchi di dischi che contengono i dati di un file. fsckpuò verificare se i blocchi del disco che un inode dice appartengono a un file compaiono nella "lista non allocata" del file system dei blocchi del disco. Potenzialmente fsckpotrebbe verificare se due o più inode contengono gli stessi blocchi del disco, il che indicherebbe un tipo di danneggiamento dell'allocazione multipla.

L'assegnazione dei blocchi del disco ai file appare negli inode del disco. La struttura ad albero dell'appartenenza alla directory di un file system appare nelle directory. Gli inode non compaiono e non sono assegnati a directory. fsckapprofitta di questa separazione per eseguire riparazioni. Questo è abbastanza diverso dai sistemi come MS-DOS o Windows, in cui una "tabella di allocazione dei file" conteneva sia la struttura ad albero (appartenenza alla directory) sia l'allocazione dei blocchi del disco. "FAT" è corrotto e devi scansionare i blocchi del disco per vedere cosa contengono e come potrebbero combaciare.


5

I metadati sono "Dati sui dati".

Nel caso del file system * nix, i metadati utilizzati da fsckun'intestazione su ciascun blocco di dati rimandano a una voce della directory o al blocco di dati successivo e alle voci corrispondenti nella directory. fsckanalizza i blocchi e verifica che le voci della directory corrispondano e che i puntatori di inoltro al blocco successivo siano corretti.

Questo varia notevolmente tra i file system. In effetti, quali metadati sono archiviati e dove sono archiviati è ciò che maggiormente differenzia i vari file system * nix. I più moderni mantengono anche un file di registro delle modifiche alle strutture delle directory.


Solo curioso, ma sai come o dove le moderne implementazioni memorizzano i metadati su disco?
Kaitlyn Mcmordie,

1
@KaitlynMcmordie, dipende dalla fs. Per ext [234], la maggior parte dei metadati è archiviata nell'inode del file. I nomi sono / sono memorizzati nelle directory, vale a dire la parte di dati dei file che hanno il flag di directory e un formato specifico per i loro dati principali. I dati del file sono memorizzati in blocchi di dati e gli inode sono memorizzati nelle tabelle degli inode, che vengono allocate quando il formato fs è formattato. Altri dati nell'inode includono il proprietario, le autorizzazioni, i timestamp di accesso e i puntatori ai blocchi di dati.
psusi,
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.