新規にハードウェアを用意

ESXi用

  • ケース・電源:Antec SONATA PLUSS 550 + フロントFAN 2個
  • マザーボード:Intel DQ45CB(M-ATA Q45チップセット)
  • CPU:Intel Core2Quad Q9650 3GHz
  • メモリ:Kingston KVR800D2N6K2/4G x 2セット 合計8GB
  • HDD:Hitachi HDT721010SLA360 1TB x 3個
  • RAIDコントローラー:Adaptec ASR-2405 RAID1構成
  • 5インチベイリムーバブルケース:Century CWRS2-SV 二台目技あり楽ラック x 3個
  • ドライブ:LG電子 GH22NS40 BL DVDスーパーマルチ
  • NIC:EXPI9400PT Intel PRO/1000 PT Server Adapter
  • USBメモリ:Imation 2GB 起動用

UPS監視用(FAXサーバー兼用)

  • ケース・電源:DIRAC Noah 800-W Rev1.5 ホワイト(M-ITX 80W ACアダプタ)
  • マザーボード・CPU:MSI Wind Boad 330 (ITX M/B ATOM330) (M-ITX Atom330)
  • メモリ:DDR2 667 512MB (そこらへんに余っていたもの)
  • FAXモデム:RATOC REX-USB56 USB接続FAXモデム
  • OS:WindowsXP

その他周辺機器

  • UPS:APC Smart-UPS 750 SUA750JB

 トラブル発生

ESXi用のPCを組み立てRAIDの設定をしようと思ったところRAID BIOSがでてこない。

RAIDコントローラー(ASR-2405 )は、PCI Express x 8 レーンのスロットに対応した製品で、DQ45CBの該当スロットは、グラフィックボード用の PCI Express x 16 しかなく、これで動作する事を願っていたのですが、RAID BIOS がでてこないので、やはり使用できないのかとあきらめかけていたところ、HDD LED を見ていると起動時にHDDをチェックにいっているような点滅があり、いろいろとマザーのBIOSをいじってようやく原因が判明。

どうもIntelのマザーは初期状態で、他社製の拡張ボードを入れた時に拡張ボードのBIOS表示をしない設定になっているようです。

BIOSのIntel VT の項目のあるメニューの中にそれらしき項目があり設定を変更し起動。無事RAID BIOS が表示されました。

ESXi用PCの構成

HDD故障時の事を考え、HDDは5インチベイにリムーバブルケースを取付。

HDD 1 と HDD 2 は RAIDコントローラーに接続しRAID1で構成。
HDD 3 はオンボードS-ATAに接続。(バックアップ用)

USBメモリ起動。
※RAIDコントローラーやHDDが故障した時に、ESXiを再インストールすると、インストール先のHDDが初期化されてしまう為、これを防止する意味もあり、USBメモリ起動にしました。

ローカルのDVDドライブはESXiで使用できないので、マザーのBIOSをアップデートするのに使用。
※BIOSアップデート用の起動CDは、AHCIモードではCDブートできないようです。BIOSアップデート時はIDE互換モードに変更する必要があります。

UPS監視用PCの構成

できるだけ省電力で場所をとらないように、小型のベアボーンで組み立て。
FAXサーバー(まいとーくFAX)を稼働させるので、OSはWindowsXP を使用。

UPSとシリアル接続し、UPSを監視する。
停電時には、みずからをシャットダウンするとともに、ESXiもリモートでシャットダウンする。
UPS監視ソフトは、Apcupsdを使用。

本当は、Linuxの方がよかったのですが、FAXサーバー兼用という事があり、しかたなくWindowsXPで稼働。

WindowsXP起動時、自動でログインできるように構成。
※ドメインへのログオン。

作業開始

ESXi用PC

RAID BIOS を起動し、RAID1のアレイを作成。(HDD 1 とHDD 2 を使用)
※1TBもあると初期化に相当な時間がかかる。夜中に初期化を開始してそのまま寝る。

ESXi起動用USBメモリの作成

●ISOファイルをダウンロード
VMware-VMvisor-InstallerCD-3.5.0_Update_3-123629.i386.iso

==VMWare Workstation 内仮想マシンCentOS 5.2 で作業==
ダウンロードしたISOファイルをCD-ROMにマウントする。
作業は/root/tmp内で実行する。

●必要なファイルを取り出し、USBメモリへ書き込み
—————————————————————–
# mkdir tmp
# cd tmp
# mount /dev/cdrom /mnt
# tar zxvf /mnt/install.tgz usr/lib/vmware/installer/VMware-VMvisor-big-3.5.0_Update_3-123629.i386.dd.bz2
# bunzip2 usr/lib/vmware/installer/VMware-VMvisor-big-3.5.0_Update_3-123629.i386.dd.bz2
# mv usr/lib/vmware/installer/VMware-VMvisor-big-3.5.0_Update_3-123629.i386.dd ./
# dd if=VMware-VMvisor-big-3.5.0_Update_3-123629.i386.dd of=/dev/sdb
—————————————————————–
※/dev/sdb はUSBメモリ領域。先に確認する事。

USBよりESXiを起動

作成したUSBメモリを取付起動。

無事起動したら、ネットワークの設定、その他初期設定を行う。
初期画面で表示されているアドレスに別のPCから接続し、表示されたWeb上から、VMware Infrastructure Client をダウンロードし、クライアントにインストールする。

SSHでリモート接続できるようにする

ESXiのShellへログイン
—————————————
[Alt]+[F1]を押す。
unsupported と入力。
※パスワードを聞いてくるので入力。
—————————————

inetd.conf を修正。
※SSHを利用できるようにする。
—————————————
# vi /etc/inetd.conf

※ #SSH ….. ← 先頭の#を削除。

# reboot
—————————————

内蔵S-ATAをESXiで利用できるようにする。

標準のままでは、ICH10D0は認識しないので、oem.tgz を修正する。

oem.tgz はESXi起動時に自動的に展開されるファイルのようです。
oem.tgz の中のディレクトリ構成のまま起動時に上書きされるようです。

shell にログインしファイルを作成しても再起動時には、ユーザーが作成したファイルはすべてなくなります。
ファイルを変更しても再起動時には元にもどるようです。
その為、再起動時にも有効になるように、oem.tgz に必要なファイルを作成しておく必要があります。

SSHでリモートでShellにログイン。

—————————————
# cd /tmp/
# mkdir -p oem/etc/vmware
# mkdir -p oem/usr/share/hwdata
# cd oem/etc/vmware/
# cp /etc/vmware/simple.map simple.map
# vi simple.map
—————————————
[simple.map] 追加内容
—————————————
8086:2e16 8086:1003 storage ahci
8086:3a02 0000:0000 storage ata_piix
8086:3a06 8086:1003 storage ahci
—————————————

—————————————
# cd /tmp/oem/usr/share/hwdata
# cp /usr/share/hwdata/pci.ids pci.ids
# vi pci.ids
—————————————
[pci.ids] 追加内容 ※名称は適当に入れている。
8086  Intel Corporation の該当場所に挿入
—————————————
2e16  6 port SATA AHCI Controller (ICH10D0)
3a02  6 port SATA IDE Controller (ICH10)
3a06  6 port SATA AHCI Controller (ICH10D0)
—————————————

—————————————
# cd /tmp/oem/
# chown -R 201:201 ./etc
# chown -R 201:201 ./usr
# chmod -R 755 ./etc
# chmod -R 755 ./usr
# chmod 644 ./etc/vmware/simple.map
# chmod 644 ./usr/share/hwdata/pci.ids
# tar -cvzf oem.tgz etc usr
# cp oem.tgz /bootbank/oem.tgz
# cd /bootbank/
# chmod 755 oem.tgz
# reboot
—————————————

再起動後、ICH10D0に接続したHDDが利用可能となります。

ESXiの初期設定、仮想マシン作成。

VMware Infrastructure Client でESXiに接続し、

1.データストアを作成する。

初期の状態で、AdaptecのRAID ARAY は自動で認識され、データストアも自動で作成されている。
内蔵S-ATA接続のHDDは認識されているが、データストアが作成されていないので、作成する。

Configuration タブ を選択、左のStorage を選択、右上の Add Storage.. を選択。
ウイザードが立ち上がるので手順に従う。

2.仮想マシンを作成。

メニューの[File]-[New]-[Virtual Machine..] を選択し、ウイザードに従い作成。

UPS監視設定

UPS監視用PC(WindowsXP)から直接ESXiをシャットダウンする構成にしようと思ったのですが、
テストした結果WindowsXPからのSSHでのリモートシャットダウンが正常に動作せず、別の方法を採用。

VMware 管理用バーチャルアプライアンスのVIMAを仮想マシンとしてインポートし、VIMAにApcupsdをインストール。
Apcupsdのネットワークシャットダウン機能を利用する方法を採用。

・停電発生 → WindowsXPがシャットダウン開始 → VIMAがシャットダウン開始(ホストのESXiにシャットダウン指示を出す) → ゲストOSがシャットダウン → ESXiがシャットダウン →  UPS電源供給Off

・電源復旧 → UPS電源供給ON → WindowsXP起動 → ESXi起動(起動後、仮想マシンが自動起動)

UPS監視用PCにApcupsdをインストールし初期設定

C:\apcupsd\etc\apcupsd\apcupsd.conf をメモ帳で編集

UPSCABLE smart
UPSTYPE apcsmart
DEVICE COM1
TIMEOUT 900

WindowsのApcupsdの場合、初期設定の状態ではシャットダウン時に、UPSが待機状態にならない設定になっている。
この状態だと、電源復旧時に自動で電源がONにならないので設定を修正する。

サービスで起動するようになっているので、起動コマンドにオプションパラメータを含めた設定に変更する。
修正するにはレジストリの修正が必要となる。該当コマンドの値を見つけて修正する。(調べたところ3カ所ある)

レジストリの検索で「”C:\apcupsd\bin\apcupsd.exe” /service」を探して、「”C:\apcupsd\bin\apcupsd.exe” /service -p」に変更する。
※-p を追加する。

Windowsを再起動する。

VIMAのインストール

ESXiに管理用仮想マシンをインポート。
※管理用仮想マシンにはVIMAを使用。

直接インポートする。
[File]-[Virtual Appliance]-[Import] を選択し、ウイザードウインドウで、import from URLを選択し 「www.vmware.com/go/importvima/vima1.ovf」を入力。

VIMAを起動。

VIMAの初期設定をする。(ネットワーク、パスワード等の設定)

VIMAにApcupsdをインストール

VIMAはx86_64版のRedhatベースのOSですので、apcupsd-3.14.5-1.el5.x86_64.rpm をダウンロードします。

http://jaist.dl.sourceforge.net/sourceforge/apcupsd/apcupsd-3.14.5-1.el5.x86_64.rpm

VIMAはwgetが利用できないので直接ダウンロードができません。
別のクライアントPCでWinSCP等を利用しVIMAに接続しコピーします。

sudo rpm -ivh apcupsd-3.14.5-1.el5.x86_64.rpm

Apcupsdのコンフィグファイルを設定。

・/etc/apcupsd/apcupsd.conf

# sudo vi /etc/apcupsd/apcupsd.conf
----------------------------------------------------
UPSCABLE ether
UPSTYPE net
DEVICE 192.168.0.2:3551  ← <マスタのIPアドレス>:<ポートNo>
TIMEOUT 900         ← 電源断から実際にシャットダウンを開始するまでの時間。
----------------------------------------------------
※TIMEOUT時間内に電源が復旧した場合は通常の状態に戻る。

Smart-UPS 750 のeeprom初期値を変更

OSがシャットダウンを開始してから実際にUPSが待機状態になるまでの時間を初期値から変更。
Linuxの場合はシャットダウン完了後にUPSに信号を送ることができるらいしが、Windowsの場合、
OSシャットダウンが開始されるとApcupsdの制御ができなくなる。
その為シャットダウン開始時にUPSに信号を送るので、OSがシャットダウンする時間+アルファ分の
余裕が必要になる。また、ESXiの仮想マシンを終了するのにも時間がかかる為、テストした結果
3分以上必要であったので270秒に設定する事に決定。

UPSと接続されているWindowsXPで、Apcupsdのapctestコマンドを実行。
※apctestを実行するには、apcupsd を停止しておく必要がある。

C:\apcupsd\bin\apctest

※下記のようなメニューが表示される。

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
7) Quit
Select function number: 5 ← 5を入力し[Enter]

1) Print EEPROM values
2) Change Battery date
3) Change UPS name
4) Change sensitivity
5) Change alarm delay
6) Change low battery warning delay
7) Change wakeup delay
8) Change shutdown delay
9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
15) Quit
Select function number: 8
Enter new shutdown delay: 270 ← 270と入力し[Enter]
The old UPS shutdown delay is: 090
The new UPS shutdown delay is: 270

※元のメニューに戻るので終了する。

1) Print EEPROM values
2) Change Battery date
3) Change UPS name
4) Change sensitivity
5) Change alarm delay
6) Change low battery warning delay
7) Change wakeup delay
8) Change shutdown delay
9) Change low transfer voltage
10) Change high transfer voltage
11) Change battery return threshold percent
12) Change output voltage when on batteries
13) Change the self test interval
14) Set EEPROM with conf file values
15) Quit
Select function number:15

※元のメニューに戻るので終了する。

1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
7) Quit
Select function number: 7

apcupsd の起動。と自動起動設定。

# sudo /etc/rc.d/init.d/apcupsd start
# sudo chkconfig apcupsd on

ESXiホストにシャットダウンスクリプトを作成する

ゲストOSを全てシャットダウンし、ゲストOSのシャットダウン後ホストをシャットダウンするスクリプトを作成する。
作成したスクリプトを、ゲストOSであるVIMAのapcupsd のシャットダウン開始スクリプトの途中でリモート実行する構成にする。

ホストのスクリプトを自動実行する為には、リモートでSSHのコマンドライン実行ができる環境が必要になる。
鍵方式で接続する。その為の設定も必要。

ESXiホストのShellにログインし作業。

・シャットダウンスクリプト

# vi ups_shutdown.sh
----------------------------------------------------------------------------
#!/bin/bash

VMID=$(/usr/bin/vim-cmd vmsvc/getallvms | grep -v Vmid | awk '{print $1}')
for i in $VMID
do
STATE=$(/usr/bin/vim-cmd vmsvc/power.getstate $i | tail -1 | awk '{print $2}')
if [ $STATE == on ]
then
/usr/bin/vim-cmd vmsvc/power.shutdown $i
fi
done
sleep 60
/sbin/shutdown.sh
/sbin/poweroff
----------------------------------------------------------------------------
:wq
# chmod 700 ups_shutdown.sh

「sleep 60」より前のスクリプトはゲストOSのシャットダウン用。
ゲストOSがシャットダウンする間待機させる。
※テストしたところゲストOSが3~4つで、60秒あればゲストOSのシャットダウンが完了した。
その後、ホストのシャットダウンとパワーオフを実行する。

外部からSSH接続でコマンドライン実行ができるように鍵方式の接続をできるようにする。

ESXiホストのShellで作業。

●キーの作成

~# mkdir /.ssh
~# cd .ssh
~# /bin/dropbearkey -t rsa -f id_rsa -s 768 > id_rsa.pub

●WinSCPでWindowsPCから操作。

上記で作成した「id_rsa.pub」をエディタで編集します。
1行目と最終行を削除。

●ESXiに戻り操作を続行。

~# /bin/dropbearconvert dropbear openssh id_rsa id_rsa.ssh
~# cat id_rsa.pub > authorized_keys
~# chmod 400 authorized_keys

●ESXiのSSHにコマンドラインで操作するクライアントに「id_rsa.ssh」を転送。
※WinSCPを利用
※今回の場合は、VIMA仮想マシンに転送。

●クライアント側での操作(VIMA仮想マシン)

chmod 600 /root/id_rsa.ssh
mv /root/id_rsa.ssh /root/esxi_id_rsa.pub

oem.tgz を再作成する。

このままの状態で再起動すると、作成したスクリプトや、認証キーが再起動後無くなってしまうので、再起動後も有効となるように、oem.tgz を再作成する。
重複する部分もでてくるがしかたないので、もう一度作成する。

ESXiホストのShellで作業。

========================================
# cd /tmp/
# mkdir -p oem/etc/vmware
# mkdir -p oem/usr/share/hwdata
# mkdir -p oem/.ssh
# cp /ups_shutdown.sh /tmp/oem/
# cp /.ssh/* /tmp/oem/.ssh/
# cd oem/etc/vmware/
# cp /etc/vmware/simple.map simple.map
# vi simple.map
========================================
[simple.map] 追加内容
---------------------------------------
8086:2e16 8086:1003 storage ahci     
8086:3a02 0000:0000 storage ata_piix 
8086:3a06 8086:1003 storage ahci
---------------------------------------

========================================
# cd /tmp/oem/usr/share/hwdata
# cp /usr/share/hwdata/pci.ids pci.ids
# vi pci.ids
========================================
[pci.ids] 追加内容 ※名称は適当に入れている。
8086  Intel Corporation の該当場所に挿入
---------------------------------------
        2e16  6 port SATA AHCI Controller (ICH10D0)                        
        3a02  6 port SATA IDE Controller (ICH10)                           
        3a06  6 port SATA AHCI Controller (ICH10D0)
---------------------------------------

========================================
# cd /tmp/oem/
# chown -R 201:201 ./etc
# chown -R 201:201 ./usr
# chmod -R 755 ./etc
# chmod -R 755 ./usr
# chmod 644 ./etc/vmware/simple.map
# chmod 644 ./usr/share/hwdata/pci.ids
# tar -cvzf oem.tgz etc usr .ssh ups_shutdown.sh
# cp oem.tgz /bootbank/oem.tgz
# cd /bootbank/
# chmod 755 oem.tgz
# reboot
========================================

VIMA仮想マシンのapcupsdのシャットダウンスクリプトにESXi内に作成したシャットダウンスクリプトを実行するコマンドを追加する。

VIMA仮想マシンでの作業

# vi /etc/apcupsd/apccontrol
-------------------------------------------------------------------------
        doshutdown)
        echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
        ssh -i /root/esxi_id_rsa.pub root@192.168.0.103 "/ups_shutdown.sh" ← この部分を挿入
        ${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"
-------------------------------------------------------------------------

以上で作業が完了しました。