如何确定 ext4 和 btrfs 文件系统的块大小?

如何确定 ext4 和 btrfs 文件系统的块大小?

我正在寻找能够告诉我 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 …是最简单且通用的。

相关内容