LinuxでSSD / NVMEフレンドリーなMD RAID1を再構成する

LinuxでSSD / NVMEフレンドリーなMD RAID1を再構成する

SSDとNVME RAID1アレイを使用して、ほとんどの仮想マシンディスクを保存します。データの75%以上が0です(事前に割り当てられた画像、空き容量)。

ディスクに障害が発生して交換されると、再構築時にすべてのデータが交換ディスクにコピーされ書き込まれ、NVMEに熱調整が発生し、SSD / NVMEにさらに摩耗が発生すると想定されます。まず、両方のディスクのデータを比較し、必要な場合にのみ新しいディスクに書き込むように再構築を構成する方法はありますか?

または、SSD / NVMEチップがデータがゼロであることを確認し、ターゲットブロックがまだ作成されていない場合(読み取り時にゼロが提供される)、書き込みサイクルを無駄にせずにデータを削除する必要がありますか?または、ターゲットデータがある場合は、ゼロが生成されるようにブロックを切り捨てる必要がありますか?

古いスレッドを見つけましたhttps://www.spinics.net/lists/raid/msg57529.html しかし、答えは与えません。

解決策を試しましたが、状況が悪いため、RAIDをオフラインにする必要があると思います。

mdadm --fail /dev/md0 /dev/sde
mdadm -r /dev/md0 /dev/sde

(/dev/sde 交換)

mdadm -S /dev/md0
ddpt if=/dev/sdd of=/dev/sde verbose=1 oflag=sparing
mdadm -C -v /dev/md0 --assume-clean -l 1 -n 2 /dev/sdd /dev/sde

書き込みとRAID1の再構築を比較することについてどう思いますか?ありがとうございます。

答え1

最も簡単な答えは「いいえ」です。

mdドライバはパフォーマンスに合わせて調整されました。レイド1メンバーの同期を維持するための簡単なダーティマップがあります。

したがって、メンバーが失敗すると、マップ全体が汚れます。 md はブロックベースなので、ブロックの内容に気を使わずにブロックをコピーし、そのブロックのダーティビットをクリアします。

KISS原則_簡単にしてください。他のものはより高いレベルにあります。

必要に応じて、md raid1の代わりに2つのローカルメンバーでdrbdを使用できます。 DRBDは同期前の検証方法を提供します。

答え2

したがって、MDRAID1で比較書き込み再構築を実行する唯一の方法(たとえば、ddptを介したオフライン同期に加えて)は修正されているようです(ディスクの交換時にアレイを停止して再構成する必要があり、良好なディスクが最初に新しいアレイに入る必要があります)。 )がID 0とデータソースになります)

mdadm -C -v /dev/md0 -l 1 -n 2 /dev/sdd /dev/sde
mdadm /dev/md0 -f /dev/sdd -r /dev/sdd
mdadm -S /dev/md0
mdadm -C -v /dev/md0 -l 1 -n 2 --assume-clean /dev/sde /dev/sdd
echo repair > /sys/block/md0/md/sync_action

また、複数のミラーでも動作するようです。

mdadm -C -v /dev/md0 -l 1 -n 3 /dev/sdd /dev/sde /dev/sdf
mdadm /dev/md0 -f /dev/sde -f /dev/sdf -r /dev/sde -r /dev/sdf
mdadm -S /dev/md0
mdadm -C -v /dev/md0 -l 1 -n 3 --assume-clean /dev/sdd /dev/sde /dev/sdf
echo repair > /sys/block/md0/md/sync_action

また、停止せずにアレイを再構成するというアイデアも試しましたが(RAID0 -> RAID1_or_RAID10 -> RAID0)、RAID10では比較書き込みは表示されません(明らかに元のLinux-raidスレッドあたりRAID10の場合)。 RAID0 -> RAID1変換では期待どおりに動作しません。

完全なコピーですが有効です。

mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdd /dev/sde
mdadm -G /dev/md0 -n 4 -l 10 -a /dev/sdf -a /dev/sdg
mdadm /dev/md0 -f /dev/sdf -f /dev/sdg -r /dev/sdf -r /dev/sdg
mdadm -G /dev/md0 -n 2 -l 0

全コピー(また有効:

mdadm -C -v /dev/md0 -l 0 -n 3 /dev/sdd /dev/sde /dev/sdf
mdadm -G /dev/md0 -n 6 -l 10 -a /dev/sdg -a /dev/sdh -a /dev/sdi
mdadm /dev/md0 -f /dev/sdg -f /dev/sdh -f /dev/sdi -r /dev/sdg -r /dev/sdh -r /dev/sdi
mdadm -G /dev/md0 -n 3 -l 0

しかし、問題は次のとおりです。

mdadm -C -v /dev/md0 -l 1 -n 2 /dev/sdd /dev/sde
mdadm /dev/md0 -f /dev/sde -r /dev/sde
mdadm -G /dev/md0 -n 1 -l 0

RAID1->RAID0変換時にディスク数を変更できません。

mdadm -G /dev/md0 -l 0

しかし、-n 1なしでは動作します。

mdadm -G /dev/md0 -l 1 -n 2 --force -a /dev/sde

不可能なレベル変更を要求しました

mdadm -C -v --force /dev/md0 -l 0 -n 1 /dev/sdd
mdadm -G /dev/md0 -l 1 -n 2 --force -a /dev/sde

不可能なレベル変更を要求しました

関連情報