RAID拡張 · 2 min read · Nov 14, 2025
DebianでのソフトウェアRAIDの拡張:新しい大容量ハードディスクへの移行
セットアップ:RAID 1(ミラー)の2つの物理ドライブを、より大容量の2つのドライブに置き換えます。外部ブートメディアからブートする必要なく、稼働中のオペレーティングシステムから「ホット」交換を行います。このガイドは、Debianディストリビューション6、7、8の32ビットおよび64ビットでテストされています。
2つのドライブがルートパーティションとスワップパーティションでパーティション分割されており、これらの2つのパーティションがRAIDデバイスmd0とmd1を構成していると仮定します:
- ボリュームmd0(ルート)を構成するsda1およびsdb1パーティション
- ボリュームmd1(スワップ)を構成するsda2およびsdb2パーティション
まず、すべてのデータのバックアップを行います。ガイドが何度もテストされているとはいえ、悪運は常に存在します… 交換のための(私の意見では、最良の解決策)を提供します。マシンをオフにして、古いドライブの1つを切断し、新しい一時ドライブを接続します。次に再同期を行います。これにより、RAIDは機能し続け、単一のドライブ(RAIDが劣化モードで)を持つことができ、何かがうまくいかない場合でも機能するRAIDを再作成できます。これを行うには、完全なドライブを空のドライブに置き換えた後、次のコマンドを入力します:
sfdisk -d /dev/hd source | sfdisk —force /dev/hd empty
mdadm —zero-superblock /dev/hd empty
mdadm —add /dev/md(raid) /dev/hd(empty)システム上の各RAID /パーティションに対して、最後の2行を繰り返します
(例えば:
mdadm -add /dev/md0 /dev/sdb1 次に
mdadm -add /dev/md1 /dev/sdb2など)
このようにして、ソースドライブから空のターゲットへのパーティションテーブルを強制的にコピーし、これをRAIDに追加しました。
当然、再構築プロセスが終了するまで待つ必要があります。これを監視するには:
watch cat / pro / mdstat(もちろん、CTRL + Cでプロセスを終了します)
この時点でマシンをシャットダウンし、2つの新しいディスクを追加します。これらはそれぞれsdcとsddになります。次にサーバーを起動し、コマンドを実行します:
fdisk -l結果は次のようになります:
Disk /dev/sda: ……MB , ………….Bytes
… heads, …sectors/track , ….. cylinders
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk: identifier : ………..Device boot Start End Blocks Id System/dev/sda2 970 1044 602437+ fd Linux raid autodetect/dev/sda2 1 969 7783461 fd Linux raid autodetect ……/dev/sdb1 * 1 969 7783461 fd Linux raid autodetect /dev/sdb2 970 1044 602437+ fd Linux raid autodetect ……Disk /dev/sdc: …Mb, …….Bytes……Disk /dev/sdd: …Mb, …….Bytes……Disk /dev/md0: …Mb, …….Bytes…...Disk /dev/md1: …Mb, …….Bytes今、次のように入力します:
fdisk /dev/sdcnコマンドで新しいパーティションを作成し、pプライマリパーティションを選択し、パーティション番号(1,2,3,など)を選択し、開始シリンダ(1)を選択し、プライマリパーティションのサイズを+記号の後にGBのサイズを入力して選択します(例:+480GB)
aコマンドでブート可能にし、同じパーティション番号を選択します。
tでパーティションIDを「fd」(Linux Raid Autodetect)に変更し、16進数コードとして「fd」と入力します。
次に、2番目のパーティション(スワップパーティション)についてすべてのコマンドを繰り返します。
変更をwで保存します。
当然、パーティションのサイズには注意が必要です。最良の解決策は、現在のスワップサイズを合計の空きスペースから引いて、できるだけ広い作業パーティションを作成することです。
今、私たちはSDDドライブで全く同じ操作を行い、以前に使用したのと同じサイズの同じパーティションを作成することを確認します。
この時点で、最初の「フル」ドライブと最初の新しいドライブの間で交換を行い、後者をRAIDにスペアとして追加します:
mdadm -add /dev/md0 /dev/sdc1次に、RAIDディスクの状況を確認します。次のようになるはずです:
md0: active raid 1 sdc1[S] sda1[2] sdb1[3] ………blocks super 1.2 [2/2] [UU]次に、元のドライブを入れます:
mdadm -f /dev/md0 /dev/sda1RAIDから削除します:
mdadm -r /dev/md0 /dev/sda1再構築が自動的に開始されたことを確認し、再度監視して完了するまで待ちます:
watch cat /proc/mdstat(もちろん、CTRL + Cでプロセスを終了します)
最後に、新しいドライブ(/ dev / sdc)にブートローダー(grub)をインストールします:
grub-install /dev/sdc同じプロセスをシステムパーティションごとに繰り返します:
mdadm -add /dev/md0 /dev/sdd1mdadm -f /dev/md0 /dev/sdb1mdadm -r /dev/md0 /dev/sdb1再度、再構築が完了するまで待ちます:
watch cat /proc/mdstat(もちろん、CTRL + Cでプロセスを終了します)
次に、2つの新しいドライブの最初のスワップパーティションに対して同じ手順を行います:
mdadm -add /dev/md1 /dev/sdc2mdadm -f /dev/md0 /dev/sda2mdadm -r /dev/md0 /dev/sda2再構築が完了するまで待ちます:
watch cat /proc/mdstat(もちろん、CTRL + Cでプロセスを終了します)
最後のドライブ:
mdadm -add /dev/md1 /dev/sdd2mdadm -f /dev/md0 /dev/sdb2mdadm -r /dev/md0 /dev/sdb2再構築が完了するまで待ちます:
watch cat /proc/mdstat(もちろん、CTRL + Cでプロセスを終了します)
この時点で、両方のドライブにブートローダーを再インストールします:
grub-install /dev/sdcgrub-install /dev/sddこの時点で、古いドライブはRAIDから排除され、新しいドライブが装着されて稼働しています。しかし、パーティションによって許可される最大の空きスペースの下に使用可能なスペースがあります。
次に、パーティションの拡張とその確認を、通常通り両方のボリュームに対して行います:
mdadm —grow —raid-devices=2 /dev/md0mdadm -A —scanmdadm —grow /dev/md0 —size=maxmdadm —examine —scane2fsck -f /dev/md0resize2fs /dev/md0mdadm —grow —raid-devices=2 /dev/md1mdadm -A —scanmdadm —grow /dev/md1 —size=maxmdadm —examine —scane2fsck -f /dev/md1resize2fs /dev/md1完了したら、PCの電源を切り、古いドライブの接続を外し、マシンを再起動します。
再起動が正常に行われた場合でも、新しいドライブの起動時に古いドライブ(sdaおよびsdb)の名前を引き継ぐため、セキュリティ上の理由からgrubを再構築します:
mv /boot/grub/device.map /boot/grub/device.map.oldgrub-mkdevicemapupdate-grub2 && grub-install /dev/sda && grub-install /dev/sdb新しいRAIDセットアップが正常に動作していることを絶対に確認したい場合は、マシンをシャットダウンし、新しいドライブの1つを切断して再起動します。問題なく起動するはずです。その後、再度シャットダウンし、ドライブを接続して起動します。このコマンドを使用してRAIDの状態を確認できます。
watch cat /proc/mdstat(もちろん、CTRL + Cでプロセスを終了します)
作業が完了しました、祝います。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。