debianの場合、一度インストールするとよほどの事が無い限りクリーンインストールをやり直す事はありません。それはそれでとても便利なのですが、新規でインストールをしてみると色々気がつくことが多いので、今回は最近メジャーバージョンアップされたsqueezuを新規にインストールしてみました。
インストールする物理マシンですが、今回は検証用なのでASUSのminiITX規格のマザーボードITX-220を用意しました。インストール用のCDはここを参照してjigdoを使ってCDイメージを作成します。
さて、インストール開始です。今回はHDDを2台接続しソフトウェアRAID1(ミラーリング)を構成します。
○インストール時のTips:
squeezuの場合、VGAはフレームバッファを使いますので、もし古いMB(マザーボード)とかでフレームバッファが使えないとなにやら画面の上の方に小さな字が表示されインストールが止まってしまいます。
この場合は、一度リスタートしてメニュー画面よりhelpを選びF8を押してください。この画面で例として表示されるコマンドを入力するとフレームバッファを使わないモードでインストーラーが立ち上がります。
install vga=normal fb=false
※但し、このモードでインストールを始めると最初に選択する『言語』に日本語がありませんので、English等でインストールを進めることになりますが、キーボードやLocationは日本語や日本を選べるので心配はありません。
インストラーが起動してインストールが始まってしまえば、あとはlennyとほとんど同じ手順で進みます。パーテションを決める場面でext4が使えるようになっているので、それを選んでみても良いかもしれません。
私が最小限のインストールで作成するパーテションは、/bootに256MB、swapに2GB程度、残りはロジカルボリューム(今回はテスト用なので10G)にして、そこにルートパーテションを作成します。
今回はソフトウェアRAIDを作成するので、fdisk -l した時の状況はこんな感じになります。
※テスト用なので250Gと500Gという変則的なHDD構成ですが、本番機なら同じ容量で違うメーカーのHDDを使うと良いですね。
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c9877
Device Boot Start End Blocks Id System
/dev/sda1 * 1 34 273073+ fd Linux raid autodetect
/dev/sda2 35 557 4200997+ fd Linux raid autodetect
/dev/sda3 558 1863 10490445 5 Extended
/dev/sda5 558 1863 10490413+ fd Linux raid autodetect
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x85e25474
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 34 273073+ fd Linux raid autodetect
/dev/sdb2 35 557 4200997+ fd Linux raid autodetect
/dev/sdb3 558 1863 10490445 5 Extended
/dev/sdb5 558 1863 10490413+ fd Linux raid autodetect
※ポイントはパーテション1(/bootに割り付ける)のブートフラグをONにすることと、使用するパーテションのIDをfd(ソフトウェアRAID用)にすることです。
※インストール時に決定するtaskselは、デスクトップは外してsshサーバ(+メニューの一番下のbasic system)を指定しておきます。
---------------------
はい、インストールが正常に終了し新しくインストールされたHDDで無事ブートしたとします。
まずは cat /proc/mdstat を見て、RAIDの構築が正常に終わっているか確認します。
Personalities : [raid1]
md2 : active raid1 sdb5[3] sda5[2]
9763768 blocks super 1.2 [2/2] [UU]
md1 : active (auto-read-only) raid1 sdb2[3] sda2[2]
3905524 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdb1[3] sda1[2]
248820 blocks super 1.2 [2/2] [UU]
※こんな感じに表示されていれば、正常にRAIDは稼働しています。
■インストール時にsdaのMBR(マスターブートレコード)にはgrubが書かれていますが、sdbのMBRには書かれていません。このままですと、仮にsdaのHDDが故障したときにsdbからはブート出来なくなるので、必ず下記コマンドを実行します。
grub-install /dev/sdb
update-grub
■ついでにUSBメモリーに新規にsqueezeをインストールしておくと、これからの検証が楽になりますので、作成しましょう。
※HDDを全て外し(SATAケーブルを抜くだけ)、USBメモリーを差して同じようにインストールします。
※USBメモリーは2Gもあれば十分です。
---------------------
さて、これでソフトウェアRAIDのテストを行う準備が出来ました。
テスト1 HDD のスワップ
1-1.マシンの電源が落として、sdaとsdbを入れ替えます(SATAケーブルを差し替える)。
1-2.電源をON
1-3.立ち上がったらdmesgを確認する。
[ 1.584485] ata3.00: ATA-8: Hitachi HDT721025SLA380, STBOA3AA, max UDMA/133
[ 1.584491] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 0/32)
[ 1.584722] ata3.01: ATA-8: WDC WD5000AAKX-001CA0, 15.01H15, max UDMA/133
[ 1.584727] ata3.01: 976773168 sectors, multi 16: LBA48 NCQ (depth 0/32)
[ 1.600479] ata3.00: configured for UDMA/133
[ 1.617241] ata3.01: configured for UDMA/133
[ 1.617397] scsi 2:0:0:0: Direct-Access ATA Hitachi HDT72102 STBO PQ: 0 ANSI: 5
[ 1.617887] scsi 2:0:1:0: Direct-Access ATA WDC WD5000AAKX-0 15.0 PQ: 0 ANSI: 5
[ 1.637083] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB)
[ 1.637163] sd 2:0:0:0: [sda] Write Protect is off
[ 1.637168] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 1.637202] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 1.637412] sda:
[ 1.652494] sd 2:0:1:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 1.652571] sd 2:0:1:0: [sdb] Write Protect is off
[ 1.652576] sd 2:0:1:0: [sdb] Mode Sense: 00 3a 00 00
[ 1.652610] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
1-4.cat /proc/mdstat を見てRAIDが稼働していることを確認する。
1-5.シャットダウンして電源が落ちたらSATAケーブルを元に戻す。
テスト2 sdbがフェイルしたとして再度RAIDを組み直す←これは簡単なので割愛ww
テスト3 sdaがフェイルしたとして再度RAIDを組み直す。
3-1.一度電源を落とし、sdbのHDDからSATAケーブルを抜く(MBのSATA2に接続されている)。
3-2.USBメモリーを接続し本体の電源を入れ、BIOS設定画面を出す。
3-3.起動ドライブをUSBメモリーのストレージにする。
3-4.保存して再起動する。
3-5.起動したらUSBメモリーから起動しているか確認する。
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb5 4.9G 824M 3.8G 18% /
tmpfs 1009M 0 1009M 0% /lib/init/rw
udev 1005M 168K 1005M 1% /dev
tmpfs 1009M 0 1009M 0% /dev/shm
/dev/sdb1 236M 20M 204M 9% /boot
【注意】この状態では、USBメモリーはsdbとして認識され、HDDは一台だけ接続されているので常にsdaになる。
※つまり、仮に3-1でsdaのケーブルを抜いて、sdbだけを残したとしてもUSBメモリーから立ち上がった時にはsdaとして認識される。
3-6.sdaが故障して新品に取り替えるという状況を作るので、sdaをまっさらにする。
3-7.fdisk /dev/sda で全てのパーテションを削除する。
3-8.dd if=/dev/zero of=/dev/sda bs=512 count=1 でMBRをクリアする←これ重要!!
3-9.シャットダウンして電源を切る。
ここからはRAIDの復旧操作となります。
3-10.USBメモリーを外し、3-1で接続を外していたSATAケーブルを再接続する。
3-11.sdaは空っぽなのでsdbよりブートするが、万一ブートしない場合はBIOSのbootメニューよりsdbに設定してあるHDDをブートディスクとして指定する。
3-12.ブートしたら cat /proc/mdstat で片肺で立ち上がっていることを確認する。
Personalities : [raid1]
md2 : active raid1 sdb5[3]
9763768 blocks super 1.2 [2/1] [U_]
md1 : active (auto-read-only) raid1 sdb2[3]
3905524 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sdb1[3]
248820 blocks super 1.2 [2/1] [U_]
3-13.fdisk /dev/sda で、必要なパーテションを作成する(ブートフラグを忘れずに!)
3-14.作成したパーテションをRAIDへ参加させる。
mdadam -a /dev/md0 /dev/sda1
mdadam -a /dev/md1 /dev/sda2
mdadam -a /dev/md2 /dev/sda5
3-15.RAIDの構築が終わったら、MBRを更新する。
grub-install /dev/sda
update-grub
3-16.システムを再起動する(もし、3-11で起動順を変えている場合は、必ずSATA1に接続されているHDDを起動ディスクとして指定する)。
3-17.システムが起動したら、HDDの起動順とかRAIDの状況などを確認する。
以上でRAIDの検証は終了です。
まとめとしては…
■SATAケーブルにはどれが1でどれが2か解るようにマーク(マジックで書く)しておく。
■全てSATAケーブルにHDDが接続されていればSATA1に接続されているHDDはsda、SATA2はsdbとなるが、1台しか接続されていない場合その接続されているHDDは常にsdaとなるので注意が必要。
■BIOSで起動順を変えた場合は、その後正常な状態に戻すのを忘れないように!
■新規インストールや、新品のHDDを接続してRAID1を構築した場合、MBRの作成を忘れずに!
■使用済みのHDDを使ってRAIDを再構築するときには、事前にパーテションとMBRをクリアしておく。
■USBメモリーに最小限のシステムをインストールしておくと、後で色々便利。