如何找到文件系统的大小?

Gru*_*bel 9 filesystem partitioning lvm btrfs

如何在 Linux 中找出文件系统的大小?我的意思是从分区中使用的确切字节数,而不仅仅是 的输出df,因为在文件系统上使用压缩或重复数据删除时,这可能与真实大小不同。

分区本身的大小可以打印为:

$ lsblk -b
Run Code Online (Sandbox Code Playgroud)

或者

$ blockdev --getsize64 /dev/sda
Run Code Online (Sandbox Code Playgroud)

我正在为文件系统寻找类似的东西。

PS:这是用于 LVM 增长/收缩的东西。我最感兴趣的是 ext2/3/4 和 btrfs,但也欢迎任何其他文件系统信息。

mur*_*uru 13

如果您想要文件系统信息而不是分区/卷信息,我认为您必须使用特定于文件系统的工具。

在 extN 系统的情况下,这将是dumpe2fs. 并dumpe2fs没有直接打印的字节大小,据我可以告诉。但是,它确实会打印块计数和块大小,因此您可以改为解析输出:

$ dumpe2fs -h /dev/sda1 |& awk -F: '/Block count/{count=$2} /Block size/{size=$2} END{print count*size}'           
29999980544
Run Code Online (Sandbox Code Playgroud)

就我而言,此大小与分区大小略有不同:

$ 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
Run Code Online (Sandbox Code Playgroud)

分区大小为 29999983104 字节,比块大小的倍数多 2560 字节,这就是为什么报告的大小dumpe2fs较小的原因。


Jar*_*arl 5

这取决于您要调查的文件系统:

ext2, ext3, ext4 文件系统

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

您必须将块数和块大小相乘才能获得字节数。

ISO-9660 文件系统

isoinfo -d -i ubuntu-18.10-desktop-amd64.iso | grep -A1 '^逻辑块大小'

卷大小的单位是逻辑块,因此您必须将卷大小和逻辑块大小相乘才能得到字节数。

BTRFS 文件系统

由于一个 btrfs 可以包含多个设备,因此该命令将挂载点作为参数

btrfs 文件系统使用 -b /mnt/mountpoint | grep '设备大小'