前提と重要ポイント
- この手順はmdadmで管理されたRAID(例: /dev/md1)上にLVMが存在する環境を想定します。用語: RAID(冗長ストレージ)、LVM(論理ボリューム管理)。
- 重要: 取り外した物理パーティションのスーパーブロックを必ずゼロ化します。忘れるとシステムが起動しなくなる可能性があります。
- 変更作業はrootで行ってください。必ず最新のバックアップを取ってから実行してください。
手順概要
- /dev/sda5 をアレイから故障・削除する
- /dev/sda5 のスーパーブロックをゼロ化する
- rescueシステムでモジュール有効化、RAIDとLVMをアクティベートする
- mdadmでアレイを最大サイズに拡張する
- pvresizeでPVを拡張し、lvextendでLVを拡張する
- ファイルシステムをチェック・拡張する
- 元のディスクをアレイに再追加して同期を確認する
具体的なコマンド手順
まず、/dev/sda5 が本当に配列から外れていることを確認してから以下を実行します:
mdadm --manage /dev/md1 --fail /dev/sda5
mdadm --manage /dev/md1 --remove /dev/sda5
取り外したら、スーパーブロックを必ずゼロ化します(これが重要です):
mdadm --zero-superblock /dev/sda5
次にrescue環境で起動し、必要なカーネルモジュールを読み込みます:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
RAID情報を保存してからアレイをアクティベートします:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
LVMを開始します:
/etc/init.d/lvm start
ここでアレイを最大まで拡張します(–size=max は可能な限り大きくする指定):
mdadm --grow /dev/md1 --size=max
必要に応じて数値(KiB単位)を指定することもできます(前章参照)。
PVを拡張します:
pvresize /dev/md1
VGの状態を確認します:
vgdisplay
例: 出力サンプル
root@Knoppix:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 29
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 4.75 GB
PE Size 4.00 MB
Total PE 1217
Alloc PE / Size 1023 / 4.00 GB
Free PE / Size 194 / 776.00 MB
VG UUID X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0
root@Knoppix:~#
上記の例では194個のPE(パーティションエクステント)が空いています。これをroot LVに割り当てます:
lvextend -l +194 /dev/server1/root
ファイルシステムの整合性チェックと拡張を行います:
e2fsck -f /dev/server1/root
resize2fs /dev/server1/root
e2fsck -f /dev/server1/root
最後に通常システムで再起動して、/dev/sda5 をアレイに戻します:
mdadm --zero-superblock /dev/sda5
mdadm -a /dev/md1 /dev/sda5
同期状況を確認:
cat /proc/mdstat
これで /dev/sdb5 と /dev/sda5 が同期中であることが確認できます。
ロール別チェックリスト
- オペレータ
- バックアップの有無を確認する
- メンテナンスウィンドウを通知する
- システム管理者
- mdadm, lvm2 パッケージのバージョン確認
- 現在のmdadm構成を保存 (/etc/mdadm/mdadm.conf_orig)
- 各コマンドの出力ログを保存
- QA/運用監視
- /proc/mdstat の同期完了を確認
- システム起動後のログ (/var/log/syslog 等) を確認
失敗するケースと対処(逆例)
- スーパーブロックをゼロ化しない
- 結果: 再追加時に既存のメタデータが原因でアレイが壊れる可能性。必ず –zero-superblock を実行。
- PVが期待通り拡張されない
- 問題: mdadmのgrowが失敗している。mdadm –detail /dev/md1 で状態を確認し、パーティションテーブルのずれをチェック。
- ファイルシステムがresize2fsでエラー
- e2fsckで修復してから再試行。必要ならばマウント解除して実行。
代替アプローチ
- 新しいディスクを追加してRAIDを再構築する(最小ダウンタイム、物理ディスクの交換が可能な場合)
- バックアップから新規構成でリストアする(重大な不整合や複雑なパーティションレイアウトがある場合)
- LVMのみ拡張可能か検討(RAID構成を変えることなくPV追加が可能なら手順簡略化)
ミニ手順まとめ(チェックリスト)
- バックアップ取得
- /dev/sda5 を fail → remove
- mdadm –zero-superblock /dev/sda5
- rescueでモジュール読み込み、mdadm -A –scan、/etc/init.d/lvm start
- mdadm –grow –size=max
- pvresize /dev/md1
- lvextend -l +
/dev/ / - e2fsck → resize2fs → e2fsck
- 再起動して mdadm -a でディスクを戻す
- cat /proc/mdstat で同期確認
リスクと緩和
- リスク: スーパーブロック処理忘れ → 緩和: 作業手順にチェック項目を追加し、実行ログを保存
- リスク: 停止時間の長期化 → 緩和: 事前に同期状況と再同期にかかる予測時間を監査
- リスク: 誤ったLVを拡張 → 緩和: lvdisplay/vgdisplayで対象を二重チェック
受入基準
- mdadmで配列が正常にResync完了していること
- vgdisplayで割り当てたPEが反映されていること
- ファイルシステムが期待サイズに拡張され、マウント後に読み書き可能であること
- システムが通常通り起動すること
用語集(1行)
- mdadm: Linux上でソフトウェアRAIDを管理するツール
- PV/ VG/ LV: LVMの物理ボリューム/ボリュームグループ/論理ボリューム
参考リンク
- Knoppix: http://www.knoppix.net/
まとめ: 本手順はRAID+LVM環境で物理ディスクを一時的に取り外して容量を拡張する標準的な方法です。作業前にバックアップとログ保存を徹底し、各ステップで状態確認を行ってください。
著者
編集