ソフトウェアRAID:Windows raid0からLinux mdadm raid5への移行

Windows raid0からLinux raid5に移行した方法、遭遇した落とし穴、およびそれらを克服する方法について報告します。



先史時代。 設計部門は、Windows 2003を実行しているファイルサーバーによって管理されています。最初はデータ交換用に設計されていましたが、ソフトウェアraid0があるにもかかわらず、やがて長期ファイルストレージに使用し始めました。 次のハードウェア更新の時が来ました。 購入後、「予期せず」新しいマザーボードでWindows 2003が起動せず、ドライバーの製造元がリリースせず、ライセンスの理由から受け入れられない新しいバージョンのWindowsの使用を推奨していることが判明しました。



その結果、2つの決定が下されました。



仮想化に関する質問はありません-複数回行われています。 主な問題は、Windowsによって組織されたゼロレイドです。 Linuxでwindows-raid0をマウントしようとして時間を費やしました-インターネット上でこれが可能であるという説明にもかかわらず、不可能でした。



2番目の問題:raid0用のハードドライブのWindowsサーバーには、それぞれ2TBが2つあり、アレイ全体がデータで満たされ、それらをコピーする場所がありません。 また、2台の新しいハードドライブを購入しましたが、すでに3TBでした。 部門の管理者は、最初にそれらを既存のゼロレイドに接続し、10TBでデータを保存するための仮想ディスクを取得することを望みました。



説明として、このようなアプローチが間違っていると納得させることはできましたが、3TBで3台目のハードドライブを購入することを納得させることはできなかったため、次の順序で進めることにしました。



1)1つのハードドライブが欠落しているraid5をビルドする



mdtest# mdadm --create /dev/md4 -l 5 -n 3 /dev/sda1 /dev/sdb1 missing
      
      





2)raid5をWindowsに転送し、その手段を使用してデータをコピーします



3)残りのディスクからのコピーが完了したら、raid0を収集し、3番目のブロックデバイスとしてraid5に転送します



 mdtest# mdadm --create /dev/md3 -l 0 -n 2 /dev/sdc1 /dev/sdd1 mdtest# mdadm --add /dev/md4 /dev/md3
      
      





データの量が少ない仮想マシンでこのオプションをテストしました-raid5があるテストが完了すると、すべてが正常になります、いくつかのハードリブートを実行し、仮想ハードドライブをオフにしてオンにします-raidは本来のように動作します-それ自体を復元し、データの損失はありません。



データがコピーされた後、劣化したアレイがあり、この段階で障害が発生した場合、すべての情報が完全に失われた場合、コピー元の2台のハードドライブによって復元されるのは非常に紛らわしいです。 そのため、データをどこかに事前にバックアップする必要があります。 しかし、1TBの空きハードドライブは2つしかないため、すべてが複雑になっています。 状況は過熱しており、午前中はサーバー上のデータが少なくとも読み取りアクセスできるはずです。



他のサーバーの改訂により、2TBの空き容量を持つサーバーがあることがわかりました。これにより状況が保存されます。2TBの2台のハードドライブのいずれかのイメージを保存し、1TBのハードドライブを備えたストリップでraid5リカバリを使用できます。障害が発生した場合、すべてのデータは安全です。 最終的なスキーム:



/dev/md3 - raid0: 1TB + 2TB





/dev/md4 - raid5: 2x3TB + /dev/md3







実際のデータを使い始める


1台のハードドライブなしでraid5を収集し、KVMでLinuxでWindows 2003を実行し、コピーを開始し、書き込み速度が3-6MB / sで非常に低いことを確認します。Linuxから同じ劣化raid5(RAMからのデータの3倍) 80MB / sの平均速度で、しかしソースデータはWindowsの下からしかコピーできないという事実のために、これは助けにはなりません。 はい、劣化したraid5への書き込み速度が低下することはわかっていますが、LinuxとWindowsの違いはどこから来たのですか?



テストのために、Windowsからデータを単一のドライブにコピーしようとしました-100MB /秒。 mdadmの実装は、Windowsがraidへの書き込みについて気が進まないようなものでしょうか? mdadmに組み込まれたraid1の上で複数のWindowsを実行している可能性はほとんどありません。 raid1のために実験を行ったところ、Windowsでの単一ドライブと同じ範囲のコピー速度は約100MB / sです。



私たちの間違いは、「元々2つのハードドライブからmdadm raid5にアセンブルされ、1つの行方不明はraidによる実装がゼロである」という記事を信じていたことでした。また、Linuxでのみテストし、 -Windowsでは、問題は以前に知られていました。



テスト環境は、生産性を完全に繰り返す必要があります。



テストに戻る


2台の3TBハードドライブからraid0を収集し、データをコピーしてから、raid5でこのアレイを再構築することが決定されました。



1)raid0を作成します



 mdtest# mdadm --create /dev/md4 -l 0 -n 2 /dev/sda1 /dev/sdb1
      
      





2)データをコピーします。今回はWindowsから、書き込み速度は60-100MB / sです



3)raid0をraid1に変換します



 mdtest# mdadm /dev/md4 --grow --level=5 mdadm: level of /dev/md4 changed to raid5
      
      





この操作は即座に実行されますmdadm -D /dev/md4



mdadm -D /dev/md4



があることを報告します



 mdtest# mdadm -D /dev/md4 /dev/md4: Raid Level : raid5 Raid Devices : 3 Total Devices : 2 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Number Major Minor RaidDevice State 0 252 0 0 active sync /dev/dm-0 1 252 1 1 active sync /dev/dm-1 2 0 0 2 removed
      
      





4)3番目のブロックデバイスを追加する



 mstest# mdadm --add /dev/md4 /dev/md3 mdadm: added /dev/md3
      
      





ステータスを確認します。

 mdtest# mdadm -D /dev/md4 /dev/md4: Raid Level : raid5 Raid Devices : 3 Total Devices : 3 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Rebuild Status : 2% complete Number Major Minor RaidDevice State 0 252 0 0 active sync /dev/dm-0 1 252 1 1 active sync /dev/dm-1 3 252 2 2 spare rebuilding /dev/dm-2
      
      





テストは正常に完了しました。



実際の移行


  1. 2つの3TBハードドライブからmdadm-raid0 [md4]を収集しました。
  2. Windowsでは、windows-raid0からmdadm-raid0にデータをコピーしました。
  3. 2台目のハードドライブのイメージを、隣接サーバー(2TB)のwindows-raid0から保存しました。
  4. mdadm-raid0をmdadm-raid5に変換しました。
  5. 1TBドライブからmdadm-raid0 [md3]を収集し、windows-raid0から2番目のドライブを収集しました。
  6. 3番目のブロックデバイスmdadm-raid0 [md3]でmdadm-raid5に追加されました。




注釈


raid5の再構築中に、高速化のために最適化が行われ、stripe_cache_sizeが最大32768まで増加されました: echo 32768 > /sys/block/md4/md/stripe_cache_size



書き込みインテントビットマップが無効になりました: mdadm --grow --bitmap=none /dev/md4







windows-raid0が限界までいっぱいになると、強力なデータの断片化が発生し、4TBを長時間最適化するために、 Microsoft Richcopyを複数のストリームにコピーすることで状況を脱しました



mdadmコマンドの非常に賢明なガイド「 LinuxのソフトウェアRAID 」。



All Articles