Как найти размер файловой системы?

Как узнать размер файловой системы в Linux? Под этим я подразумеваю точное количество байтов, которые используются из раздела, а не только вывод df, поскольку это может отличаться от истинного размера, когда в файловой системе используется сжатие или дедупликация.

Размер самого раздела можно распечатать с помощью:

$ lsblk -b

или же

$ blockdev --getsize64 /dev/sda

Я ищу что-то подобное для файловой системы.

PS: это для LVM растут / сжимаются вещи. В основном меня интересуют ext2/3/4 и btrfs, но любая другая информация о файловой системе также приветствуется.

3 ответа

Если вам нужна информация о файловой системе, а не информация о разделе / ​​томе, я думаю, вам придется использовать инструменты, специфичные для файловой системы.

В случае систем extN это будет dumpe2fs, А также dumpe2fs насколько я могу судить, напрямую не печатает размер в байтах. Однако он печатает количество блоков и размер блоков, так что вы можете вместо этого проанализировать вывод:

$ dumpe2fs -h /dev/sda1 |& awk -F: '/Block count/{count=$2} /Block size/{size=$2} END{print count*size}'           
29999980544

В моем случае этот размер немного отличается от размера раздела:

$ parted /dev/sda u b p
Model: ATA ST500LT012-1DG14 (scsi)
Disk /dev/sda: 500107862016B
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start          End            Size           File system     Name  Flags
 1      17408B         30000000511B   29999983104B   ext4                  boot, esp
 2      30000807936B   453049843711B  423049035776B  ext4
 5      453049843712B  495999516671B  42949672960B   ext4
 3      495999516672B  500102862847B  4103346176B    linux-swap(v1)
 4      500102862848B  500107845119B  4982272B                             bios_grub

Размер раздела составляет 29999983104 байта, что на 2560 байтов больше, чем кратное размеру блока, поэтому размер, сообщаемый dumpe2fs меньше.

Это зависит от файловой системы, которую вы хотите исследовать:

файловая система ext2, ext3, ext4

dumpe2fs -h /dev/sda1 | grep '^Block'

Вы должны умножить количество блоков и размер блока, чтобы получить количество байтов.

Файловая система ISO-9660

isoinfo -d -i ubuntu-18.10-desktop-amd64.iso | grep -A1 '^ Размер логического блока'

Единицей измерения размера тома являются логические блоки, поэтому для получения количества байтов необходимо умножить размер тома и размер логического блока.

Файловая система BTRFS

Поскольку один btrfs может включать в себя несколько устройств, команда принимает точку монтирования в качестве аргумента.

Использование файловой системы btrfs -b /mnt/mountpoint | grep 'Размер устройства'

Для btrfs вы можете использовать:

sudo btrfs filesystem usage -b /mountpoint
Другие вопросы по тегам