單一裝置上的 btrfs raid1 和 btrfs -m dup -d dup 有什麼差別

單一裝置上的 btrfs raid1 和 btrfs -m dup -d dup 有什麼差別

我已經在多個裝置上使用 btrfs 大約兩年了。

我計劃在具有不可靠扇區的 HDD(單盤)上測試一些 btrfs 配置。硬碟上的十幾個磁區有時無法讀取。

這些設定中的資料完整性和整體讀寫速度是否有任何差異:

1 TB HDD
-1 TB btrfs partition created with `mkfs.btrfs -d dup -m dup /dev/sda1`

1 TB HDD
-500 GB partition
-500 GB partition
--500 GB btrfs Raid 1 `mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sda2`

答案1

我建議使用該變體,而dup不是在同一設備上放置多個分區並突襲它們。 raid 變體很糟糕,因為 raid 要求在存取資料時讀取兩個副本(這對於正常的多設備 raid 很有用,因為如果任一設備速度更快,則資料會更快可用)。對於單一裝置旋轉裝置,這會導致讀取頭在不同分割區之間跳躍,因此如果佇列中有多個請求(通常情況),您最終會得到非常糟糕的效能。增加佇列深度和 CFQ 調度程序可以稍微減少整體延遲,但最好避免這種混亂。

dup變體應該足夠理智,通常只能讀取一個副本,並且僅在扇區不可讀時才回退到另一個副本。

我不確定dup實施情況,但我猜這dup不會將副本 1/2 設備遠離第一個副本,因此dup可能也會提高寫入效能。對於單設備raid,寫入效能也會很差,因為一個邏輯寫入作業需要寫入實體旋轉設備上的兩個位置,而且差異始終是1/2 設備,因此您最終會得到一種實際上實現整體的演算法旋轉設備的最壞情況行為。

答案2

我能想到 DUP 和 RAID1 之間的一個區別:

  • 如果您(像我一樣)有一些 SSD,在不使用時開始說隨機扇區不可讀
  • 然後 DUP 可能會出現 PANIC,因為 BTRFS 分割區標頭上的不可讀取磁區之一且 BTRFS 無法安裝、讀取等儲存在其上的任何內容。使用 RAID1 時,您可以掛載另一個(如果另一個 BTRFS 分割區標頭上沒有該不可讀磁區)並進行清理以重寫不可讀磁區。
  • RAID1意味著兩個分割區,每個分割區都有一個標頭,因此如果一個標頭損壞(重新格式化分割區),而另一個分割區標頭正確,您可以掛載另一個分割區並以降級模式存取並修復它(新增另一個新分割區) ,刪除缺少的,在RAID1等級上平衡)

現在是我個人與 KingDian SSD 的故事,在長時間(超過八天)斷電後,會出現隨機不可讀扇區的情況;以及 BTRFS RAID1 如何進入儲存並允許使用此類 SSD(直到不可讀磁區發生衝突)。

首先我要感謝 BTRFS 及其 DUP(我將在不久的將來測試它)和 RAID1(已經測試並取得了完美的結果);它讓我可以使用 KingDian 品牌的 SSD。對於 Yucun 和 Samsung 品牌,我還沒有看到顯示 KingDian 品牌的所有三個 SSD 的“不可讀取扇區”問題。我總共使用了11 個SSD,其中一個KingDian 壞了,所以我現在只使用了10 個)和一個KingDian 1TiB SSD,我不敢開始使用它(我打算在FAT32 或NTFS 中使用它來合法地播放電視)購買轉換為 H.264/2xAAC 的 DVD)。

KingDian SSD 的問題確實很奇怪,所以我會一步一步告訴你我是如何解決這個問題的:

  1. 僅建立一個90%的分割區並格式化它,直到前幾天我使用Ext4(Linux)/ NTFS(Windows系統分割區);我真的很討厭Windows,但我被迫使用它。
  2. 在該分割區安裝系統
  3. 每天使用系統 --> 沒有顯示任何問題
  4. 斷電並放置超過八天 --> KingDian SS 出現問題
  5. 要查看我使用Live Linux 發行版(DVD / USB / 等)啟動的問題,我主要使用SystemRescueCD,但任何其他具有“ntfsclone”/“partclone.*”/“partimage”或只是簡單的“dd”的都將服務
  6. 我將分區克隆儲存為檔案(例如將系統分割區保存在備份媒體上)
  7. 出現問題,有一些扇區(從幾個到接近 25 或 30 個)不可讀
  8. 我(在紙上)記下哪些扇區不可讀
  9. 現在奇怪的事情開始了,我正確地關閉電源並將其關閉八天或更長時間
  10. 我重複步驟4 到7,看看哪些扇區現在不可讀,列表發生了很大變化,大多數時候兩個列表沒有共同點,因此所有不可讀扇區都變得可讀,而其他現在可讀的扇區不可讀
  11. 我可以多次重複此操作(根本不寫入 SSD),並且所有不可讀扇區列表往往沒有任何共同扇區(有時一個扇區位於兩個列表中)

為什麼這款SSD(僅限KingDian品牌)會做出如此醜陋和奇怪的事情?隨機說有些扇區在長時間(超過八天)斷電後不可讀,再過一段時間(超過八天)斷電又恢復可讀。

最奇怪的是,在不可讀然後再次可讀之後,它們總是具有正確的數據。

另外,我查閱了 SMART 數據,它說沒有新的重新分配扇區(它有一些,因為我曾經在 Windows 上使用過一個工具來強制重新分配不可讀扇區)。

SMART訊息還說沒有讀錯誤,而有些扇區不可讀,也說沒有寫錯誤。

顯然,沒有“讀取”錯誤,沒有“讀取”“錯誤”數據...這在技術上與無法讀取不同...並且智能數據沒有我可以看到的字段顯示不可讀的錯誤計數. .. ETC。

順便說一句,如果我用資料重寫不可讀磁區,它們會再次變得可讀,而無需重新映射任何磁區,可能是因為使用的內部磁區不是失敗的磁區(請記住,寫入時的SSD 使用不同的位置來擴展現場,SSD使用內部映射LBA(晶片內部的真實位置)。

順便說一句,克隆一個包含 30GiB 資料的分區並且沒有這個問題只需要不到一分鐘(SSD 可以在克隆分區時持續以 550MiB/s 的速度讀取,也就是大多數連續讀取);但對於 25 個不可讀磁區,需要超過 24 小時(忽略此類錯誤,否則不會結束),並且會有一些「損壞」資料(無法讀取)。

這就是 BTRFS 拯救我的地方:

  • 首先,我在 BTRFS 的 RAID1 層級的同一個 SSD 中使用兩個分割區來儲存資料和元數據
  • 現在我知道了 DUP 而不是 RAID1,我將使用 DUP 進行測試;這將使我避免每次運行兩個克隆分區備份,只需一個;那太好了(它有效)

救我的事怎麼樣了?簡單:在對 BackUP 媒體進行克隆之前,我對要克隆的內容進行了清理,以便非可讀扇區將導致 BTRFS 用另一個副本覆蓋它們(希望兩個副本都沒有不可讀扇區)同一時間、同一位置)。

對於兩個分區,它工作得很好(緩慢,但有效)並且不會丟失克隆資料上的某些扇區;現在我必須在一個分割區上使用 DUP 進行測試,而不是在兩個相同大小的分割區上使用 RAID1 進行測試。

它不會減少備份的時間(也需要額外的時間),但至少我可以確保所有資料都是正確的...直到有一天,同一資料(衝突)出現兩個不可讀的磁區同時處於同一位置,那將是不可挽回的。

另一個選擇是顯而易見的:不再使用任何 KingDian SSD,這是迄今為止我使用過的唯一出現該問題的 SSD(長時間斷電後無法讀取扇區)。

想像一下,您出去度假,切斷了家裡的總電源,回來後發現您的 SSD 有不可讀的部分!對於家庭用戶來說這是個大問題,但對於 SSD 始終供電的資料中心來說則不然。

偉大的BTRFS!現在想想另一個醜陋的部分(對我來說),如何對 NTFS 分割區(Windows 系統分割區)做類似的事情?根本不可能,NTFS 沒有這個選項(記住 Windows HOME 版本,而不是 SERVERS 等)。

所以感謝 BTRFS,Linux 比我幾天前想像的要好得多......我幾十年來一直是 Linux 用戶......但拒絕嘗試 BTRFS,因為所有關於完全損壞等的壞信息;直到我遇到 SSD 問題並需要冗餘的東西。

我想到的另一個選擇是 ZFS,更複雜,沒有整合在 GRUB2 引導程式上,沒有整合在核心上(也許永遠不會,因為許可系統),等等;所以我狂熱地嘗試了(昨天)BTRFS...令人驚訝的是,它看起來非常穩定,相對易於使用(添加新磁碟時警告,它會將其添加到RAID0,而不是RAID1,我不使用RAID5/6/等也不想使用這樣的),易於從災難性損壞中恢復(重新格式化兩個分割區之一)而不會遺失資料(在非 KingDian SSD 上)等。

當然,我不使用子卷、快照等...只是作為 RAID1 中 Linux 根“/”的普通檔案系統;正如我所說,我必須使用DUP 而不是RAID1 進行測試,但我擔心(我非常偏執)我將在RAID1 上的同一個SSD 上保留兩個分區,因為分區標頭上的不可讀扇區將意味著所有BTRFS 都無法恢復/可讀。

如果我仍然可以在KingDian SSD 中看到它們呈現出這種隨機的不可讀扇區故障,那麼這將節省金錢,SSD 並不便宜,因為我只想使用單位單元SSD,而且這非常昂貴,隨著尺寸的增加而變得更加昂貴(我說我我非常偏執),並且擁有超過 10 個所有數據的離線備份副本,其中包含一百多個最後狀態的歷史記錄(我知道,太偏執了)。

答案3

我發現至少有一個差別:

您只能掛載降級的 raid1 rw 一次。當設備的其他分區正常時某個分區發生故障的可能性可能很小,但這是有區別的。

來源: https://btrfs.wiki.kernel.org/index.php/Gotchas#raid1_volumes_only_mountable_once_RW_if_degraded

如果降級,raid1 磁碟區只能安裝一次 RW

即使沒有單一設定檔區塊,raid1 磁碟區如果降級,也只能使用選項 -o degraded,rw 以讀寫方式掛載一次。

筆記:

  • 據報道,當設備數量超過 2 台時,這種情況不會發生。

  • raid10 設定檔磁碟區不會發生這種情況。

  • 這通常是由於「不完整的區塊轉換」問題造成的,其中還剩下單一區塊。

可能的康復:

  • 如果它仍然是讀寫的,您可以將設定檔 raid1 中的區塊轉換為設定檔 single(或設定檔 dup)(如果有足夠的空間)。

  • 如果仍然是可讀寫的,可以用btrfs設備取代缺少的設備。

  • 當 raid1 磁碟區因任一原因被卡為唯讀時,只能透過轉儲其內容、重新建立它並恢復內容來恢復。

答案4

聚會遲到了,但無論如何。我想知道同樣的問題,在我讀到的人(關於 dup):

“例如,SSD 驅動器可以在內部將區塊重新映射到單個副本,從而對它們進行重複資料刪除。這否定了增加冗餘(原文如此)的目的,並且只是浪費空間”

也許 raid1 可以避免(或不能)這種擔憂。

相關內容