作業日: 28 Apr., 2013
VMを格納するデータストアとして暫定的に500GBの3.5インチハードディスクを使用していたが、ようやく320GBの2.5インチHDD×2のRAID1に置き換える。
準備
ベイの数や電源ケーブルの問題で、一旦RAID5を構成していたHDDを全部取り外し、新しい320GB 2.5インチHDD×2をセット。
このとき古い500GBの3.5インチHDDは付けたまま。
iSCSIサーバの電源を入れ、新しいHDDのデバイスファイル名をチェックする。
sudo fdisk -l
今回は、/dev/sdaと/dev/sdbに新HDDが、/dev/sdcに旧HDDが認識されていることがわかる。
次に、新HDDにパーティションを作成する。
sudo fdisk /dev/sda && sudo fdisk /dev/sdb
それぞれディスク全域を使用して基本パーティションを1つ作成し、ディスクIDを0xfd (Linux raid auto detect) に設定する。
RAIDの作成
2つのディスクを使用してRAID1を作成する、
sudo mdadm --create /dev/md/vmstore2 --level=1 --raid-devices=2 \ /dev/sda1 /dev/sdb1
RAIDデバイスのデバイスファイルを固定化するため、UUIDで設定ファイルを作成する。
sudo sh -c "mdadm --detail --scan
で新しいRAIDのUUIDをチェックして、下記のように/etc/mdadm/mdadm.confを書き足す。
ARRAY /dev/md/vmstore2 metadata=1.2 UUID=f5dce1a3:574ba56b:47fd07a0:0f9be0b4
一旦/dev/md/vmtore2というデバイスファイル名で作成して、現在の/dev/md/vmstoreの内容をコピーした後、/dev/md/vmstoreに名前を変更する。
iSCSI用の設定を追加
新しいRAIDをiSCSIのターゲットとして設定する(同様に一旦vmstore2として作成する。)
sudo sh -c " cat > /etc/tgt/targets.conf << EOF <target iqn.2013-04.net.example.domino:vmstore2> backing-store /dev/md/vmstore2 </target> EOF"
再起動
RAIDの同期に時間が掛かるので、下記コマンドで様子を見ながら終わるまで待つ。
cat /proc/mdstat
忘れないようにinitramを更新した後、再起動。
sudo update-initramfs -u && sudo reboot
再起動後、状態を確認
cat /proc/mdstat && sudo tgtadm --lld iscsi --op show --mode target
データのコピー
データストアのファイルフォーマットはESXi独自なので、一度ESXiでマウントしてからデータをコピーする。
vSphere Clientで、「構成」->「ストレージ」->「ストレージの追加…」から、新しく設定したvmstore2を選択してデータストアとして追加する。データストア名もvmstore2にする。
vSphare Client上で、データストアを右クリックして出てくる「データストアの参照」からファイルを移動することも出来るが、時間がかかる場合に不安点なので、ssh上で実行する。
sshでESXiにログインし、/vmfs/volumes/vmstore、から/vmfs/volumes/vmstore2にデータをコピーする。
nohupを使うと良い。
/vmfs/volumes/vmstore2に置かれたディレクトリは適当にリネームしておく。
VMの起動の確認
適当なVMがvmstore2から起動できるか確認する(ただし、iSCSIターゲットをRawディスクとしてマウントしているVMは、後回しにした方が良い。)
データストアブラウザ上で、適当なVMの仮想マシンファイル(.vmx)を右クリックして、インベントリに追加を選ぶ。
起動すると、仮想マシンの位置が変わっているという警告がでるが、”I moved it”か”I copied it” を選んで、無事に起動できることを確認する。
RAIDとiSCSIの設定を変更
用済みの500GB 3.5インチHDDを取り外し、2.5インチHDDのRAID1をvmstoreという名前で使用するように設定を変更する。
ESXiサーバとiSCSIサーバをシャットダウンする。
500GBのHDDを外して、RAID5を構成する2TB HDD×3を装着した上で、iSCSIサーバを起動。
まず、/etc/mdadm/mdadm.confを編集して、旧vmstoreに関する行を消し、vmstore2をvmstoreに変更する。
ちなみに消した行は
ARRAY /dev/md/vmstore metadata=1.2 UUID=493e9bab:bf4f4d93:13ae5ef2:1f277881
でファイルは、
ARRAY /dev/md/datastore metadata=1.2 UUID=ae189551:89069074:6d0d79a4:e0c921a6 ARRAY /dev/md/vmstore metadata=1.2 UUID=f5dce1a3:574ba56b:47fd07a0:0f9be0b4
のようになった。
さらに、/etc/tgt/targets.confを編集して、同様に旧vmstoreに関するエントリを消して、vmstore2をvmstoreに変える。
忘れずにinitramを更新して再起動する。
sudo update-initramfs -u && sudo reboot
ESXiサーバを起動すると、iSCSIの名前が変わりデータストアを認識できないと言われる。
「構成」->「ストレージ」->「ストレージの追加…」でvmstoreをデータストアとして追加する。
このとき、「既存の署名を保持」を選択すれば良い。決して再フォーマットしないこと、
残りのVMを上と同様の手順で再設定する。
ここで、iSCSIターゲットをRAWディスクとしてマウントしている仮想マシンは、一旦古いHDDの設定を削除して、再追加しないと起動できなかった。おそらく、iSCSIターゲットの名前を変更したためだと思われる(example.netになっていたのを正しいドメイン名に変更した。)