¿Cómo funciona el tamaño del bloque del sistema de archivos?

11

Todos los sistemas de archivos de Linux tienen un tamaño de bloque de 4 kb. Digamos que tengo 10 MB de almacenamiento en el disco duro. Eso significa que tengo 2560 bloques disponibles y digamos que copié 2560 archivos cada uno con 1 kb de tamaño. Cada bloque de 1 kb ocupará 1 bloque aunque no esté llenando todo el bloque.

Así que todo mi disco ahora está lleno, pero aún tengo 2560x3kb de espacio libre. Si quiero almacenar otro archivo de digamos 1mb, ¿me permitirá almacenar el sistema de archivos? ¿Escribirá en el espacio libre que queda en los bloques individuales? ¿Hay algún concepto que aborde este problema?

Agradecería alguna aclaración. Gracias por adelantado

Srimanth Duggineni
fuente
OK, 2560 archivos, cada uno es 1kb, eso es 2560 * 0.001 mb = 2.56 mb. Cada archivo de 1 kb debe ocupar aproximadamente 1/4 del bloque, porque 1000 * 4 = 4000, ¿verdad? Y el tamaño del bloque es 4096, por lo que necesita 4 archivos para completar el bloque. El archivo 1mb, entonces, le costará 1000000/4096 = 244 bloques.
Sergiy Kolodyazhnyy

Respuestas:

3

El tamaño de bloque predeterminado era 512 bytes desde el primer Linux. Excepto hasta hace poco, los tamaños de bloque de 4k se introdujeron para atender el tamaño cada vez mayor de los discos. En realidad, esto es casi dictado por el hardware del disco (ver más: /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd ).

Sin embargo, para su pregunta específica: tiene razón en que todos los archivos desperdician los bytes no utilizados del último bloque en muchos tipos de sistemas de archivos, lo que es particularmente un desperdicio para archivos pequeños. Pero btfrs y reiserfs parecen ser capaces de hacer frente, de acuerdo con https://en.m.wikipedia.org/wiki/Block_suballocation

Harald
fuente
1
  1. Los sistemas de archivos pueden tener un tamaño de bloque de 512 a (generalmente) 65536 bytes. El tamaño del bloque se puede especificar como opción mkfs.xxx. El tamaño de bloque predeterminado en la mayoría de los sistemas de archivos de Linux: 4096 bytes.

  2. Algunos sistemas de archivos admiten el empaquetado de cola y / o la asignación de subbloques. ext2 / 3/4 - does, xfs - does not. Si planea llenar una partición con varios archivos pequeños, puede reducir el espacio desperdiciado de "cola" reduciendo el tamaño de bloque a 512 o 1024.

Oleksandr Suvorov
fuente