Lvm

LVM 可以標記/避免壞塊嗎?

  • May 2, 2017

由於btrfs 不跟踪壞塊,因此作為解決方法,此 btrfs 郵件列表文章建議使用底層 mdadm RAID0 配置來支持壞塊。

可以為此目的使用 LVM 代替 mdadm 嗎?

一般來說,正如在此處的評論和您連結到的郵件列表執行緒中所提到的,現代硬碟驅動器到目前為止已經存在不可替換的壞塊應該被丟棄。(您已經解釋了您對此感興趣的原因,但對於其他讀者來說值得注意。)

我認為 LVM 中沒有任何東西可以避免這樣的壞塊。通常你會在設備層解決 LVM 下面的問題。解決問題的一種方法是使用設備映射器:創建一個表,給出跳過所有壞塊所需的扇區映射,並使用它建構一個設備。這樣的表看起來像

0 98 linear /dev/sda 0
98 98 linear /dev/sda 99

等等(這將創建一個 196 扇區設備,使用/dev/sda但跳過扇區 98)。你把這個給dmsetup

dmsetup create nobbsda --table mytable

然後在生成的/dev/nobbsda設備上創建一個 PV(而不是/dev/sda)。

使用這種方法,通過一點前瞻性規劃,您甚至可以在未來處理失敗的扇區,就像驅動器的韌體一樣:在驅動器的末端留下一些空閒的扇區(或者甚至在驅動器周圍點綴,如果你願意分散風險),然後用它們來填補故障扇區留下的漏洞。使用上面的例子,如果我們認為從 200 開始的扇區是備用扇區,而第 57 扇區變成了壞扇區:

0 57 linear /dev/sda 0
57 1 linear /dev/sda 200
58 40 linear /dev/sda 58
98 98 linear /dev/sda 99

使用給出的壞扇區列表創建設備映射表badblocks留給讀者練習。

另一個適用於現有 LVM 設置的解決方案是使用pvmove’ 移動物理範圍的能力,以便將 LV 移出壞區域。但這不會阻止在創建新 LV 或調整現有 LV 大小或移動時重新使用這些區域。

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