1つのデバイスでソフトウェアRAID 1を作成できますか?

1つのデバイスでソフトウェアRAID 1を作成できますか?

ミラーリングしたいディスクがあります。このディスクをと呼びますsda。同じサイズの別のディスクを購入しましたsdb。名前がsdaあり、sdbパーティションがsda1ですsdb1

攻撃台を作成するときは、きれいにクリアして再起動したくないので、sdaミラーリングを開始するだけですsdb

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1

...sdbディスクなしでアレイを作成したら、次のコマンドを実行します。 (このステップをどのように実装するのかわからないので、次のコマンドを大声で叫ぶつもりです。)

mdadm /dev/md0 --add /dev/sdb1

コメントのsdb1形式が次のように仮定します。sda1

可能ですか?

答え1

タイトルの質問に対する簡単な答えは「はい」です。しかし、実際にやりたいことは、次のステップ、つまり既存のデータをミラーリングすることです。

既存のディスクを変換することは可能ですが、上記のようにメタデータの場所により危険です。新しいディスクで空の(破損した)イメージを作成し、既存のデータをここにコピーすることをお勧めします。その後、機能しない場合は、ミラー化されていない元の状態に再起動します。

まず、/dev/sdb1不足しているドライブがある新しいドライブに初期化し、/dev/md0ファイルシステムを初期化します(ext3と仮定しますが、選択はあなたの役割です)。

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0

これ/dev/sda1はルートファイルシステム()である可能性が高いので、/安全を維持するためにLive CD、リカバリディスク、またはその両方にアクセスできる他の起動可能なシステムで次の手順を実行する必要があります/dev/sda1/dev/md0シングルユーザーモードに切り替えるこの操作は正常に完了しました。

ファイルシステムの内容全体を/dev/sda1にコピーします/dev/md0

mount /dev/sda1 /mnt/a       # only do this if /dev/sda1 isn't mounted as root
mount /dev/md0 /mnt/b
cd /mnt/a                    # or "cd /" if it's the root filesystem
cp -dpRxv . /mnt/b

代わりに、次の起動時にインストールされるように編集するか、/etc/fstab別の方法で確認してください。システムはそのシステムで起動するように設定されている可能性があり、起動パラメータはそれをルートデバイスとして指定できるため、再起動時にこの設定をルートになるように手動で変更する必要があります。デバイス(ルートデバイスであると仮定)。再起動後に現在インストールされていること()、ダウングレードされたイメージで実行されていること()を確認してください。配列に追加:/dev/md0/dev/sda1/dev/sda1/dev/md0/dev/sda1/dev/md0dfcat /proc/mdstat/dev/sda1

mdadm /dev/md0 --add /dev/sda1

再ビルドすると上書きされるため、/dev/sda1どのメタデータバージョンを使用するかは問題ではありません。いつものように、主な変更を適用するときは、フルバックアップを実行するか(可能であれば)、少なくとも再作成できない項目が安全であることを確認してください。

/dev/md0ルートとして使用するには(ルートの場合)、起動設定を再作成する必要があり、常に起動するように再/dev/sda1作成する必要があります。mdadm.conf/dev/md0

答え2

もちろん、ディスクを作成し、2番目のディスクが現在次のように指定できますmissing

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1

答え3

あなたはこれを行うことができます。少し気を付ける必要がありますが、間違って入力しないように非常に注意し、設定にトラップを残さないと危険ではありません。

ライブシステムでは何もしないことをお勧めします。これは場合によっては可能ですが、特別な注意が必要です。 liveCD/liveUSBから起動します(例:別れたまたはシステム回復ディスク

まず、mdraidメタデータ(スーパーブロック)のためのスペースを確保するために、サイズをわずかに小さくする必要があります。持つ複数のメタデータ形式、ディスクの末尾にメタデータを配置するメタデータを使用する必要があります。 (一部の設定では、最初にスーパーブロックを配置するのに十分なスペースがあるかもしれませんが、これはより複雑で危険なので、これについて議論します。)

スーパーブロック用のスペースを確保するには、ブロックデバイスの最後の128kBを使用しないでください。したがって、/dev/sda1ext2 / ext3 / ext4ファイルシステムの場合は、使用して現在のファイルシステムサイズを取得し、NNNはそのサイズから128 kBを引いたサイズをtune2fs /dev/sda1実行します。resize2fs /dev/sda1 NNNあなたはこれを行うことができます別れた代わりに。 extNファイルシステムを縮小する必要がある場合は、まずマウント解除する必要があります。 btrfsファイルシステムはリアルタイムで縮小できます。

ブロックデバイスの最後の128kBが利用可能であることを確認したら、mdadm --createCreate RAID-1ボリュームを呼び出します。これはスーパーブロックを除くボリュームのどの部分にも触れません。最初は、ボリュームにコンポーネントが 1 つだけあり、他のすべてのコンポーネントが障害に設定されます。--level=1(またはこれと同等のもの)を通過する必要があります(-n 1この方法はRAID-1でのみ機能します)、--metadata=0.9または--metadata=1.0(デフォルトのスーパーブロックフォーマット1.2はデバイスの先頭に近いスーパーブロックを配置するため、データを上書きする可能性があります)--raid-devices()パラメータ-nは、RAIDボリュームのコンポーネント数(欠けているコンポーネントを含む)です。

mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sda1 missing

これで、アレイをアクティブにして追加のコンポーネントを追加できるようになりました。

mdadm --add /dev/md0 /dev/sdb1

ブートローダに関する注意:Grub2はLinux RAID-1を理解し、ここから起動できます。 Grub1などのRAIDをサポートしていないブートローダはミラーボリュームからデータを透過的に読み込みますが、ブートローダが読み取るドライブに障害が発生した場合、システムは起動しません。 RAIDボリュームがパーティションにある場合は、両方のドライブにGrubのブートセクタをインストールする必要があります。

必ずバックアップしてください。 「危険ではない」とは、「データを使ってギャンブルをすること」ではなく、「おそらく必要ではない」ことを意味します。

若干の修正を経て再公開ディスクミラーリング(RAID-1)の設定方法

関連情報