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/sdc

nコマンドで新しいパーティションを作成し、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/sda1

RAIDから削除します:

mdadm -r /dev/md0 /dev/sda1

再構築が自動的に開始されたことを確認し、再度監視して完了するまで待ちます:

watch cat /proc/mdstat

(もちろん、CTRL + Cでプロセスを終了します)

最後に、新しいドライブ(/ dev / sdc)にブートローダー(grub)をインストールします:

grub-install /dev/sdc

同じプロセスをシステムパーティションごとに繰り返します:

mdadm -add /dev/md0 /dev/sdd1
mdadm -f /dev/md0 /dev/sdb1
mdadm -r /dev/md0 /dev/sdb1

再度、再構築が完了するまで待ちます:

watch cat /proc/mdstat

(もちろん、CTRL + Cでプロセスを終了します)

次に、2つの新しいドライブの最初のスワップパーティションに対して同じ手順を行います:

mdadm -add /dev/md1 /dev/sdc2
mdadm -f /dev/md0 /dev/sda2
mdadm -r /dev/md0 /dev/sda2

再構築が完了するまで待ちます:

watch cat /proc/mdstat

(もちろん、CTRL + Cでプロセスを終了します)

最後のドライブ:

mdadm -add /dev/md1 /dev/sdd2
mdadm -f /dev/md0 /dev/sdb2
mdadm -r /dev/md0 /dev/sdb2

再構築が完了するまで待ちます:

watch cat /proc/mdstat

(もちろん、CTRL + Cでプロセスを終了します)

この時点で、両方のドライブにブートローダーを再インストールします:

grub-install /dev/sdc
grub-install /dev/sdd

この時点で、古いドライブはRAIDから排除され、新しいドライブが装着されて稼働しています。しかし、パーティションによって許可される最大の空きスペースの下に使用可能なスペースがあります。

次に、パーティションの拡張とその確認を、通常通り両方のボリュームに対して行います:

mdadm —grow —raid-devices=2 /dev/md0
mdadm -A —scan
mdadm —grow /dev/md0 —size=max
mdadm —examine —scan
e2fsck -f /dev/md0
resize2fs /dev/md0
mdadm —grow —raid-devices=2 /dev/md1
mdadm -A —scan
mdadm —grow /dev/md1 —size=max
mdadm —examine —scan
e2fsck -f /dev/md1
resize2fs /dev/md1

完了したら、PCの電源を切り、古いドライブの接続を外し、マシンを再起動します。

再起動が正常に行われた場合でも、新しいドライブの起動時に古いドライブ(sdaおよびsdb)の名前を引き継ぐため、セキュリティ上の理由からgrubを再構築します:

mv /boot/grub/device.map /boot/grub/device.map.old
grub-mkdevicemap
update-grub2 && grub-install /dev/sda && grub-install /dev/sdb

新しいRAIDセットアップが正常に動作していることを絶対に確認したい場合は、マシンをシャットダウンし、新しいドライブの1つを切断して再起動します。問題なく起動するはずです。その後、再度シャットダウンし、ドライブを接続して起動します。このコマンドを使用してRAIDの状態を確認できます。

watch cat /proc/mdstat

(もちろん、CTRL + Cでプロセスを終了します)

作業が完了しました、祝います

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。