CentOS 5 でmdとLVMを使用してパーティション

HP ProLiant ML115 G1 には CentOS 5.1 を入れることにした。Red Hat Enterprise Linux 5.2 がすでにリリースされているけれど、CentOS 5.2 のリリースまで待っていることもなかろうということで。後ほどさくっとyumで5.2にはアップデートする予定だ。

さて、前回の CentOS 4 でのパーティションに関する記事のページビューが良いので、この記事で CentOS 5 で更新しておく。今回作成するRAID構成は以下のとおり。

デバイス名 RAIDレベル RAIDデバイス名 容量 使用方法
/dev/sda1 1 /dev/md0 100MB /boot
/dev/sdb1
/dev/sdc1
/dev/sda2 5 /dev/md1 932GB LVM PV
/dev/sdb2
/dev/sdc2
/dev/sdd1 なし /dev/sdd1 932GB /var/bak

LinuxのソフトウェアRAIDはブート時(/boot読込み時)にはRAIDになっていないため、単一ディスクからでは正しく読み込めないRAID5にはできないので、/boot用にRAID1(ミラーリング)の/dev/md0を作成する。なお、2本のRAID1に1本のスペア構成のほうが書込み性能は有利な気がするけど、/bootには大して書き込みはないので、シンプルに3本でRAID1にした。

/dev/md1は500GBの Western Digital Caviar SE16 500GB WD5000AAKS から/dev/md0分の100MBを引いたものを3本で構成している。この/dev/md0をLVMの物理ボリューム(PV)としてLVMを作成する。

/dev/sdd1は/dev/md1のバックアップ先で、Western Digital Caviar GP 1TB WD10EACS をそのまま使用する。/dev/sdd1を/dev/md1に含めることも可能だが、できるだけ疎結合のほうが復旧が楽なので。

LVMを使用したパーティション構成は以下のとおり。

PV VG名 LV名 容量 マウント・ポイント
/dev/md1 VGsystem LVroot 1024MB /
LVhome 128MB /home
LVopt 32MB /opt
LVtmp 512MB /tmp
LVusr 3072MB /usr
LVlocal 32MB /usr/local
LVvar 512MB /var
LVswap 1024MB スワップ領域

PVが一つなのでボリューム・グループ(VG)も一つとして、そこにすべての論理ボリューム(LV)を作成する。今回インストールするOSはXenのDomain-0として動作するために使用可能メモリーは512MBに抑えるので、/tmpはメモリー同量の512MB、スワップ領域はメモリー容量の2倍の1GBとした。

まずはパーティションが何もない状態。/dev/sda、/dev/sdb、/dev/sdcの3台は容量476,940MBで、/dev/sddは953,869MBである。

パーティションが何もない状態

ボタン「新規」をクリックし、「ファイルシステムタイプ」を「software RAID」、使用可能なドライブで「sda」、容量「100MB」、追加容量オプション「固定容量」、/bootに利用するパーティションは必ず「基本パーティションにする」をオンにして、ボタン「OK」をクリックする。これで/dev/sda1ができた。

/dev/sda1を作成

使用可能なドライブで「sdb」を選ぶ以外は全く同じことをもう一度し、/dev/sdb1も作る。同様に/dev/sdc1も作る。これで下記のような状態となる。

/dev/sda1、/dev/sdb1、/dev/sdc1完成

ボタン「RAID」をクリックし、「RAIDデバイスを作成します」を選択して、ボタン「OK」をクリック。

RAIDデバイスを作成

マウントポイントを「/boot」、ファイルシステムを「ext3」、RAIDデバイス「md0」、RAIDレベル「RAID1」、RAIDメンバーで先ほど作った「sda1」「sdb1」「sdc1」を選び、ボタン「OK」をクリック。ここでスペア数を1にすると2本のRAID1と1本のスペアという構成になるが、今回は3本のRAID1と0本のスペアという構成にしている。

/dev/md0を作成

RAID1で構成された/bootができた。

/dev/md0完成

sda1 / sdb1 / sdc1を作ったときと同様に、残りでsda2 / sdb2 / sdc2を作ろう。「追加容量オプション」で「最大許容量まで使用」にすることで「容量」の設定を無視して全て使ってくれる。

/dev/sda2を作成

sda2 / sdb2 / sdc2 ができると以下のような感じ。

/dev/sda2、/dev/sdb2、/dev/sdc2完成

md0を作ったのと同じ手順でmd1を構成しよう。ただし、「ファイルシステム」は「physical volume(LVM)」に、RAIDレベルは「RAID5」にする。

/dev/md1を作成

RAID5で構成されたPVができら、md1を選択してボタン「LVM」をクリック。「ボリュームグループ名」を「VGsystem」とし、「物理エクステント」を「32MB」、「使用する物理ボリューム」を「md1」にする。LVは物理エクステント(PE)の容量単位での増減となるが、一つのLVが持てるPE数は最大65,536個なので、32MBだと2TBまでのLVが作れることになる。

VGsystemを作成

LVを作成しよう。「論理ボリューム」のボタン「追加」をクリックし、「マウントポイント」を「/」、「ファイルシステムタイプ」を「ext3」、「論理ボリューム名」を「LVroot」、「容量」を「1024」にして、ボタン「OK」をクリック。

LVrootを作成

同様の作業を繰り返してほかのLVも作成する。ただし、swapのみは「ファイルシステムタイプ」を「swap」に。「マウントポイント」は自動的に設定できなくなる。

すべてのLV完成

ボタン「新規」をクリックし、マウントポイント「/var/bak」、「ファイルシステムタイプ」を「ext3」、使用可能なドライブで「sdd」、追加容量オプション「最大許容量まで使用」にして/dev/sdd1を作成する。

/dev/sdd1を作成

これにて当初予定していたすべてのパーティションが作成された。

すべてのパーティション完成

このままインストール・プロセスを完了し、OSが起動するようになったら以下の手順で/dev/sdbと/dev/sdcのMBRにもGRUBをインストールしておかないと/dev/sdaが故障したときに立ち上がらなくなってしまう。詳細は MIRACLE LINUX: ブートディスクをソフトウェア RAID 1 (ミラーリング) に構成する際の注意 を参照してほしい。

# grub grub> device (hd0) /dev/sdb grub> root (hd0,0) grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf grub> device (hd0) /dev/sdc grub> root (hd0,0) grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf grub> quit

万が一この手順をやらずに/dev/sdaが故障してしまった場合は、DVDなどから linux rescue で起動し、以上のコマンドを実行すれば/dev/sdbから起動できる。

CentOS 5 でmdとLVMを使用してパーティション への2件のコメント

  1. NEC Express 5800 110Gd + CentOS 5 という環境ですが、わかりやすい説明のおかげでRAID + LVM化が旨くゆきました。

    HDD(160GB) * 4 を使い、
    /dev/md0: RAID1 * 3 + スペア
    /dev/md1: RAID6 * 4
    /dev/md1 -> LVM
    という構成です。
    # パーティショニング後、/dev/md1 = 300GB強

    とりあえず最小限の容量を確保しといて、必要に応じて増やしてゆく方法にしました。

    パーティションの設計(容量見積り?)は、インストールのたびに悩むところですが、LVM は便利ですね。

    MBR へのGRUB のインストールについても参考になりました。
    ありがとうございました。

  2. > とりあえず最小限の容量を確保しといて、必要に応じて増やしてゆく方法にしました。

    ボクも最小容量から徐々に増やしていく派で、勝手にAIX流と読んでいます。ま、AIXのLVMの場合は増やすのはできるけど減らせないために最小容量から始めざるを得ないのですが。

    ボクもスモール・スタートではじめられて柔軟に構成できるLVMが大好きです。やっぱインフラ回りは仮想化ですね。「リカバリが難しい」なんてことで避けてはいけません。