Un file system "vede" il dispositivo di archiviazione come un array di byte (molto grande)?

12

Voglio sapere come fa un file system a scrivere e leggere da un dispositivo di archiviazione.

Penso che questo sia il modo in cui funziona:

Un file system non accede direttamente al dispositivo di archiviazione, ma piuttosto il dispositivo di archiviazione è presentato (dal driver di dispositivo del dispositivo di memorizzazione) al file system come un array di byte (molto grande).

Ad esempio, se il file system desidera accedere a un disco rigido, accederà semplicemente alla matrice di byte che rappresenta il disco rigido.

In questo modo un file system può funzionare con qualsiasi tipo di dispositivo di archiviazione (disco rigido tradizionale, unità SSD, unità flash USB, ecc.) e viene modificato solo il driver di periferica per il dispositivo di archiviazione.

Questa immagine mostra ciò che ho appena spiegato:

Ho ragione nella mia comprensione?

    
posta joseph_m 23.06.2017 - 12:23
fonte

2 risposte

15

Su Linux (e Unixes dell'era degli anni '80), un dispositivo di archiviazione (spesso una partizione del disco su alcuni disco rigido o su alcuni SSD ) è un blocco dispositivo (vedi this ) quindi è una [sotto-] sequenza di blocks (che è l'unità base di I / O fisico ) . La dimensione del blocco fisico dipende dall'hardware (i vecchi dischi IDE avevano una dimensione di blocco di 512 byte, i nuovi grandi SATA hanno un disco dimensione del blocco di 4Kbytes, leggi Formato avanzato wikipage) e quando crei un file system (ad esempio mkfs , vedi mke2fs (8) ) puoi specificare una dimensione del blocco logico che è un multiplo (spesso una piccola potenza di due, incluso 1) di quella dimensione fisica del blocco. Leggi anche su indirizzamento dei blocchi logici .

In passato (si pensi alle workstation Sun3 degli anni '90) il disco era fatto di cilindri con teste organizzati in settori (leggi CHS wikipage), con un settore contenente un blocco. Oggi, questi rimangono ancora ma sono un artefatto artificiale fornito dal controller del disco rigido (il circuito sul disco stesso). In alcuni sistemi operativi, il driver del dispositivo di blocco riprogrammato e riordinato le richieste IO per ridurre al minimo il movimento della testina del disco e la la latenza di rotazione .

This way a file system can work with any type of storage device (traditional hard disk, SSD, USB flash drive, etc.), and only the device driver for the storage device is changed.

Sì, ma il male è nei dettagli (ad es. leggi su TRIM e Write Amplification , specifico per SSD). E i dettagli sono importanti, quindi l'implementazione effettiva è meno semplice della tua figura. Maggiori informazioni su file system (e pensa a cluster e file system remoti tra cui SMB & NFS ; leggi anche su Logical Volume Manager ).

Leggi Sistemi operativi: tre pezzi facili (e i suoi persistence part).

Si noti che i dispositivi di blocco sono stati scaricati in FreeBSD (che attualmente forniscono un'astrazione comune per i personaggi e i dispositivi a blocchi). Sospetto che anche su Windows il sistema operativo sia a conoscenza di partizioni, dimensioni del blocco, ecc. (Ma dovresti controllare).

    
risposta data 23.06.2017 - 12:33
fonte
3

Tutto ciò che Basile Starynkevitch dice è corretto. Aggiungerò un po 'di più In effetti, le unità disco erano unità "bloccate", ma i dispositivi a blocchi (e molti altri dispositivi) venivano presentati in due forme: "raw" e "cooked". I dispositivi grezzi potevano essere indirizzati solo in blocchi che erano multipli della dimensione del blocco di archiviazione nativa. Quindi un dispositivo disco crudo può essere letto o scritto solo uno o più blocchi alla volta, non solo un byte o due. I dispositivi cotti hanno aggiunto un livello che consentiva operazioni così piccole, oltre a varie altre funzionalità.

I file system funzionavano con dispositivi raw, e quindi li vedevano non come una grande serie di byte, ma piuttosto come una grande serie di blocchi, come B.S. ha spiegato.

    
risposta data 29.06.2017 - 20:51
fonte

Leggi altre domande sui tag