Linux

JBOD:如何 Raid1 不同容量的驅動器?Btrfs,ZFS?

  • June 17, 2021

我有選擇的硬碟驅動器,容量:

1 TB
500 GB
320 GB
250 GB

從某種意義上說,我想從它們中製作 Raid1,任何數據的副本將始終位於我擁有的四個驅動器中的兩個驅動器上。問題是,所有驅動器都有不同的容量。過去,我從 mdadm 遷移後一直在執行正常的 Raid1 mdadm 2x 2TB、2x 2TB 的 Btrfs。我不介意再次使用 mdadm、Btrfs 或 ZFS,儘管我對此一無所知。

什麼對我來說是最好的文件系統或實用程序,它符合這個標準:

  1. 始終擁有兩個文件副本,因此如果一個磁碟死了,我不會失去數據
  2. 有盡可能多的可用空間,但仍符合第 1 點的標準

我應該使用什麼?我感覺 Btrfs Raid1 會處理這個問題,並且在所有四個硬碟驅動器上準確記錄每個文件的兩個副本,但我不確定。我在 AMD64 電腦上安裝了 Linux,核心為 5.10。

歡迎任何建議。

編輯 - 解決方案!

非常感謝您的所有回复!所以我繼續進行 Btrfs Raid1 配置,這是一個耗時的過程,但非常輕鬆,因為我已經熟悉 Btrfs 並且每天都在使用它。我認為 Raid1 不會失去任何物理空間,同時保持 2 的冗餘率。我使用了這個計算器:https ://carfax.org.uk/btrfs-usage/

我的設備尺寸:

931.51 GiB
465.76 GiB
298.09 GiB
232.89 GiB

Total space for files in Raid1 mode: 963 GiB (all space used)
Total space for files in Raid5 mode: 995 GiB (466 GiB unusable on biggest drive)

使用 Raid1,我現在儲存了 719.5 GiB 數據和 241.6 GiB 空閒數據,總共 961.1 GiB,與計算器所說的相符。我可以在以後隨意添加/刪除驅動器。驚人。

我很想去 Raid5,因為它提供了 4 倍的理論讀取速度增益,而 Raid1 提供了 2 倍。但我聽說目前它有點實驗性,不建議日常使用,對嗎?它在 5.10 核心上的狀態是什麼,有人使用它並可以分享他們的經驗嗎?

在建構陣列之後,一個一個地添加所有驅動器並將所有數據遷移到它(我有備份),我進行了全面清理,一切都很好:

$ sudo btrfs scrub start -Bd /home

Scrub device /dev/sda (id 1) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         2:38:51
Total to scrub:   724.03GiB
Rate:             77.53MiB/s
Error summary:    no errors found

Scrub device /dev/sdd (id 2) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         1:52:39
Total to scrub:   374.03GiB
Rate:             56.57MiB/s
Error summary:    no errors found

Scrub device /dev/sdc (id 3) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:48:06
Total to scrub:   207.00GiB
Rate:             73.09MiB/s
Error summary:    no errors found

Scrub device /dev/sdb (id 4) done
Scrub started:    Thu Jun 17 10:10:38 2021
Status:           finished
Duration:         0:30:00
Total to scrub:   143.00GiB
Rate:             80.89MiB/s
Error summary:    no errors found

很高興!

編輯 - @Marcus Müller 的評論:

“備註:你確定要這個嗎?320 GB 和 250 GB 可能不是很新的驅動器 (…)”

您說得非常正確,這些都是非常古老的驅動器!我刪除了過去幾年在 Btrfs Raid1 上使用的 2x 2TB Seagate Barracuda Compute 驅動器,以放置這些隨機的 4x 舊驅動器。Barracudas 將使用我的伺服器,這需要完全的可靠性,我有 2x SSD 250GB 用於 / 那裡(Ext4 mdadm),以及 2x HDD TB 用於 /home 和 /var(Btrfs Raid1),並帶有 ECC RAM。另外兩個梭子魚將加入前兩個,用於 Btrfs Raid1 模式或可能是 Raid10 或 Raid5。

4x 舊驅動器現在放在我的桌面上,它們包括:

Western Digital Blue Mobile, WDC WD10JPVX-60JC3T0
[1.00 TB, 4K sectors, SATA 3.0, 6.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2496
Reallocated_Sector_Ct 0

Toshiba 2.5" HDD MK..65GSX, TOSHIBA MK5065GSX
[500 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 5400 RPM, 2.5"]
Power_On_Hours 2519
Reallocated_Sector_Ct 293

Seagate Momentus Thin, ST320LT007-9ZV142
[320 GB, 4K sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 2.5"]
Power_On_Hours 5152
Reallocated_Sector_Ct 0

Seagate Barracuda 7200.12,ST3250318AS
[250 GB, 512 sectors, SATA 2.6, 3.0 Gb/s, 7200 RPM, 3.5"]
Power_On_Hours 6591
Reallocated_Sector_Ct 3251

那是一種怪物雞尾酒,我不得不承認:D 哈哈。可靠性真的不是問題,我有備份,但我不想太快出現任何令人痛苦的驚喜,所以如果一個驅動器在一年左右的時間內死掉,2.0 的基本冗餘將省去我的麻煩,我只會拍另一個一個或兩個。

免責聲明:我對所有驅動器進行了 Spinrite(我在所有驅動器上定期這樣做),將它們歸零,對它們進行基準測試,完全清理 Btrfs 文件系統(我也定期這樣做),它們在此時此刻。如果它們隨著時間的推移發展得更多,那將是 Spinrite 修復它們的完美測試,或者至少讓我了解 Btrfs 在這種情況下會做什麼!

使用btrfs,因為與 ZFS 不同,它可以有效地處理不同大小的驅動器。您最終會得到大致所有驅動器的總容量除以 2(2 個副本用於冗餘)。大約 1TB。不計算透明壓縮。

ZFS 只會創建一個容量為最小設備的 vdev - 但如果有 4 個驅動器,您將創建兩個鏡像 vdev。例如,具有 1TB 和 500GB 的 mirror-1 vdev 和具有 320GB 和 250GB 的 mirror-2 vdev。為了最大限度地減少浪費的空間,您可以對 1TB 和 320GB 驅動器進行分區,以便它們具有 500GB 分區和 250GB 分區以匹配它們的鏡像驅動器。這將在壓縮之前為池提供總共 750GB 的容量(在類似 RAID1+0 的配置中)。這些驅動器上的剩餘空間(500GB 和 70GB)可用於其他用途,例如您不關心的東西,因為它是從 Internet 下載並“在 Internet 上備份”的。

如果你負擔得起,我建議用另一個 1TB 驅動器替換 250GB 驅動器。這對於 zfs 來說非常好,對於 btrfs 來說也非常好,因為在透明壓縮之前,它會將其中任何一個的容量增加到大約 1.3TB。更少的“浪費”空間。

不要使用 LVM 或 mdadm 來做 RAID-1/鏡像,btrfs 可以自己做——它會破壞使用像 btrfs 這樣的糾錯文件系統的大部分目的。

快照和透明壓縮等功能仍然可以使用,但是您將失去這些文件系統中的任何一個糾正錯誤的能力,因為您實際上只給了它一個驅動器。

如果您願意,您可以在 ZFS 或 btrfs 下使用軟體或硬體 raid,但 a) 不需要,b) 這不是一個好主意,實際上這是一個糟糕的主意。它的設置工作量更大,也更複雜,刪除了一項重要功能,並且沒有提供任何補償性好處。

如果您想使用 LVM 或 mdadm,請在它們之上使用ext4(或者,更好的是)。xfs

順便說一句,我仍然不認為我會相信 btrfs 用於 RAID-5/6,但它對於 RAID-1 或​​ RAID-10 之類的鏡像來說絕對沒問題。

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