不同磁碟大小的 btrfs RAID1

不同磁碟大小的 btrfs RAID1

我在 2TB 磁碟上有一個現有的 btrfs 檔案系統,我想添加另一個 5TB 磁碟作為冗餘。

我可以簡單地使用 btrfs 格式化新磁碟並新增設備

btrfs device add /dev/sdX /mymountpoint
btrfs filesystem balance start -dconvert=raid1 -mconvert=raid1 /mymountpoint

我最終將獲得 2TB 可用磁碟空間以及兩個磁碟上的所有內容。但是,如果我可以在5TB 磁碟上使用備用的3TB,這樣我就可以獲得更多冗餘,這樣每次寫入都會兩次寫入較大的磁碟(2TB 磁碟將所有內容儲存一次,5TB 磁碟將所有內容儲存兩次)。這可能嗎?

我知道它的缺點,例如更高的延遲、更低的速度等。

答案1

從技術上講,如果您在較大的磁碟上建立兩個 2 TB 的分割區,您將能夠將它們與較小的磁碟一起使用(或它的分區)作為三個大小相等(或幾乎相等)的設備。

即使你可以接受缺點,也不要這樣做。原因是這樣的:

btrfs 首先將所有裝置組合到一個儲存池中,然後在建立檔案資料時複製這些區塊。 RAID-1 目前被定義為「所有資料在不同裝置上的 2 個副本」。這與 MD-RAID 和 dmraid 不同,它們為 n 個裝置製作 n 個副本。在三個 1 TB 設備上的 btrfs RAID-1 中,我們獲得 1.5 TB 的可用資料。由於每個區塊僅複製到 2 個設備,因此寫入給定區塊只需要恰好寫入 2 個設備;閱讀只能從一本開始。

來源

因此,可能(並且將會)發生某些資料最終位於較大磁碟的兩個分割區上而不是較小磁碟上的情況。我想,如果較大的磁碟部分/局部發生故障,這種「窮人的冗餘」有時可能會有所幫助。如果它整體失敗,那麼恰好儲存在其上兩次的資料將會遺失。

您可以使用「n 個裝置的 n 個副本」方法來完成您想要的操作(再次強調:較大磁碟上的兩個分割區是此上下文中的裝置)。您可能感興趣使用 LVM 進行 RAID 與 MDRAID - 優缺點

如果我是你,我就不會這樣做。在此設定中,每個寫入操作都涉及同一實體設備上的兩個分割區。即使您按順序寫入兩個分區,這些都是並發寫入,需要磁頭來回移動;除非您專門設法設定分區,否則相應的寫入操作將由公共臂同一位置的兩個不同磁頭執行。韌體可以同時使用兩個磁頭寫入嗎?首先,資料是否總是半同時到達兩個分區?兩個分區的相應寫入之間不會安排任何讀取操作嗎?我對所有這些都表示懷疑。

因此,可以合理地假設磁頭的行程會比非 RAID 配置中的行程更多。這可能會縮短手臂的使用壽命。當它發生機械故障時,整個磁碟都會發生故障。那你有多少份就不再重要了。剩下的只是較小的磁碟。

結論:您的想法可能會增加類型失敗的風險(當發生這種情況時)使得額外的冗餘完全無關。

答案2

使用 btrfs 沒有直接的方法來實現這一點。但更重要的是,這是一種危險的配置,不應使用。

RAID1的目的是冗餘。在單一磁碟上儲存兩次資料並不能提供冗餘:如果該磁碟發生故障,您的資料就會遺失。

相關內容