Как определить размер блока для файловых систем ext4 и btrfs?

Как определить размер блока для файловых систем ext4 и btrfs?

Я ищу команды, которые сообщат мне квант выделения места на дисках, отформатированных в ext4 и btrfs.

Предыстория: Я использую систему резервного копирования, которая позволяет пользователям восстанавливать отдельные файлы. Эта система использует только rsync и не имеет серверного программного обеспечения, резервные копии не сжимаются. В результате у меня есть около 3,6 ТБ файлов, большинство из которых небольшие.

Похоже, что для моего набора данных хранение гораздо менее эффективно на томе btrfs под LVM, чем на обычном старом томе ext4, и я подозреваю, что это связано с минимальным размером файла, а значит, и размером блока, но я не смог выяснить, как получить эти размеры для сравнения. В вики btrfs говорится, что он использует "размер страницы", но я ничего не нашел о том, как получить это число.

решение1

Вам нужно будет посмотреть на размер выделения блока данных, который является минимальным блоком, который может выделить любой файл. Большие файлы состоят из нескольких блоков. И всегда есть некоторый "отход" в конце больших файлов (или всех маленьких файлов), где последний блок не заполнен полностью и, следовательно, не используется.

Насколько мне известно, все популярные файловые системы Linux используют блоки 4K по умолчанию, поскольку это размер страницы по умолчанию современных процессоров, что означает, что существует простое сопоставление между отображенными в память файлами и блоками на диске. Я точно знаю, что BTRFS и Ext4 по умолчанию используют размер страницы (который в большинстве систем равен 4K).

На ext4 просто tune2fsпроверьте размер блока следующим образом (измените /dev/sda1путь к своему устройству):

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

В btrfs используйте следующую команду, чтобы проверить размер блока (измените /dev/mapper/cr_rootпуть к своему устройству, в этом примере просто используется типичный зашифрованный путь BTRFS-on-LUKS):

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

решение2

Вы можете использовать stat -fдля получения ответа любую файловую систему, например:

% 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

решение3

Если вам так хочется покопаться в тоннах несвязанной информации, есть btrfs-show-super -f /dev/md1. В противном случае ответ about stat -f …— самый простой и универсальный.

Связанный контент