Performance
btrfs 餘額太長了
我的筆記型電腦上有一個 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。