Ubuntu

使用 btrfs RAID10 的可用空間比預期的多?

  • October 14, 2015

我剛剛使用以下命令在我的 Ubuntu 14.04 機器中創建了一個 btrfs RAID10 陣列:

mkfs.btrfs -d raid10 -m raid10 /dev/sda /dev/sdb /dev/sdc /dev/sdd

我的 4 個硬碟驅動器每個都是 2TB 驅動器。在 RAID10 下,我預計總共會看到大約 3.6TB 的可用空間。然而,出於某種原因,我看到總可用容量為 7.3TB(請參閱/dev/sda下文):

Filesystem      Size  Used Avail Use% Mounted on
/dev/sde1        42G  1.7G   38G   5% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            7.8G   12K  7.8G   1% /dev
tmpfs           1.6G  1.2M  1.6G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            7.9G     0  7.9G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/sda        7.3T   13G  7.3T   1% /mnt/tmp

這是意外的行為嗎?

其他資訊:

bofh@stronghold:~$ sudo btrfs fi show
Label: none  uuid: a3a65325-0184-46d8-bef7-7ed066c9e320
   Total devices 4 FS bytes used 29.14GiB
   devid    1 size 1.82TiB used 16.03GiB path /dev/sda
   devid    2 size 1.82TiB used 16.01GiB path /dev/sdb
   devid    3 size 1.82TiB used 16.01GiB path /dev/sdc
   devid    4 size 1.82TiB used 16.01GiB path /dev/sdd

當我嘗試列出我正在使用的 RAID 類型時,我同時看到“RAID10”和“single”

bofh@stronghold:~$ sudo btrfs fi df /mnt/tmp
Data, RAID10: total=52.00GiB, used=48.77GiB
Data, single: total=8.00MiB, used=0.00
System, RAID10: total=16.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, RAID10: total=2.00GiB, used=64.12MiB
Metadata, single: total=8.00MiB, used=0.00

另一個相當奇怪的事情是 btrfs 設備掃描不會拋出任何結果:

bofh@stronghold:~$ sudo btrfs device scan
Scanning for Btrfs filesystems
bofh@stronghold:~$ 

我正在使用剛剛安裝並執行 dist-upgrade 的 Ubuntu 14.04 伺服器。

任何建議表示讚賞!

我看到總可用容量為 7.3TB

這是正確的。

簡短的回答是您看到可用於放入鏡像副本的原始空間,因此將其分成兩半以獲得您期望的 3.6TB。

眾所周知,計算磁碟可用空間與 btrfs 混淆。官方的 btrfs 常見問題解答有一個問題,關於為什麼難以計算btrfs 中的可用空間。

btrfs 文件系統可以包含具有不同 RAID 級別的文件塊。您可以擁有一些沒有鏡像副本的文件(“single”或“raid0”)和鏡像的其他文件(“raid1”)。

你現在實際上在你的文件系統中有這個。

當我嘗試列出我正在使用的 RAID 類型時,我同時看到“RAID10”和“single”

這告訴您文件系統中的少量數據未鏡像(“單個”)。你需要做一個 btrfs 平衡來解決這個問題。我建議這樣做:

btrfs 平衡開始 -dconvert=raid1,profiles=single -mconvert=raid1,profiles=single -sconvert=raid1,profiles=single –force /mnt/tmp

這會將文件數據、元數據和系統數據(d、m 和 s)的單副本數據轉換為鏡像。“profiles”參數將使其僅影響目前單副本的數據。

引用自:https://serverfault.com/questions/714465