GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra dimensione del blocco e dimensione del cluster?

Ho una domanda riguardante la dimensione del blocco e la dimensione del cluster. Riguardo a quanto ho letto in merito, 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 letto e scrivibile dal sistema operativo. Se creo un nuovo filesystem, ad es. ext3, posso specificare questa dimensione minima del blocco 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 siano i blocchi utilizzati fisicamente (512 byte per ciascuno) e il blocco IO si riferisce alla dimensione del blocco specificata durante la creazione di FS?

Risposta accettata:

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, nemmeno nel contesto della letteratura sui filesystem.

Filesystem

Per ext2 o ext3, la situazione è relativamente semplice:ogni file occupa un certo numero di blocchi. Tutti i blocchi su un dato filesystem hanno la stessa dimensione, solitamente una 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 che specifichi con mke2fs -b . Non esiste una nozione separata di cluster.

Il filesystem FAT utilizzato in particolare da MS-DOS e dalle prime versioni di Windows ha un'allocazione di 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 del blocco; Reiserfs e Btrfs lo fanno, ma non ext3 e nemmeno ext4.

Utilità

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

Correlati:Switch:la differenza tra switch smart e managed?

In GNU/Linux stat utility, i blocks figura è il numero di blocchi 512B utilizzati dal file. Il IO Block figura è la dimensione preferita per l'input-output del file, che in linea di principio non è correlato ma di solito un'indicazione della dimensione del blocco del filesystem sottostante (o della dimensione del cluster se è così che vuoi chiamarlo). Qui hai un file di 13 byte, che occupa un blocco sul filesystem ext3 con una dimensione del blocco di 2048; quindi 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 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 composto da un numero intero di settori è migliore per le prestazioni.

¹ Eccezione:i file sparsi risparmiano spazio .


Linux
  1. Differenza tra 2>&-, 2>/dev/null, |&, &>/dev/null E>/dev/null 2>&1?

  2. Qual è la differenza tra Sudo Su – e Sudo Su –?

  3. Differenza tra Eot ed Eof?

  4. Differenza tra [0-9], [[:digit:]] e D?

  5. Differenza tra utente Sudo e utente root?

Differenza tra apt e apt-get spiegato

Differenza tra CLOCK_REALTIME e CLOCK_MONOTONIC?

Differenza tra $HOME e '~' (tilde)?

differenza tra netstat e ss in linux?

Differenza tra ${} e $() in Bash

differenza tra cgroup e namespace