2012年9月22日土曜日

VMwareゲストのフラグメンテーション

サーバーも仮想化技術が進んだお陰で、保守や引っ越しなどが格段に楽になった今日この頃。

今週末は調子の悪くなったサーバーの引っ越し作業にすったもんだして、二晩連チャンの徹夜作業になってしまった。

木曜日の夜の作業で、サーバーを別のサーバーへそっくり引っ越す作業だったのだが、4GBのデータを移動させるのに通常であれば2〜3時間程度で終わるはずなのに朝(8時間経過)になっても半分も取り出せない。

結局、クライアントのサーバーを日中止めるわけにも行かないので、作業を中断しグダグダのサーバーのまま再度運用再開。orz

実質"300MB/時間"程度しかデータの読み出しが出来ていない状態。(T_T)
ビットレート換算だと680Kbps程度か? 10Mbps帯域保証のネットワーク回線でのコピーが680Kbpsってどういう事??

で、原因を突き詰めていってどうも怪しいのは"VMware"の仮想ボリュームという結論に。
大半のWebサーバーはParallelsの仮想化ソフトで管理しているのだが、いくつかのサーバで"VMware Server"を利用して仮想サーバーを構築している。

無償のソフトウェアを使っておいて文句言う筋合いじゃないのだろうけれど、特にSQLなどのデータベースが頻繁に読み書きするWebサイトを"VMware Server"上に構築すると、時間と共にレスポンスが段々悪くなってくるみたいだ。

どうやら細かな読み書きが多発するコンテンツは"VMware"ゲストの仮想ボリューム(.vmdkファイル)がかなり重度なフラグメンテーションを起こすらしい。

このフラグメンテーションが進んでいくと、CPUもメモリも十分余裕があっても、HDDの応答待ちだけでかなり時間がかかるようになってくる。
結局サーバーがグダグダなのは、サーバーリソースなどの問題ではなく、"WMware"の仮想環境にあったわけでした。

ただ、容量が変動する仮想ディスクでなく、固定の容量で構築していればこのような酷い状態にはならないようで、構築時にしくじっていたという事実も判明。

いずれにしても中身を抜かないと再構築も行えないので、翌日の晩にリベンジの引っ越し作業を敢行。

まずはHDDの読み出し速度を正常化させないと仕事にならないのでホストへ"ssh"でログインした後メンテナンスコマンド(-d)で仮想ディスクのデフラグを実行。
# vmware-vdiskmanager -d [ゲストOS名].vmdk
20GBほどの仮想ボリュームは15分ほどでデフラグ完了。(早!!)

早速マイグレーションでコンテンツの引っ越しも実行。
「うん、普通に転送速度が出るようになった。これなら3時間もあれば全ての作業は完了できる。後はマイグレーション完了後にDNSを書き換えて新しいIPへ振るだけ...。」
の、予定だったのだが前日の徹夜がたたって、うたた寝...。ww

気付いたときには、すでに5時近くになっている。
慌ててDNS書き換えたものの、2時間ほど経ってもレコードのキャッシュを書き換えてくれないDNSもチラホラ...。(自宅のフレッツ光-NTTPCもそうだった)

しょうが無く、古いIP側のhttpdも動かして"vhost.conf"にProxy転送設定を書き込んで強制的に新しいIPへ転送する事に。
ProxyPass / http://[新しいIP]/
ProxyPassReverse / http://[新しいIP]/
久しぶりに冷や汗ものもサーバー引っ越し作業となりました。
その後、娘の運動会会場へ出向きテントの下で爆睡してしまいました。orz

【追記:備忘録】
デフラグ前に使用する"vmware server 2.0"用コマンドライン

・ゲスト一覧取得
# vmware-vim-cmd vmsvc/getallvms

・ゲストOS起動
# vmware-vim-cmd vmsvc/power.on [VM id]

・ゲストOS停止
# vmware-vim-cmd vmsvc/power.off [VM id]

・ゲストOS再起動
# vmware-vim-cmd vmsvc/power.reboot [VM id]

・ゲストOSサスペンド
# vmware-vim-cmd vmsvc/power.suspend [VM id]

0 件のコメント :

コメントを投稿