« 2008年08月 | メイン | 2008年10月 »

2008年09月26日

HP DL360G5 + HP MSA1000 + CentOS 5 + LVM

先日、サーバ:HP Proliant DL360 G5, ストレージ:HP MSA1000, OS:CentOS5.2 (i386)という環境を構築したのですが、ソフトウェアのインストールや設定を行う順序など、少し注意すべきポイントがあったので概要をまとめておきます。
(概要といいつつ)けっこう長くなってしまいました。
RedHat Enterprise Linux(RHEL)ではなく、CentOSでも問題なく動作しています。

  • 前提条件

    • サーバDL360 G5、ストレージサーバMSA1000の設置が完了していること。
    • MSA1000上の論理ドライブ作成が完了していること。
    • DL360 G5とMSA1000スイッチ間のファイバーのケーブリングが完了していること。

  • ポイント

    • OSをインストールする際は、ファイバーケーブルを外しておくこと。
    • RAID用のSmartアレイドライバは、RHEL5/CentOS5に同梱されている。
      (RedHat4には同梱されていなかった)
    • HPサポートパック(ProLiant Support Pack = PSP)のインストールが必要だが、その前に、カーネルほかのパッケージをアップデートしておいたほうがよい。つまり、インターネットに接続するためのネットワークの設定も行う。
    • PSPのインストール時、CentOS5をRHEL5だと思わせる設定が必要。
    • ファイバーチャネルのフェイルオーバー(Qlogic Failover)の設定が必要。

おおまかな手順は下記のとおりとなります。


  1. CentOS5のインストール
  2. ネットワークの設定
  3. ソフトウェアパッケージのアップデート
  4. HPサポートパック(PSP)のインストール
  5. ファイバーチャネルのフェイルオーバー(Qlogic Failover)の設定
  6. MSA1000上のディスク設定

■CentOS5のインストール
インストールの前に、サーバを停止した状態で、ファイバーケーブルを抜いておきます。
電源をONにして、あらかじめ用意したCentOS5のメディアでインストールを開始します。
なお、RHEL4までは、インストール開始の入力待ち状態のときに、事前に作成したRAID用のSmartアレイドライバーのディスケットを読み込ませる必要があったそうです。
RHEL5からはこのドライバーがOSに含まれるようになったため、不要となったようです。
念のため、事前にディスケットを用意していましたが、CentOS5.2でも同様に不要でした。

この、DL360 G5 + RHEL5用のSmartアレイドライバーに関する情報は以下にあります(32bit版)。

http://h50222.www5.hp.com/support/DUMDL360G5SVR/more_info_soar_MTX-1704d42bcb74489390637fbbf8.html

CentOS5をお好みの内容でインストールします。

(このサーバ、OSに限りませんが)インストール完了後は、OSから参照できるCPU, メモリ, ディスク, NICなどのスペック情報が正しいかどうか、確認するようにしています。


■ネットワークの設定
PSPをインストールする前に、カーネルほか、CentOS5のソフトウェアパッケージをアップデートしておくのが望ましいそうです。
yumコマンドでアップデートできるよう、ネットワークの設定を行い、インターネットにアクセスできるようにします。
必要に応じて、iptablesを使用してFirewallの設定を行うのもよいですね。


■ソフトウェアパッケージのアップデート
インストール済みのソフトウェアパッケージをすべてアップデートします。
yumコマンドを使用しますが、もっとも近くのミラーサイトを見つけてくれるfastestmirrorプラグインをインストールすると、アップデートに要する時間が短くて済みます。

# yum install yum-fastestmirror

全アップデートを実施します。

# yum update

CentOS5.2のメディアからインストールし全アップデートをかけると、2008年8月末の時点では3分程度で完了しました。


■HPサポートパック(PSP)のインストール
PSPは以下からダウンロードします。
2008年9月時点の最新版は、v8.1.0です。
http://h50222.www5.hp.com/support/DUMDL360G5SVR/more_info_soar_MTX-f1c0a8ddfbe04a049f30711816.html

rpm-devel、glibcなどがインストールされていないと、PSPのインストーラが起動しないため(PSPインストールスクリプト実行時にアラートで教えてくれます)、インストールします。

# yum install rpm-devel glibc

また、PSPインストールスクリプトの実行時は、OSのディストリビューションをRHEL5であると騙す必要があります。
/etc/redhat-release の内容を書き換えます。

-- /etc/redhat-release(変更前)
CentOS release 5.2 (Final)
--

-- /etc/redhat-release(変更後)
Red Hat Enterprise Linux ES release 5 (Tikanga)
--

なお、/etc/redhat-release の書き換えについては、以下を参考にさせていただきました。
ググッてみたところでは、Oracleのインストールなどでも同様の方法が使えるみたいです。

勢いで買ったHP Proliant ML150 - cys b:
http://d.hatena.ne.jp/yotena/20080119/1200715723

PSPインストールスクリプトを実行します。

# ./install810.sh

GUIではなく、キャラクターベースでインストールする場合は、--nuiオプションを付けて起動します。

# ./install810.sh --nui

必要なパッケージがインストールされていないときは、エラーメッセージで「〜をインストールしますか?」のような表示をされるので、「Y」を入力します。
インストール時はたくさん質問されますが、がんばって進んでいきます。
インストールログは、/var/log/hppldu.log にあります。

インストール完了後、OSを再起動します。
試しに、FirefoxなどのブラウザでHP System Management Homepage(SMH)を表示してみます。

https://localhost:2381/

ID、パスワードはOSのrootユーザのものを入力します。
サーバの情報が表示されればOKです。


■ファイバーチャネルのフェイルオーバー(Qlogic Failover)の設定
設定コマンドを実行します。

 # /opt/hp/src/hp_qla2x00src/set_param

1 の"XP/MSA/EVA FailOver" を選択し、

Would you like to create a new initrd to reflect the changes in the parameters (Y/n)?

は、Y を選択。
q "Quit" で終了します。


■MSA1000上のディスク設定
MSA1000上に作成した論理ディスクに対して、OSからパーティショニング、ファイルシステムの作成、マウントを行います。

まず、サーバを停止し、抜いておいたファイバーケーブルを挿し、サーバを起動します。
MSA1000での設定が正しく行われていれば、fdiskコマンドでディスクを確認できるはずです。
なお、HP ProLiantサーバでのデバイスファイル名は、下記のとおり割り当てられるそうです。


  • ProLiant内蔵Smart Arrayコントローラ配下のディスクは /dev/cciss/cXdY
  • FC HBA配下のFibre Channel接続の外部ストレージのディスクは /dev/sdX

(参考)[ThinkIT] 第1回:外部ストレージの設定と運用について (3/3):
http://www.thinkit.co.jp/cert/article/0604/1/1/3.htm

単純にext3のパーティションを作成するだけなら、下記の手順のとおりfdiskでパーティショニング→mkfsでファイルシステムを作成→マウントで終了です。

日本HP_Linux_技術文書_ドライバロード後の MSA1000セットアップ方法:
http://h50146.www5.hp.com/products/software/oe/linux/mainstream/support/doc/option/fibre/msa1000/setup_msa1000.html

せっかくなので、ディスク容量が足りなくなったときに容量を増やせるよう、LVMとします。
今回は、RAID後の実効サイズとして293GBの論理ディスクが見えているものとします。

LVMボリュームの作成については例えば、DBマガジン 2008/07号「Linux-DBサーバー構築入門 第2回 論理ボリュームマネージャ(LVM)を活用する」などが参考になります。

設定するLVMは下記のとおりです。


  • ボリュームグループ構成情報

    • ボリュームグループ名: VolGroup01
    • PEサイズ: 8MB
    • デバイスファイル: /dev/sda1

  • 論理ボリューム構成情報

    • ボリュームグループ名: VolGroup01
    • 論理ボリューム名: LVMTEST
    • 容量: すべて
    • マウントポイント: /mnt/test
    • タイプ: ext3

サーバからマウントするまで、下記の手順を行います。

(0)パーティショニング(fdisk)
(1)物理ボリュームの作成(pvcreate)
(2)ボリュームグループの作成(vgcreate)
(3)論理ボリュームの作成(lvcreate)
(4)ファイルシステムの作成(mkfs)
(5)マウント(mount)

・(0)パーティショニング(fdisk)

まず、fdiskで共有ストレージのディスクが見えていることを確認します。
以下、// の後はここで付与したコメントです。

 # fdisk -l /dev/sda

Disk /dev/sda: 293.6 GB, 293630238720 bytes
255 heads, 63 sectors/track, 35698 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/sda は正常な領域テーブルを含んでいません

fdiskコマンドで、/dev/sda のパーティションのシステムタイプをLVMとして保存します。

 # fdisk /dev/sda

デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 35698 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合に問題を生じうる事を
確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): p // パーティションテーブルを表示

Disk /dev/sda: 293.6 GB, 293630238720 bytes
255 heads, 63 sectors/track, 35698 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System

コマンド (m でヘルプ): n // 新しいパーティションを作成
コマンドアクション
e 拡張
p 基本領域 (1-4)
p // 基本領域を指定
領域番号 (1-4): 1 // 領域1を指定
最初 シリンダ (1-35698, default 1): // デフォルト1を指定
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-35698, default 35698):
  // 全サイズを1パーティションとするのでデフォルトの終点を指定
Using default value 35698

コマンド (m でヘルプ): p // パーティションテーブルを表示、
// 作成されたパーティションが表示されることを確認

Disk /dev/sda: 293.6 GB, 293630238720 bytes
255 heads, 63 sectors/track, 35698 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 1 35698 286744153+ 83 Linux

コマンド (m でヘルプ): t // システムタイプを指定
Selected partition 1
16進数コード (L コマンドでコードリスト表示): 8e
// LVMのシステムタイプコードは8e
領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました

コマンド (m でヘルプ): p // パーティションテーブルを表示
// システムタイプがLinux LVMとなっていることを確認

Disk /dev/sda: 293.6 GB, 293630238720 bytes
255 heads, 63 sectors/track, 35698 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 1 35698 286744153+ 8e Linux LVM

コマンド (m でヘルプ): w // 編集内容を保存して終了
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

これで、パーティション/dev/sda1 が作成されました。

・(1)物理ボリュームの作成(pvcreate)
作成したパーティションに対して、pvcreateコマンドで物理ボリュームを作成します。

 # pvcreate /dev/sda1

Physical volume "/dev/sda1" successfully created

ステータスを確認します。
物理ボリュームの一覧と割り当てサイズ(PSize)が確認できます。

 # pvs

PV VG Fmt Attr PSize PFree
/dev/sda1 lvm2 -- 273.46G 273.46G

 # pvdisplay /dev/sda1

"/dev/sda1" is a new physical volume of "273.46 GB"
--- NEW Physical volume ---
PV Name /dev/sda1
VG Name
PV Size 273.46 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID vM1W94-WagK-bWrO-wS9r-PxSX-vnCt-3Bafh8

・(2)ボリュームグループの作成(vgcreate)
vgcreateコマンドで、ボリュームグループVolGroup01を作成します。
-sオプションで指定するPEサイズ(physical extentサイズ)はデフォルト4MBですが、今回は8MBしました。

 # vgcreate -s 8M VolGroup01 /dev/sda1

Volume group "VolGroup01" successfully created

物理ボリュームのステータスを確認します。
(1)とは違い、VGのところにボリュームグループが表示されていることがわかります。

 # pvs

--
PV VG Fmt Attr PSize PFree
/dev/sda1 VolGroup01 lvm2 a- 273.46G 273.46G
--

ボリュームグループのステータスを確認します。

 # vgs

VG #PV #LV #SN Attr VSize VFree
VolGroup01 1 0 0 wz--n- 273.46G 273.46G

 # vgdisplay

--- Volume group ---
VG Name VolGroup01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 273.45 GB
PE Size 8.00 MB
Total PE 35002
Alloc PE / Size 0 / 0
Free PE / Size 35002 / 273.45 GB
VG UUID OLK8C9-U30i-kGRJ-7Akj-DtuK-W1gz-20XTA


・(3)論理ボリュームの作成(lvcreate)
lvcreateコマンドで、論理ボリュームを作成します。
-Lオプションでサイズを、-nオプションで論理ボリューム名を指定します。

 # lvcreate -L273.45G -n LVMTEST VolGroup01

Rounding up size to full physical extent 273.45 GB
Logical volume "LVMTEST " created

論理ボリュームのステータス確認します。

 # lvs

LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LVMTEST VolGroup01 -wi-a- 273.45G

 # lvdisplay

--- Logical volume ---
LV Name /dev/VolGroup01/LVMTEST
VG Name VolGroup01
LV UUID aZQEhU-Z1U7-afFO-bAXg-Vgdp-nPZ7-RU4cu9
LV Write Access read/write
LV Status available
# open 0
LV Size 273.45 GB
Current LE 35002
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

物理ボリュームのステータスを表示し、(1)(2)とは違い、物理ボリュームの
空き(PFree)がなくなったことを確認します。

 # pvs

PV VG Fmt Attr PSize PFree
/dev/sda1 VolGroup01 lvm2 a- 273.45G

ボリュームグループのステータスを表示し、(2)とは違い、空き容量(VFree)が
なくなったことを確認します。

 # vgs

VG #PV #LV #SN Attr VSize VFree
VolGroup01 1 1 0 wz--n- 273.45G 0

・(4)ファイルシステムの作成(mkfs)
mkfsコマンドで、論理ボリュームに対してext3でファイルシステムを作成します。

 # mkfs -t ext3 /dev/VolGroup01/LVMTEST

mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
35848192 inodes, 71684096 blocks
3584204 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
2188 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

・(5)マウント(mount)
mountコマンドで、ディレクトリ/mnt/test にマウントします。
/etc/fstab の末尾に追記します。

/dev/VolGroup01/TEST /mnt/test ext3 defaults 1 2

マウントポイントのディレクトリ作成し、マウントします。

 # mkdir -p /mnt/test
 # mount /dev/VolGroup01/LVMTEST

マウントされたかどうか、確認します。

 # df -h


Filesystem サイズ 使用 残り 使用% マウント位置
...
/dev/mapper/VolGroup01-LVMTEST
270G 192M 256G 1% /mnt/test

ためしに、一般ユーザで、該当ディレクトリにファイルを読み書きしてみます。
また、念のためOSを再起動して、正しくマウントされることを確認します。


以上でHP DL360 G5へのCentOS5のインストールと、MSA1000ディスク上へのLVMボリュームの作成およびマウントが完了となります。