Performance

btrfs 餘額太長了

  • May 19, 2019

我的筆記型電腦上有一個 btrfs RAID1 陣列(兩個 HDD 上的兩個 891GiB 分區)。當我執行btrfs balance它需要大量的時間來完成。

我知道如果我想平衡整個文件系統,這將永遠需要,這就是我使用 -usage 過濾器的原因;我把它放在 for 循環中,因為我並不總是知道從哪個數字開始。

for i in {1..100}; do sudo btrfs balance start -dusage=$i /my/mount/path/; done

在這個循環中,sudo 只在第一次詢問我的密碼,或者余額是否花費了很多時間。這列印大約 20 次

Done, had to relocate 0 out of 868 chunks

然後在花費大量時間後列印

Done, had to relocate 1 out of 868 chunks

所以這意味著它只移動了 1GB(或 200MB)的數據。僅移動 1GB 數據不應該花費太多時間,我可以在十分之一的時間內將更多數據複製到這個文件系統。

這是我的條目fstab

UUID=<the uuid>  /my/mount/path/  btrfs  defaults,noatime,compress=lzo  0  0

我還必須提到,我通常會製作和刪除快照,以防萬一我做錯了什麼。

sudo btrfs subvolume list /my/mount/path/
ID 5238 gen 178224 top level 5 path SNAP/snap-2017-04-15
ID 5270 gen 178229 top level 5 path SNAP/snap-2017-04-17
ID 5272 gen 178228 top level 5 path SNAP/snap-2017-04-21
ID 5276 gen 178230 top level 5 path SNAP/snap-2017-04-25
ID 5284 gen 178232 top level 5 path SNAP/snap-2017-05-04
ID 5290 gen 178231 top level 5 path SNAP/snap-2017-05-10
ID 5291 gen 178229 top level 5 path SNAP/snap-2017-05-11
ID 5309 gen 178225 top level 5 path SNAP/snap-2017-05-11-22-52-30
ID 5310 gen 178226 top level 5 path SNAP/snap-2017-05-13
ID 5311 gen 178232 top level 5 path SNAP/snap-2017-05-15
ID 5312 gen 178227 top level 5 path SNAP/snap-2017-05-17
ID 5313 gen 178227 top level 5 path SNAP/snap-2017-05-18

我還啟用了配額,以幫助我查看快照之間修改了多少。

sudo btrfs qgroup show /my/mount/path/
qgroupid         rfer         excl
--------         ----         ----
0/5         774.25GiB    910.87MiB
0/3098      142.21GiB        0.00B
0/3119       39.38GiB     16.00EiB
0/5226          0.00B     16.00EiB
0/5228          0.00B     16.00EiB
0/5233       48.00KiB     16.00EiB
0/5236       96.00KiB     16.00EiB
0/5238      785.18GiB     46.57GiB
0/5270      768.99GiB      1.22MiB
0/5272      768.73GiB      1.36MiB
0/5276      766.70GiB     12.70MiB
0/5284      768.55GiB      3.33MiB
0/5290      772.23GiB    964.00KiB
0/5291      772.23GiB    912.00KiB
0/5309      773.77GiB    608.00KiB
0/5310      773.78GiB      1.09MiB
0/5311      773.56GiB      1.66MiB
0/5312      773.55GiB      2.16MiB
0/5313      774.32GiB    147.49MiB

16.00EiB一定是某種錯誤,誰有這樣的硬碟?

為什麼平衡需要這麼長時間才能完成?我真的很喜歡 btrfs 的功能,所以我更願意繼續使用它。

我終於弄明白了。之所以要花這麼多時間,是因為配額。

我禁用它執行:

sudo btrfs quota disable /my/mount/path/

現在它可以在幾分鐘內平衡我的 fs。

引用自:https://unix.stackexchange.com/questions/366165