まぁ簡単にはいかなかったわけでして・・・
サーバの動作環境は以下の通り
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?のユーザに対し、読み書きの権限が追加される。
これで再度ext3で再インストール。
本来ならば、ここから一つ一つセットアップを行うべきなのだが、
- 既に何が動いているかわからない
- 何の設定をしたか覚えていない
- 野良リポジトリを追加しまくっている上に既にいくつかのリポジトリはもうない
- メールの容量が巨大
- メールにvpopmailなる少々トリッキーなことをやっているのでカオス
という非常に頭の痛い
最近の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 件のコメント:
コメントを投稿