我正在寻找能够告诉我 ext4 与 btrfs 格式化驱动器上的分配量的命令。
背景:我正在使用一个备份系统,允许用户恢复单个文件。该系统仅使用rsync,没有服务器端软件,备份未压缩。结果是我有一些 3.6TB 的文件,其中大部分都很小。
对于我的数据集来说,LVM 下的 btrfs 卷上的存储效率似乎比普通的旧 ext4 卷上低得多,我怀疑这与最小文件大小以及块大小有关,但我有无法弄清楚如何获得这些尺寸以进行比较。 btrfs wiki 说它使用“页面大小”,但我没有找到任何关于获取该数字的信息。
答案1
您需要查看数据块分配大小,这是任何文件可以分配的最小块。大文件由多个块组成。而且大文件(或所有小文件)的末尾总是存在一些“浪费”,其中最后一个块没有完全填充,因此未使用。
据我所知,每个流行的 Linux 文件系统默认都使用 4K 块,因为这是现代 CPU 的默认页大小,这意味着内存映射文件和磁盘块之间有一个简单的映射。我知道 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
.否则,答案stat -f …
是最简单且通用的。