KVMとiSCSIによるSANブート環境の構築[ゲスト:WindowsXP]
インストーラがiscsiに対応していないので、
1.ローカルディスクにインストール
2.iscsiブート可能なInitiatorを導入する
3.iscsiのLUNにローカルディスクのデータをコピー
の順に作業を行う。
必要なもの
XPインストールメディア
あると便利なもの
LinuxのKVMゲスト(ddとgPartedを使いたい。LiveCDでもいいかと)
インストール
nicはe1000を指定。virtioは残念ながら自分のiSCSIブート環境では使えなかった。
ディスクイメージはなるべく小さくする。
4GB程度で十分と思うが、SP3などの場合は6〜8GBくらいあると安心。
サイズが大きくても時間がかかるだけで特に問題はない。
インストール後、IntelのサイトからXP用e1000ドライバを導入する。
なお、XPの標準ドライバでは認識されないので、e1000のみで起動した場合、ファイルの受け渡しに困る。
事前にドライバ配置済みのディスクを一時的に追加するなり、model=virtio&virtio-win.isoマウントでe1000ドライバDL後にnic差し替えて起動しなおすなり、
なんとか導入する。
次にInitiator-2.08-boot-build3825-x86fre.exeを導入。
途中出てくる“Microsoft MPIO Multipathing Support for iSCSI”はチェックが外れていることを確認する。
マルチパス構成ではiscsiブートできない。
http://www.microsoft.com/downloads/en/details.aspx?familyid=12cb3c1a-15d6-4585-b385-befd1319f825&displaylang=en
で入手できる。Iscsi Boot Initiator 2.08 X86Freをクリック。
gPXEのWikiにはchk推奨と書いてあるが、相当やる気のある人以外Checked Buildである必要はない。と思う。
ここまでやったら仮想マシンを落としてとりあえずイメージをバックアップする。
スナップショットとか逆に面倒なので普通にtar.gzで固めた。
バックアップをとったら、用意していたLinuxのKVMゲストにXPをインストールしたディスクをくっつけて起動。
もしくはホストのマシンがxとか入ってゴテゴテしているならkpartx使ってそのままマウントしても良い。
とにかくどこかのLinuxマシンにくっつけたら、そこでさらに転送先のiSCSIターゲットデバイスもマウントする。
# iscsiadm --mode=discovery --type=sendtargets --portal=xxx.xxx.xxx.xxx # iscsiadm -m node --targetname iqn.yyyy-mm.:aaa.bbb.ccc.ddd --portal xxx.xxx.xxx.xxx:xxxx --login
ディスクを複製する。
基本的にhttp://etherboot.org/wiki/sanboot/transferにある通りにやればよい。
# fdisk -l /dev/sdX Disk /dev/sdX: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdX1 * 1 1825 14659281 7 HPFS/NTFS
で、シリンダ当たりのバイト数(8,225,280)とパーティションの最後のシリンダ番号(1,825)を調べて
dd if=/dev/sdX of=/dev/sdY bs=8225280 count=1825
とすればよい。
sdXはXPをインストールしたディスク(NTFSになっているはず)、sdYは複製先のiSCSIターゲット(空のはず)を指定する。
転送が終わったらgPartedでNTFSを拡張する。
パフォーマンスの問題もあるしとりあえずLUNいっぱいに広げればいいと思うが、何個かのパーティションに切ってもそれぞれ認識する。
あとはFedoraの時と同様にDHCPサーバにrootへのパスを仕込む。<書きかけ>