ミラーを作成する単一のディスクがあります。このディスクをsda
と呼びましょう。同じサイズの別のディスクを購入しました。これをsdb
と呼びます。 sda
およびsdb
には、それぞれsda1
およびsdb1
と呼ばれる1つのパーティションがあります。
RAIDを作成するとき、sda
を完全に消去して再起動するのではなく、sdb
でミラーリングを開始するだけです。私の考えは次のとおりです。
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1
... sdb
ディスクなしでアレイを作成し、次のようなものを実行します(次のコマンドを大声で考えています。この手順を実行する方法がわからないためです)。
mdadm /dev/md0 --add /dev/sdb1
注sdb1
はsda1
と同様にフォーマットされていると想定されています
これは可能ですか?
タイトルの質問に対する単純な答えは「はい」です。しかし、あなたが本当にやりたいことは、既存のデータをミラーリングする次のステップです。
既存のディスクを変換することは可能ですが、メタデータの場所が原因で、前述のように危険です。新しいディスクで空の(壊れた)ミラーを作成し、既存のデータをそのディスクにコピーする方がはるかに優れています。次に、それが機能しない場合は、ミラーリングされていないオリジナルに起動します。
最初に、/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
がrootの場合)、mdadm.conf
を再生成して/dev/md0
が常に開始されるようにする必要があります。
もちろん、2番目のディスクが現在missing
であることを指定して作成できます。
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1
出来るよ。あなたは少し注意する必要がありますが、これは危険ではありませんmis何かをタイプミスしないように非常に注意していて、セットアップに落とし穴が残っていない場合。
実際のシステムでは操作を行わないことを強くお勧めします。場合によっては可能ですが、特に注意が必要です。 Parted または SystemRescueCD などのliveCD/liveUSBから起動します。
最初に、ボリュームを少し縮小して、mdraidメタデータ(スーパーブロック)のためのスペースを空ける必要があります。 いくつかのメタデータ形式 があります。ディスクの最後にメタデータを配置する形式を使用する必要があります。 (セットアップによっては、スーパーブロックを最初に配置するのに十分なスペースがある場合がありますが、それはより複雑でリスクが発生しやすいので、それについて説明します。)
スーパーブロック用のスペースを確保するために、ブロックデバイスからの最後の128kBが未使用であることを確認する必要があります。したがって、/dev/sda1
のファイルシステムを縮小する必要があります。これがext2/ext3/ext4ファイルシステムの場合、tune2fs /dev/sda1
を使用して現在のファイルシステムサイズを取得し、resize2fs /dev/sda1 NNN
を実行します。ここで、NNNはそのサイズから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のブートセクターをインストールしてください。
¹ バックアップがあることを確認してください。 「危険ではない」とは、「データを賭ける」のではなく、「おそらくそれらを必要としない」ことを意味します。