Я ищу команды, которые сообщат мне квант выделения места на дисках, отформатированных в 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 …
— самый простой и универсальный.