我在 Ubuntu 16.04 上有一個帶有 3 個磁碟的 Btrfs raid1。然而,似乎只有 2 個磁碟被使用,而不是全部 3 個。
root@one:~# btrfs fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 54.77GiB
devid 1 size 2.73TiB used 56.03GiB path /dev/sda2
devid 2 size 2.73TiB used 56.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 0.00B path /dev/sdb3
我嘗試運行轉換過濾器,但 /dev/sdb3 仍然沒有被使用。
root@one:~# btrfs balance start -dconvert=raid1 -mconvert=raid1 /top/raid/
Done, had to relocate 112 out of 112 chunks
root@one:~# btrfs fi df /top/raid/
Data, RAID1: total=55.00GiB, used=54.40GiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=1.00GiB, used=373.06MiB
GlobalReserve, single: total=128.00MiB, used=0.00B
起初,Ubuntu伺服器安裝時只有1個磁碟。然後我添加了一個磁碟並轉換為raid1。然後我添加了第三個磁碟/dev/sdb3並再次嘗試平衡。第三個磁碟未被使用。
root@one:~# btrfs --version
btrfs-progs v4.4
我可以很好地掛載 /dev/sdb3 。
root@one:~# mount /dev/sdb3 /mnt
root@one:~# ll /mnt
total 16
drwxr-xr-x 1 root root 74 Apr 13 09:37 ./
drwxr-xr-x 1 root root 200 Apr 12 21:19 ../
drwxr-xr-x 1 root root 200 Apr 12 21:19 @/
drwxr-xr-x 1 root root 152 Apr 12 15:31 @home/
drwxrwx--t 1 root root 36 Apr 13 09:38 @samba/
root@one:~# btr fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 54.82GiB
devid 1 size 2.73TiB used 56.03GiB path /dev/sda2
devid 2 size 2.73TiB used 56.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 0.00B path /dev/sdb3
答案1
編輯:
注意:btrfs 常見問題解答正如 @jeff-schaller 評論的那樣(強調我的),陳述如下:
btrfs 支援 RAID-0、RAID-1 和 RAID-10。從 Linux 3.9 開始,btrfs 也支援 RAID-5 和 RAID-6,儘管程式碼仍處於實驗階段。
btrfs 首先將所有裝置組合到一個儲存池中,然後在建立檔案資料時複製這些區塊。 RAID-1 目前定義為“不同裝置上所有資料的 2 個副本「。這與 MD-RAID 和 dmraid 不同,因為它們為 n 個裝置製作了 n 個副本。在 btrfs RAID-1 中三台 1 TB 設備,我們獲得 1.5 TB 的可用數據。因為每個區塊僅複製到 2 個設備,寫入給定區塊只需要寫入 2 個裝置;閱讀只能從一本開始。
RAID-0 的定義類似,條帶分佈在盡可能多的裝置上。 3 × 1 TB 設備可產生 3 TB 可用空間,但完全不提供冗餘。
RAID-10 是建立在這些定義之上的。每個條帶都準確地劃分為 2 個 RAID-1 集,而這些 RAID-1 集恰好寫入 2 個裝置(因此最少 4 個裝置)。具有 6 × 1 TB 設備的 btrfs RAID-10 磁碟區將產生 3 TB 可用空間,其中包含所有資料的 2 個副本。
目前我手邊沒有足夠大的驅動器來測試這一點,但我的猜測很簡單,因為您有相對較大的驅動器,所以 btrfs 只是選擇將資料寫入到目前為止的前兩個驅動器。我預計隨著更多資料寫入驅動器,這種情況將來會發生變化。
如果您對我對較小驅動器的測試感興趣:
我在具有單一 SATA 磁碟機的虛擬機器中安裝了 Ubuntu Server 16.04 LTS,並將作業系統安裝在單一 btrfs 分割區上。
然後我添加了另一個 SATA 驅動器,對其進行分區,運行btrfs device add /dev/sdb1 /
,然後在轉換為 raid1 時平衡它btrfs balance start -dconvert=raid1 -mconvert=raid1 /
我對設備 /dev/sdc1 重複了一遍。對我來說結果是一樣的 - 我有一個跨越三個驅動器的 btrfs。我還分配了一個 2GiB 文件,確實可以從所有三個磁碟存取它。我的btrfs fi sh
顯示如下:
Label: none uuid: cdfe192c-36da-4a3c-bc1a-74137abbb190
Total devices 3 FS bytes used 3.07GiB
devid 1 size 10.00GiB used 5.25GiB path /dev/sda1
devid 2 size 10.00GiB used 5.03GiB path /dev/sdb1
devid 3 size 8.00GiB used 2.28GiB path /dev/sdc1
你是如何呼叫 mkfs.btrfs 的?你的 btrfs-progs 版本是什麼?
# btrfs --version
btrfs-progs v4.4
我無法重現你的情況。如果您嘗試掛載 /dev/sdb3 會發生什麼?
如果您有虛擬機器或備用磁碟可以進行分割區,請建立 3 個分割區並嘗試以下操作。
我建立了一個 Ubuntu 16.04 VM,並將 /dev/vda 分成三個分割區,每個分割區 2GiB。
# mkfs.btrfs -d raid1 -m raid1 /dev/vda{1..3}
Label: (null)
UUID: 0d6278f7-8830-4a73-a72f-0069cc560aaf
Node size: 16384
Sector size: 4096
Filesystem size: 6.00GiB
Block group profiles:
Data: RAID1 315.12MiB
Metadata: RAID1 315.12MiB
System: RAID1 12.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 3
Devices:
ID SIZE PATH
1 2.00GiB /dev/vda1
2 2.00GiB /dev/vda2
3 2.00GiB /dev/vda3
# btrfs fi sh
Label: none uuid: 0d6278f7-8830-4a73-a72f-0069cc560aaf
Total devices 3 FS bytes used 112.00KiB
devid 1 size 2.00GiB used 614.25MiB path /dev/vda1
devid 2 size 2.00GiB used 315.12MiB path /dev/vda2
devid 3 size 2.00GiB used 315.12MiB path /dev/vda3
嘗試安裝 /dev/vda1,向其寫入文件,然後安裝 /dev/vda2 或 /dev/vda3 並檢查該文件是否存在(肯定應該存在)。
PS:我先在 Arch 上使用 btrfs-progs 版本 4.10.2 進行了嘗試,得到了相同的結果,但我認為 Ubuntu 16.04 可能附帶了一個可能表現不同的舊版本。結果它隨 v4.4 一起發布,但在檔案系統創建和鏡像等方面似乎表現相同。
答案2
該卷現在正在使用所有磁碟。我想拉班的猜測應該是對的。由於前兩個磁碟比第三個磁碟大,「btrfs 只是選擇將資料寫入到目前為止的前兩個磁碟機」。
root@one:~# btrfs fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 151.00GiB
devid 1 size 2.73TiB used 148.03GiB path /dev/sda2
devid 2 size 2.73TiB used 148.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 8.00GiB path /dev/sdb3
root@one:~# btrfs dev usage /
/dev/sda2, ID: 1
Device size: 2.73TiB
Data,RAID1: 147.00GiB
Metadata,RAID1: 1.00GiB
System,RAID1: 32.00MiB
Unallocated: 2.58TiB
/dev/sdb3, ID: 3
Device size: 2.59TiB
Data,RAID1: 8.00GiB
Unallocated: 2.58TiB
/dev/sdc2, ID: 2
Device size: 2.73TiB
Data,RAID1: 147.00GiB
Metadata,RAID1: 1.00GiB
System,RAID1: 32.00MiB
Unallocated: 2.58TiB