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

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

Todos los sistemas de archivos Linux tienen un tamaño de bloque de 4kb. 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 de 1 kb de tamaño. Cada bloque de 1 kb ocupará 1 bloque aunque no llene el bloque completo.

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

Agradecería alguna aclaración. gracias de antemano

Respuesta1

El tamaño de bloque predeterminado fue de 512 bytes desde el primer Linux. Excepto que hasta hace poco se introdujeron tamaños de bloque de 4k para atender el tamaño cada vez mayor de los discos. En realidad, esto está casi dictado por el hardware del disco (ver más:https://unix.stackexchange.com/questions/178899/optimizing-logic-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 los btfrs y los reiserfs parecen ser capaces de hacer frente, segúnhttps://en.m.wikipedia.org/wiki/Block_suballocation

Respuesta2

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

  2. Algunos sistemas de archivos admiten el empaquetado final y/o la asignación de subbloques. BTRFS, RaiserFS, ZFS, Raiser4 - hacer; XFS, Ext2/3/4 - no lo hagas.

Si planea llenar una partición con varios archivos pequeños, puede reducir el espacio "final" desperdiciado reduciendo el tamaño del bloque a 512 o 1024, o usar un FS que admita la función de empaquetado final o asignación de subbloques.

información relacionada