我正在尋找能夠告訴我 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 …
是最簡單且通用的。