¿Cómo determino el tamaño de bloque para los sistemas de archivos ext4 y btrfs?

¿Cómo determino el tamaño de bloque para los sistemas de archivos ext4 y btrfs?

Estoy buscando los comandos que me dirán la cantidad de asignación en unidades formateadas con ext4 vs btrfs.

Antecedentes: estoy usando un sistema de respaldo que permite a los usuarios restaurar archivos individuales. Este sistema solo usa rsync y no tiene software del lado del servidor, las copias de seguridad no están comprimidas. El resultado es que tengo unos 3,6 TB de archivos, la mayoría pequeños.

Parece que para mi conjunto de datos, el almacenamiento es mucho menos eficiente en un volumen btrfs bajo LVM que en un volumen ext4 antiguo y sospecho que esto tiene que ver con el tamaño mínimo de archivo y, por lo tanto, con el tamaño de bloque, pero tengo No he podido descubrir cómo obtener esos tamaños para fines de comparación. La wiki de btrfs dice que usa el "tamaño de página", pero no encontré nada para obtener ese número.

Respuesta1

Querrá ver el tamaño de asignación del bloque de datos, que es el bloque mínimo que cualquier archivo puede asignar. Los archivos grandes constan de varios bloques. Y siempre hay algo de "desperdicio" al final de los archivos grandes (o de todos los archivos pequeños) donde el bloque final no se llena por completo y, por lo tanto, no se utiliza.

Hasta donde yo sé, todos los sistemas de archivos populares de Linux utilizan bloques de 4K de forma predeterminada porque ese es el tamaño de página predeterminado de las CPU modernas, lo que significa que existe una asignación sencilla entre los archivos asignados en memoria y los bloques de disco. Sé con certeza que BTRFS y Ext4 tienen el tamaño de página predeterminado (que es 4K en la mayoría de los sistemas).

En ext4, simplemente use tune2fspara verificar el tamaño de su bloque, de la siguiente manera (cambie /dev/sda1a la ruta de su propio dispositivo):

[root@centos8 ~]# tune2fs -l /dev/sda1 |grep "^Block size:"
Block size:               4096
[root@centos8 ~]#

En btrfs, use el siguiente comando para verificar el tamaño de su bloque (cambie /dev/mapper/cr_roota la ruta de su propio dispositivo; este ejemplo simplemente usa una ruta cifrada típica de BTRFS-on-LUKS):

sudo btrfs inspect-internal dump-super -f /dev/mapper/cr_root | grep "^sectorsize"

Respuesta2

Podría utilizar stat -fpara obtener una respuesta de cualquier sistema de archivos, por ejemplo:

% stat -f /home
  File: "/home"
    ID: 5013a37be3cd6a47 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 113391734  Free: 472450     Available: 468304
Inodes: Total: 28868608   Free: 27969906

Respuesta3

Si desea profundizar en un montón de información no relacionada, existe btrfs-show-super -f /dev/md1. De lo contrario, la respuesta stat -f …es la más fácil y universal.

información relacionada