RAID+LVM (2/2)
前回 からの続き. md アレイ上に LVM を設定し,ファイルシステムを作成する.
LVM の設定
EtchインストーラでインストールしたシステムでLVMを使うには,単にlvm2
パッケージをapt-get
すれば良い.
# apt-get install lvm2
作成したmdアレイをPVとし,それを使ってVGを作る.
# lvm pvcreate /dev/md1
# lvm vgcreate PeteVG01 /dev/md1
# lvcreate -n PeteLV_SWAP --size 4G PeteVG01 (swap 用)
# lvcreate -n PeteLV_ROOT --size 10G PeteVG01 (/ 用)
# lvcreate -n PeteLV_VAR --size 10G PeteVG01 (/var 用)
# lvcreate -n PeteLV_HOME --size 20G PeteVG01 (/home 用)
# lvcreate -n PeteLV_STORAGE --size 188G PeteVG01 (残り)
md1
上に0x8e
(Linux LVM) タイプのパーティションを作ったほうが良いのかとも思ったが,
Web上の事例の多くはmdアレイをPVにしているようだ.
ファイルシステムの設定
作成したLVの上にファイルシステムを作成していく. まずはSwap領域を作成し,有効化する.
# mkswap -L SWAP /dev/PeteVG01/PeteLV_SWAP
# swapon /dev/PeteVG01/PeteLV_SWAP
その他のファイルシステムを作成する.
# mkfs.ext3 -L ROOT PeteLV_ROOT
# mkfs.ext3 -L VAR PeteLV_VAR
# mkfs.ext3 -L HOME PeteLV_HOME
# mkfs.ext3 -L STORAGE PeteLV_STORAGE
上記のファイルシステムをシステム起動時にマウントするようにfstab
を編集する.
# vi fstab
....
LABEL=SWAP none swap sw 0 0
LABEL=ROOT / ext3 defaults,errors=remount-ro,noatime 0 1
LABEL=BOOT /boot ext3 defaults,errors=remount-ro,noatime 0 2
LABEL=VAR /var ext3 defaults,noatime 0 2
LABEL=HOME /home ext3 defaults,noatime 0 2
none /tmp tmpfs defaults,size=256m 0 0
none /mnt/ftp tmpfs defaults,size=256m 0 0
ラベル名ベースの設定をしてみたが,これだとこのディスクを別のシステムにマウントしたときに名前空間が衝突しそうだ.
ファイルシステムの中身の書き換え
現在はLABEL=BOOT
パーティションを/
として使っているので,その内容をLABEL=ROOT
とLABEL=VAR
にコピーする.
この作業はオンラインでは出来ないので,インストールCDのrescueモードなどを使って行う.
rescueモードはmdadm
などのユーティリティを備えており,思いのほか便利だ.
boot: rescue pci=nommconf
...
(snip)
...
sh# mdadm --assemble --scan (これで md0, md1 が再構築される)
sh# (cp 等でコピー)
LABEL=BOOT
の内容も変更し,/boot
化する.
sh# mount -t ext3 /dev/md0 /boot
initrdの再構築
RAID上のLVをルートパーティションに指定した場合,ブートプロセスにおいて以下の処理が必要になる.
- mdアレイの再構築
- LVMの再構築
これらはカーネルイメージのロード以前,すなわち initrd
が適切に行う必要がある.
Etchがデフォルトインストールするinitrd
は両者とも自動的に行ってくれるのだが,mdアレイの再構築に関してはinitrd
作成時に存在していたもののみ対象にするようだ.
よって,md1
作成後にinitrd
を再作成する.
# mkinitrd -o /boot/initrd.img-2.6.23-1-486-RAID 2.6.23-1-486
grubの設定
grubの設定も変更する. 具体的には,以下のポイントを修正する.
- カーネルイメージと
initrd
のパス (md0
が/
から/boot
に変更になっているため) - カーネルパラメタの
root
オプションの値
実際のgrubエントリは次のようになる.
カーネルのroot
オプションにLVを指定するときは,/dev/<VG>/<LV>
ではなくて
/dev/mapper/<VG>-<LV>
としなければうまくいかなかった.
title Debian GNU/Linux Etch (2.6.23-1-486)
root (hd0,0)
kernel /vmlinuz-2.6.23-1-486 root=/dev/mapper/PeteVG01-PeteLV_ROOT ro pci=nommconf VGA=771
initrd /initrd.img-2.6.23-1-486-RAID
また/boot
周辺が大幅に変更されているため,このままではgrubが関連ファイルを見つけられない.
現在の状態を反映させるため,grub
を再インストールする.
この操作は必ずLABEL=BOOT
を/boot
にマウントして行うこと.
# grub-install --root-directory=/ /dev/sda
これで全ての作業が完了したので,あとはシステムをリブートすれば良いはず.