Como determino o tamanho do bloco para sistemas de arquivos ext4 e btrfs?

Como determino o tamanho do bloco para sistemas de arquivos ext4 e btrfs?

Estou procurando os comandos que me dirão o quantum de alocação em unidades formatadas com ext4 vs btrfs.

Histórico: estou usando um sistema de backup que permite aos usuários restaurar arquivos individuais. Este sistema usa apenas rsync e não possui software do lado do servidor, os backups não são compactados. O resultado é que tenho cerca de 3,6 TB de arquivos, a maioria deles pequenos.

Parece que, para o meu conjunto de dados, o armazenamento é muito menos eficiente em um volume btrfs no LVM do que em um volume ext4 antigo e simples, e suspeito que isso tenha a ver com o tamanho mínimo do arquivo e, portanto, com o tamanho do bloco, mas eu tenho não consegui descobrir como obter esses tamanhos para fins de comparação. O wiki do btrfs diz que usa o "tamanho da página", mas não encontrei nada sobre como obter esse número.

Responder1

Você desejará observar o tamanho de alocação do bloco de dados, que é o bloco mínimo que qualquer arquivo pode alocar. Arquivos grandes consistem em vários blocos. E sempre há algum "desperdício" no final de arquivos grandes (ou de todos os arquivos pequenos), onde o bloco final não é totalmente preenchido e, portanto, não é utilizado.

Pelo que eu sei, todo sistema de arquivos Linux popular usa blocos de 4K por padrão porque esse é o tamanho de página padrão das CPUs modernas, o que significa que há um mapeamento fácil entre arquivos mapeados na memória e blocos de disco. Eu sei que o BTRFS e o Ext4 usam como padrão o tamanho da página (que é 4K na maioria dos sistemas).

No ext4, basta usar tune2fspara verificar o tamanho do seu bloco, como segue (mude /dev/sda1para o caminho do seu próprio dispositivo):

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

No btrfs, use o seguinte comando para verificar o tamanho do seu bloco (mude /dev/mapper/cr_rootpara o caminho do seu próprio dispositivo, este exemplo simplesmente usa um caminho BTRFS-on-LUKS criptografado típico):

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

Responder2

Você poderia usar stat -fpara obter uma resposta de qualquer sistema de arquivos, por exemplo:

% 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

Responder3

Se você deseja pesquisar uma tonelada de informações não relacionadas, existe btrfs-show-super -f /dev/md1. Caso contrário, a resposta stat -f …é a mais fácil e universal.

informação relacionada