Linux
如何確定 ext4 和 btrfs 文件系統的塊大小?
我正在尋找可以告訴我使用 ext4 與 btrfs 格式化的驅動器上的分配量的命令。
背景:我正在使用允許使用者恢復單個文件的備份系統。本系統僅使用 rsync 且沒有伺服器端軟體,備份未壓縮。結果是我有一些 3.6TB 的文件,其中大部分都很小。
看來我的數據集儲存在 LVM 下的 btrfs 卷上的效率比在普通舊 ext4 卷上的效率低得多,我懷疑這與最小文件大小有關,因此與塊大小有關,但我有無法弄清楚如何獲得這些尺寸以進行比較。btrfs wiki 說它使用“頁面大小”,但在獲取該數字時我沒有找到任何東西。
您需要查看數據塊分配大小,這是任何文件可以分配的最小塊。大文件由多個塊組成。並且在大文件(或所有小文件)的末尾總是有一些“浪費”,最終塊沒有完全填充,因此未使用。
據我所知,每個流行的 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"