如何確定 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 …是最簡單且通用的。

相關內容