Differenza tra dimensione del blocco e dimensione del cluster


20

Ho una domanda riguardante la dimensione del blocco e la dimensione del cluster. Per quanto riguarda ciò che ho letto a riguardo, presumo quanto segue:

  • La dimensione del blocco è la dimensione fisica di un blocco, per lo più 512 byte. Non c'è modo di cambiarlo.
  • La dimensione del cluster è la dimensione minima di un blocco che è letto e scrivibile dal sistema operativo. Se creo un nuovo filesystem, ad esempio ext3, posso specificare questa dimensione di blocco minima con l'opzione -b. Quasi tutti i programmi come dumpe2fs, mke2fs usano la dimensione del blocco come nome per la dimensione del cluster.

Se ho il seguente output:

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

È corretto che la dimensione sia lo spazio effettivo in byte, i blocchi sono i blocchi utilizzati fisicamente (512 byte per ciascuno) e il blocco IO si riferisce alla dimensione del blocco specificata durante la creazione di FS?

Risposte:


26

Penso che tu sia confuso, forse perché hai letto diversi documenti che usano una terminologia diversa. Termini come "dimensione del blocco" e "dimensione del cluster" non hanno un significato universale, anche nel contesto della letteratura del filesystem.

Filesystem

Per ext2 o ext3 , la situazione è relativamente semplice: ogni file occupa un certo numero di blocchi . Tutti i blocchi su un determinato file system hanno le stesse dimensioni, generalmente uno di 1024, 2048 o 4096 byte. Un file¹ la cui dimensione è compresa tra N blocchi più un byte e N + 1 blocchi occupa N + 1 blocchi. La dimensione del blocco è quella specificata mke2fs -b. Non esiste una nozione separata di cluster.

Il file system FAT utilizzato in particolare da MS-DOS e dalle prime versioni di Windows ha un'allocazione dello spazio altrettanto semplice. Ciò che ext2 chiama blocchi, FAT chiama cluster ; il concetto è lo stesso.

Alcuni filesystem hanno uno schema di allocazione più sofisticato: hanno blocchi di dimensioni fisse, ma possono usare lo stesso blocco per memorizzare gli ultimi byte di più di un file. Questo è noto come sottoallocazione a blocchi ; Reiserfs e Btrfs lo fanno, ma non ext3 o neanche ext4.

Utilità

Le utility Unix usano spesso la parola "blocco" per indicare un'unità di dimensioni arbitrarie, in genere 512 byte o 1kB. Questo utilizzo non è correlato ad alcun particolare filesystem o hardware del disco. Storicamente, il blocco 512B è nato perché i dischi e i filesystem all'epoca funzionavano spesso in blocchi da 512B, ma l'uso moderno è semplicemente arbitrario. Le utility e le interfacce unix tradizionali usano ancora a volte blocchi da 512B, sebbene ora siano spesso preferiti blocchi da 1kB . È necessario controllare la documentazione di ciascuna utility per sapere quale dimensione del blocco sta utilizzando (alcuni hanno un interruttore, ad esempio du -Bo df -Bsu Linux).

Nell'utilità GNU / Linux stat, la blocksfigura è il numero di blocchi da 512 B utilizzati dal file. La IO Blockfigura è la dimensione preferita per l'input-output del file, che in linea di principio non è correlata ma di solito un'indicazione della dimensione del blocco del filesystem sottostante (o dimensione del cluster se è così che si desidera chiamarlo). Qui, hai un file di 13 byte, che occupa un blocco sul filesystem ext3 con una dimensione di blocco di 2048; pertanto il file occupa 4 unità da 512 byte (chiamate "blocchi" da stat).

dischi

La maggior parte dei dischi presenta un'interfaccia che mostra il disco come un insieme di settori . Il disco può solo scrivere o leggere un intero settore, non singoli bit o byte. La maggior parte dei dischi rigidi ha settori da 512 byte, anche se i dischi del settore da 4kB hanno iniziato ad apparire un paio di anni fa.

La dimensione del settore del disco non è direttamente correlata alla dimensione del blocco del filesystem, ma avere un blocco in un numero intero di settori è migliore per le prestazioni.

¹ Eccezione: i file sparsi risparmiano spazio.


2
Grazie per il chiarimento. Sono arrivato qui a causa di tale confusione causata dallo strumento ext2fsd per Windows. Le opzioni della riga di comando iniziano: ´Usage: mke2fs [-c | -l nomefile] [-b dimensione-blocco] [-C dimensione-cluster] ... ´ Bene, vedi, sia la dimensione del blocco che quella del cluster ...
Bernhard Hiller

Sono anche interessato a sapere qual è la differenza tra la dimensione del blocco di mke2fs e la dimensione del cluster. Qualcuno sa ?
X.LINK

1
@ X.LINK È spiegato nella pagina man. La dimensione del cluster viene utilizzata dalla funzionalità bigalloc , che se ho capito correttamente rende più veloce l'accesso a file di grandi dimensioni a spese di una maggiore quantità di spazio di archiviazione.
Gilles 'SO- smetti di essere malvagio' il
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.