2013年6月26日水曜日

自宅サーバをHyper-Vに移行した時にはまったことメモ

自宅サーバの具合がますます悪化してヤバい状態なので、意を決してHyper-V環境に退避させました。
まぁ簡単にはいかなかったわけでして・・・
そもそもvmware-esxとかkvmとかにしなかった段階でチャレンジャーとか

サーバの動作環境は以下の通り
OS:CentOS5.9(32bit)
HDD:200GByte
MEM:2GByte

Hyper-VはWindows Server 2012上のHyper-V

まずは、Hyper-V上にCentOS5.9を最小インストールする。
最少インストールとのことで、ネットワークインストールを行った。

ポイント:
CentOS5.9はHyper-Vに標準で対応しているので、
仮想NICにレガシーを使わなくても、普通に行ける。
従って、Linux Integration Services Version 3.4 for Hyper-Vは不要。
(ってか入れるとCDROMがマウントできなくなったりNICがレガシーも動かなくなったり色々嵌る。ちゃんとインストールマニュアルは読もう)
インストール時、仮想環境内にあるHyper-Vをインストールすること。(デフォルトで選択されているはず)

毎度のことだが、CentOSの最少インストールは全然最少じゃないので、不要なサービスを止めたりパッケージを削除したりする。

が、ここで生成されたVHDXファイル(仮想HDD)がバカでかいことに気付く。
(いや、実はちゃんと事前検証していた時から気づいていたんですが・・)

ここによると、ext3とVHDXの組み合わせがダメらしい。
ext4にすればいいということなので、ext4にするが、bootパテーションはext4に出来ない。
従って、bootのみext3でいいやとインストールすると、ext4がマウントできなくて起動しません!
なので、参照先にあるように、パワーシェルでブロックサイズ1MBなVHDXファイルを作成。
New-VHD -Path ファイル名.vhdx -Dynamic -SizeBytes 200GB -BlockSizeBytes 1MB
こんな具合。
無事作成できたので、仮想マシンを起動しようとするも、何故か一般アクセス権がないといわれる。

これ、Hyper-Vつついていると時々出てくる。一般アクセスってなんやねん!!

っとググる。

このサイトにあるように、いったん仮想マシンからディスクコントローラごとHDDの割り当てを削除する。
っといっても割り当てが削除されるのであって、ファイルそのものが消える訳ではないのでご安心を。
その後、ディスクコントローラを追加し、HDDに先ほど作成したVHDXファイルを割り当てる。
これにより、ランダムなID?のユーザに対し、読み書きの権限が追加される。
(こういう地味な処にひと手間かけさせるあたりが流石MS。)

これで再度ext3で再インストール。

本来ならば、ここから一つ一つセットアップを行うべきなのだが、


  • 既に何が動いているかわからない
  • 何の設定をしたか覚えていない
  • 野良リポジトリを追加しまくっている上に既にいくつかのリポジトリはもうない
  • メールの容量が巨大
  • メールにvpopmailなる少々トリッキーなことをやっているのでカオス


という非常に頭の痛い(自業自得な)事態なので、rsyncでサクッとコピーするw
最近のWindowsと違い、Linuxはファイルコピーで割といける。
既に仕事でも詳細不明な怪しいサーバを丸々新しいマシンに引っ越すとかで実践済み。
移行元、移行先それぞれにrsyncとsshをインストール(すでに入っている)
移行元のサービスを極力止める。当然ネットワークとかsshとか止めると意味ないのでそのあたり注意。
クーロンは止めておいたほうがいい。
コピー中に動作しだしていろいろ面倒事が発生したので。
当然外部からの接続は遮断しておくか、外部サービスのデーモンは殺しておく。
selinuxとiptablesは念のため双方殺しておく。

コマンド例は以下の通り。これを移行元サーバで動かす。

rsync -rtlzvogpHAX --delete --exclude /boot/ --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 -e ssh / 移行先IP:/
excludeオプションの箇所は各自のサーバ事情に合わせて変更すること。
くれぐれも動かすマシンを間違えないこと!!間違えると消えます!!
心配ならサーバのバックアップを取っておくといい。



移行が終わったら、仮想マシンを再起動せずに、ファイル容量や主要ファイルがちゃんとコピーされているかを確認。
多分Hyper-V関連が削除されているので、インストールしておく。

yum install hypervkvpd
念のため、/etc/modprove.confにeth0の設定がないかチェック。
あれば以下のように書き換えておく
alias eth0 hv_netvsc
あと、前のサーバがSATAだった場合、Hyper-VではIDEなのでカーネルパニックになって動かない。
なので、ここを参考に、再起動時、レスキューモードで起動し、initrdを再作成する。

NIC回りはコピーの対象にしていないので、起動して問題ないようなら移行元をネットワークから切り離し、仮想マシンのIPを正しく変更し、念のため再起動
OKなら終了。

お疲れ様でした。







(結局半日以上かかったよ・・・Orz)

追記
何故かDovecotが死亡する事案が発生。
原因は時刻がずれるのをntpdが急に補正するためらしい。
ここを参考に対策をとる。

0 件のコメント:

コメントを投稿