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 tune2fs
para verificar o tamanho do seu bloco, como segue (mude /dev/sda1
para 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_root
para 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 -f
para 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.