Ubuntu 8.04でソフトウェアRAID1をインストールする方法
Ubuntu 8.04のインストーラで手動パーティショニングを選び、各ディスクに同じパーティション(ルートとスワップ)を作成して、それらを「physical volume for RAID」に設定します。インストール中に「Configure Software RAID」を使ってRAID1デバイス(md0, md1など)を作成し、mdadmで監視・故障対応・再同期を行います。起動可能にするために各ディスクへGRUBをインストールし、/etc/mdadm/mdadm.confを更新してinitramfsを再生成してください。
重要: ここで扱う手順は古いUbuntu 8.04向けです。手順やUIは新しいバージョンで異なります。重要なデータは必ず事前にバックアップしてください。
概要
このガイドは、Ubuntu 8.04(Hardy Heron)インストール時にソフトウェアRAID1(ミラーリング)を構成する手順、起動可能にする方法、障害時の対応(ドライブ交換、再同期)および運用上の注意点を包括的に説明します。
定義(1行ずつ)
- RAID1: 2台以上のディスクに同じデータを書き、片方が壊れても動作を続けるミラーリング。
- mdadm: LinuxでソフトウェアRAIDを管理するコマンドラインツール。
- mdデバイス: /dev/md0 のように作られるRAIDデバイス。
前提条件
- 対象サーバーに少なくとも2台のハードディスクが接続されていること(例: /dev/sda, /dev/sdb)。
- インストール時に手動パーティショニングができること。
- 重要データのバックアップがあること。
インストール中の手順(要点)
以下はインストーラ内での操作手順を順を追って書いたものです。UIラベルはインストーラの英語表記を示します。
- 「Partition Disks」ダイアログで「Manually edit the partition table」を選択します。
- 最初のディスク(/dev/sda)を選択します。
- 「Create a new empty partition table on this device?」に対して「Yes」を選び、空のパーティションテーブルを作成します。
- ルート用に十分なサイズのプライマリパーティションを1つ作成します(例: sda1)。
- 「How to use this partition」ではデフォルトの「Ext3 journaling file system」ではなく「physical volume for RAID」を選択します。
- パーティションフラグでブート可能(bootable)にします。
- 残りのディスク領域を使って別のプライマリパーティションを作成します(後でスワップに使用します、例: sda2)。
- ここでも「How to use this partition」で「physical volume for RAID」を選択します(この段階では「swap area」を選ばないこと)。
- 以上と同じ手順を2台目のディスク(/dev/sdb)に対して繰り返し、同一レイアウトのパーティションを作成します。両方のドライブのパーティション1をブート可能にマークするのを忘れないでください。
- パーティション設定が終わったら、Partition Disksメインダイアログの上部で「Configure Software RAID」を選択します。
- 「Write the changes to the storage devices and configure RAID?」で「Yes」を選択します。
- 「Multidisk configuration actions」では「Create MD device」を選びます。
- 「Multidisk device type」では「RAID1」を選びます。
- 「Number of active devices for the RAID1 array」には「2」を入力します。
- 「Number of spare devices for the RAID1 array」には「0」を入力します。
- 「Active devices for the RAID1 multidisk device」の選択肢で /dev/sda1 と /dev/sdb1 の両方を選択し、mdデバイス(例: /dev/md0)を作成します。
- 同様に /dev/sda2 と /dev/sdb2 を使って別のmdデバイス(例: /dev/md1)を作成します。
- 最後に「Multidisk configuration actions」で「Finish」を選び、パーティション画面に戻ります。
次に、md0 をルート(/)に、md1 をスワップにマウントする設定を行います。
- Partition Disksの画面でRAIDデバイス(RAID device #0 など)を選び、適切な番号(#1など)にカーソルを合わせます。
- デバイスの使用法をExt3ファイルシステムでマウントポイント「/」に設定します(md0)。
- md1はswapとして設定します。
重要: /boot を別パーティションにする手法もありますが、Ubuntu 8.04の標準GRUBでmd RAID1上の/bootから起動できることを想定しています。環境によっては/bootを非RAIDな単一パーティションに分ける方が簡単です。
全ドライブを起動可能にする
インストール後、両方のディスクにGRUBをインストールしておくと、片方が死んだときにもう片方から起動できます。インストール直後に以下の手順を実行してください(root 権限で実行)。
ブートしたUbuntuでGRUBを起動します:
grub
GRUBプロンプト内で(例として第2ディスクを設定):
device (hd1) /dev/sdb
root (hd1,0)
setup (hd1)
quit
上の例は、/dev/sdb(GRUB上の hd1)にGRUBをインストールする手順です。両方のディスクに対して同様に行ってください。
GRUBに第2ドライブ用のブートエントリを追加する
メニューに予備のエントリを入れておくと、/dev/sdaが故障した場合に手動で選べます。/boot/grub/menu.lst を編集します:
vi /boot/grub/menu.lst
例(既存のカーネル名に合わせて kernel/initrd を変更してください):
### To boot if sda fails ###
title Ubuntu 8.04.1, kernel 2.6.24-19-generic /dev/sda fail
root (hd1,0)
kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/md0 ro quiet splash
initrd /boot/initrd.img-2.6.24-19-generic
### End mod ###
このエントリは sda が故障した際に sdb から起動するための予備です。カーネルとinitrdのファイル名は環境によって異なるので置き換えてください。
mdadm による監視と手動でのドライブ除外
小さなI/Oエラーが続くとパフォーマンスが劣化することがあります。mdadmで明示的に故障扱いにして取り除くことができます。例:
mdadm --fail /dev/md0 /dev/sda1
mdadm --fail /dev/md1 /dev/sda2
その後、パーティションを配列から取り除きます:
mdadm --remove /dev/md0 /dev/sda1
mdadm --remove /dev/md1 /dev/sda2
取り除いたら、サーバをシャットダウンして故障ディスクを取り替えます。
重要: コマンドの実行前に必ず /proc/mdstat と mdadm –detail で配列の状態を確認してください。
故障ドライブを交換する標準作業手順(SOP)
このSOPは運用現場で使えるチェックリストです。
手順:
- まず現在のRAID状態を確認:
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
- 故障と判断したら該当パーティションをfailに設定:
mdadm --fail /dev/md0 /dev/sdXN
mdadm --fail /dev/md1 /dev/sdYN
- 取り除く:
mdadm --remove /dev/md0 /dev/sdXN
mdadm --remove /dev/md1 /dev/sdYN
- サーバをシャットダウンして物理的にディスクを交換。
- 新しいドライブを接続したら電源を入れ、パーティションを作成(既存ディスクと同一のレイアウトを作る)。
- 手動で fdisk を使ってパーティションを作るか、同一モデルなら sfdisk でコピーします:
sfdisk -d /dev/sdb | sfdisk /dev/sda
警告: コピー元とコピー先を間違えるとデータを消してしまいます。必ずデバイス名を2重に確認してください。
- 新しいパーティションを配列に追加:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
- 再同期の進捗を監視:
watch -n 5 cat /proc/mdstat
- 再同期が完了したら、/etc/mdadm/mdadm.conf を更新して initramfs を再生成し、GRUBを再インストール(必要に応じて)します:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
# 両方のディスクにGRUBをインストール
grub
device (hd0) /dev/sda
root (hd0,0)
setup (hd0)
device (hd1) /dev/sdb
root (hd1,0)
setup (hd1)
quit
注意: mdadm –detail –scan を実行する前に既存の mdadm.conf をバックアップしてください。
モニタリングと診断コマンド
- RAIDの概要:
cat /proc/mdstat
- 詳細情報:
mdadm --detail /dev/md0
mdadm --detail /dev/md1
- 監視プロセスが稼働しているか(Ubuntuはデフォルトでmdadmのmonitorを動かす):
ps aux | grep mdadm
- スマート情報(ドライブ個別):
smartctl -a /dev/sda
注意: SMARTは故障を完全に予測するものではありません。異常がないからといって必ずしも安全とは限りません。
テスト手順と受け入れ基準(Критерии приёмки)
テスト手順:
- 通常起動を確認する(/dev/md0 が / にマウントされている)。
- /dev/sda をBIOSで無効にするかケーブルを外して、/dev/sdb から正常に起動するか確認する。
- /dev/sda を戻して、配列が自動的に再同期または手動で追加できることを確認する。
- mdadm の監視メール(root宛)設定が有効であることを確認する。
受け入れ基準:
- どちらのディスクからもシステムが起動できる。
- mdadm –detail が RAID1 として Clean または Active を示す。
- 再同期後、/proc/mdstat が clean を示す。
代替アプローチといつ使うか(比較)
ハードウェアRAID: ハードウェアRAIDコントローラはOSから隠蔽された冗長性を提供します。大規模環境やホットスペア・バッテリキャッシュが必要な場合はハードウェアRAIDを検討してください。ただしコストが高く、ベンダーに依存する点があります。
LVMミラー: LVMを使ってミラーを作ることもできます(LVMミラーは柔軟なスナップショット運用に向く)。ソフトウェアRAIDよりも管理が複雑になる場合があります。
単純なバックアップ+復旧: ミラーリングよりもバックアップ運用で十分な場合もあります。可用性要件と復旧時間(RTO)を基に判断してください。
よくある問題と対処(トラブルシューティング)
問題: 配列がdegradedだが、mdadmが自動でドライブを外さない。
対処: 手動で –fail して –remove し、交換手順を実行します。I/Oエラーが頻繁に出る場合はSMARTログを確認します。
問題: ブートしない/GRUBエラー。
対処: 片方のディスクでGRUBを正しくインストールしているか確認し、必要なら両方にインストールします。menu.lst の root 指定と kernel の root=/dev/md0 指定が正しいか確認してください。
問題: 新しいディスクにパーティションが正しくコピーできない。
対処: sfdisk を使う際はコマンドとデバイス名を慎重に確認。失敗した場合は fdisk で手動で作るか、既存のドライブのパーティション情報を参照して同じセクタを指定します。
セキュリティと運用上の注意点
- /etc/mdadm/mdadm.conf を最新版に保ち、initramfs を更新しておきます。
- mdadm の監視(monitor)を有効にして、障害発生時の通知先(root 以外に管理者メール)を設定してください。
- RAIDは冗長化を提供しますがバックアップの代替ではありません。重要データは別のバックアップ戦略を必ず持ってください。
役割別チェックリスト(短いSOP)
システム管理者:
- インストール前にハードウェアとBIOS設定を確認。
- インストール後に両ディスクへGRUBをインストール。
- mdadm.conf を更新してinitramfsを再生成。
運用担当者:
- /proc/mdstat を定期チェック。
- mdadm monitor のアラートメールを確認。
- 定期的にSMARTログを収集。
オンコール担当者:
- 障害発生時はまず状態確認(cat /proc/mdstat)。
- 必要なら –fail と –remove を実行し、交換手順に従う。
互換性と移行のポイント
- Ubuntu 8.04は古いリリースです。新しいUbuntuへ移行する場合は、RAID設定を維持するためにmdadm.conf をエクスポートして新システムに持ち込むと移行がスムーズです。
- GRUBのバージョン差、initramfsの取り扱い、デバイス名の変更(/dev/sdX の並び替え)に注意してください。UUIDやLABELを使ったfstabの記述はより安全です。
まとめ
- Ubuntu 8.04のインストール時に手動パーティショニングで「physical volume for RAID」を選び、同一パーティションを両ディスクに作成してRAID1(md0, md1など)を構成します。
- インストール後は両ドライブにGRUBをインストールし、/etc/mdadm/mdadm.conf を更新してinitramfsを再生成してください。
- 障害発生時は mdadm –fail / –remove を使い、交換後に mdadm –add で再同期します。
- RAIDは可用性を高めますがバックアップの代替にはなりません。
重要: ここに示したコマンドや手順は実行前に必ず自分の環境で確認してください。誤ったデバイス名の指定はデータ消失につながります。
短いチェックポイント(要確認):
- 両ドライブのパーティションが同一か
- mdadm 配列が Active / Clean か
- 両ドライブにGRUBがインストールされているか
- mdadm monitor のアラート先が設定されているか