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


20

ミラーを作成したい単一のディスクがあります。このディスクを呼び出しましょうsda。同じサイズの別のディスクを購入しましたsdbsdaそして、sdb呼ばれる一つのパーティション持っているsda1sdb1、それぞれを。

レイドを作成するとき、sdaクリーンを消去して再起動するのではなく、でミラーリングを開始するだけですsdb。私の思考の流れはそうすることでした:

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

... sdbディスクなしでアレイを作成し、次のように実行します(このステップをどのように達成するかわからないため、次のコマンドを大声で考えています)

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

sdb1は次のようにフォーマットされていると想定されますsda1

これは可能ですか?


はい、できます。のように簡単ではなく、--add注意する必要がありますが、それほど複雑ではありません。Ubuntuでディスクミラーリングを設定する方法をご覧ください(新しい規則のため、この質問を複製として提案することはできません。)
ジル「SO-悪であるのをやめなさい」

回答:


28

タイトルの質問に対する簡単な答えは「はい」です。しかし、あなたが本当にやりたいことは、既存のデータをミラー化する次のステップです。

既存のディスクを変換することは可能ですが、前述のように、メタデータの場所のために危険です。新しいディスクを使用して空の(破損した)ミラーを作成し、既存のデータをそのディスクにコピーする方がはるかに優れています。その後、それが機能しない場合は、ミラー化されていないオリジナルから起動します。

最初に、欠落しているドライブで/dev/sdb1新しいものとして/dev/md0初期化し、ファイルシステムを初期化します(ext3を想定していますが、選択はあなた次第です)

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

今、/dev/sda1最も可能性の高いルートファイルシステムである(/)ので、安全のために、あなたは両方にアクセスすることができ、ライブ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/md0現在マウントされていること(df)および劣化したミラーとして実行されていること()を確認しcat /proc/mdstatます。/dev/sda1配列に追加します。

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

再構築により上書きされるため、/dev/sda1使用するメタデータのバージョンは無関係です。いつものように大きな変更を行うときは、可能であれば完全バックアップを取るか、少なくとも再作成できないものが安全であることを確認してください。

/dev/md0ルートとして使用するためにブート設定を再生成する必要があります(/dev/sda1ルートであった場合)。おそらく、常に再起動mdadm.confして確実に起動する必要があります/dev/md0


まさに私が必要なものを完璧にし
ましょう

2
cpファイルシステムをコピーするために使用しないでください。ハードリンク、拡張属性などのいくつかを見逃すでしょう... tarまたはrsync適切なオプションを使用してください。Live CDを起動するとき、uid-userマッピングが異なることに注意してください(tar / rsyncの--numeric-ownerオプションを参照)。extxファイルシステムのクローン作成については、clone2fsも参照してください。
ステファンシャゼル

1
cpリンクを保持するオプション(-d)、モード、所有権、タイムスタンプ(-p)、再帰的に実行する(-R)、1つのファイルシステムに留まる(-x)が、ハードリンクと拡張については正しいと思う属性。
StarNamer

rsync -aH --delete /mnt/olddisk/ /mnt/newarray/良いオプションです。-vih --progressあなたが本当にそれが何をしているのかを見たいなら追加してください。
ルドルフビーカー

4

もちろん、2番目のディスクが現在あることを指定して作成することもできますmissing

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

ありがたいことに、ここではOCDである可能性がありますが、/ dev / sda1の前に行方不明を追加した理由は重要ですか?
whoami

順序は関係ないと思います。
エップスィグ

3
それに注意してください!--metadata = 1.2(新しいデフォルト)を使用すると、開始時にRAIDメタデータ(1MB)が挿入されます(そこのコンテンツが上書きされます)。そして、md配列の開始は/ dev / sda1内で1MBを開始します(/ dev / md0は/ dev / sda1より1MB短くなります)。metadata = 0.9(古いデフォルト)を使用すると、メタデータ(64kB)が最後に挿入され、そこにあるものが上書きされます。そのため、-metadata = 0.9を使用して、最初にFSのサイズを変更します。何をするにしても、事前にバックアップを取ってください。
ステファンシャゼル

3

出来るよ。少し注意する必要がありますが、何かを間違えないように細心の注意を払い、セットアップに問題を残さない場合、これは危険ではありません¹。

ライブシステムでは操作を行わないことを強くお勧めします。場合によっては可能ですが、特別な注意が必要です。PartedSystemRescueCDなどのliveCD / liveUSBから起動します。

まず、mdraidメタデータ(スーパーブロック)のためのスペースを確保するために、ボリュームを少し縮小する必要があります。いくつかのメタデータ形式があり、メタデータをディスクの最後に置くものを使用する必要があります。(一部のセットアップでは、スーパーブロックを最初に配置するのに十分なスペースがある場合がありますが、それはより複雑でリスクが発生しやすいので、ここに入ります。)

スーパーブロック用のスペースを確保するために、ブロックデバイスの最後の128kBが未使用であることを確認する必要があります。したがって、ファイルシステムをに縮小する必要があります/dev/sda1。これはEXT2 / EXT3 / ext4のファイルシステムであれば、と現在のファイルシステムのサイズを取得tune2fs /dev/sda1し、実行resize2fs /dev/sda1 NNNNNNがそのサイズマイナス128kBのです。代わりにPartedでこれを行うことができます。extNファイルシステムを縮小する必要がある場合は、最初にアンマウントする必要があります。btrfsファイルシステムはライブで縮小できます。

ブロックデバイスの最後の128kBが空いていることを確認したら、呼び出しmdadm --createてRAID-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を理解し、そこから起動できます。RAIDを認識しないGrub1などのブートローダーは、ミラーボリュームから透過的に読み取りますが、ブートローダーが読み取っているドライブに障害が発生した場合、システムは起動しません。RAIDボリュームがパーティション上にある場合、Grubのブートセクターを両方のドライブにインストールしてください。

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

ディスクミラーリングのセットアップ方法(RAID-1)から再投稿され、わずかに修正されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.