ゆるりとものづくり

ゆるりとものづくり

夢見るおっさんの工作記録

さくらのVPSに自宅サーバ(Ubuntu)を引っ越し

Ubuntuで構築していた自宅サーバをさくらのVPSrsyncで引っ越した話です。

昨年末に自宅サーバが突然壊れました。
電源が落ちたと思ったら、それ以後まったく電源が入らなくなったのです。

メールサーバとして使われてたりするので、早急に復旧したいんですが、分解して色々チェックするもお手上げで、電源を交換するのが早いとの結論に達しました。
よりによって大晦日に適応する電源を探しに秋葉原を駆けずり回ることになっちゃったわけです。
(TFX規格の電源というマイナーさw)

取り急ぎ電源を交換して事なきを得たんですが、さすがに自宅サーバの時代じゃないし、電気代払いたくないしということで、さくっとさくらのVPSに引っ越ししました。


このブログでも記事にしていますが、MondoRescueを使うとかなり楽(安心感も含めて)にサーバを移転できます。

しかしこの方法にも問題があります。それは、
・ さくらのVPSのISOイメージアップロード機能は1枚のISOしかマウントできない
・ その容量は5GBに制限されている
ということです。

1枚しか駄目なのはmondoarchiveのオプションをいじれば何とかなるんですが、5GBの制限が問題です。

このサーバは1996年から稼働しているドメインを扱っており、利用者さんの18年分のゴミ貴重なファイルが溜まっています。
そのため、作成したイメージは45GBを超えるものとなりました。

そこで、さくらの田中社長さんも紹介しているrsyncでまるごとコピー方式を採用してサーバを移転させました。
ただ、お約束で結構古いし、デフォルトでインストールされるCentOSでの手順なんですよね。

ということで、↓この辺を参考にして行った、Ubuntuでのrsyncを使った引っ越し手順を紹介します。

1. 元のサーバを移行先サーバと同じバージョンに揃える

移行元はUbuntu 12.04LTSだったので14.04LTSまでアップグレードし、さくらのVPSにはUbuntu 14.04LTSをインストールしました。
「apt-get upgrade」 するなどで、うまいことしましょう。

2. rsyncの設定を移行先サーバで行う

Ubuntuの場合、 /etc/sudoers.d/ディレクトリに追加の設定ファイルを置くと読み込まれる仕組みになっています。
今回は /etc/sudoers.d/rsyncというファイルを作り、そこに

Defaults:root    !requiretty
Defaults:%adm    !requiretty
Defaults:%admin    !requiretty
%adm    ALL=(ALL)   ALL, (root) NOPASSWD: /usr/bin/rsync
%admin  ALL=(ALL)   ALL, (root) NOPASSWD: /usr/bin/rsync
と書き込みました。
admグループだけでなく、adminグループも設定したのは前述のように歴史があるサーバのため、wheelグループとしてadminという名前が割り当てられていたためです。
オーナーはrootで、0440にchmodしておきます。

3. とりあえず元サーバでrsyncを実行

CentOSと大きく違うのはこの部分かと思います。Ubuntuの場合は

# rsync -rtlzvogpHAX --rsync-path="sudo /usr/bin/rsync" --exclude /boot/ --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ssh_host_* --exclude fstab --exclude /etc/network/interfaces --exclude /etc/resolv.conf --exclude /run --block-size=4096 --delete -e ssh /  (移行先サーバの管理ユーザー)@(移行先サーバのIPアドレス):/

こんな感じに、移転元サーバで実行します。
postfixが稼働していた場合はもうちょっと除外ファイルを増やさないとですが、まぁ無視していいと思います。

4. 移転先サーバを再起動してチェック

コピーが全て終わったら、移転先サーバを再起動して問題なく稼働するかチェックします。
問題がおきたらシングルモードで起動して修正しましょう。

5. 元サーバでアナウンス後、すべてのサービスを停止

6. もう一回rsync

確実に移行できるようにすることと、サーバのダウン時間短縮の為に
・稼働中にrsync
・停止後にrsync
と二回にわけて行いました。rsyncでネットワーク越しにコピーが終わるまでサーバをダウンさせるなんて美しくありませんw

7. DNSを書き換えて移転先サーバを再起動

利用者が気が付かないレベルのダウン時間で済むように、田中社長のTTL変更を参考にしました。

追記:

さくらのVPSにはお試し期間が設定されていますが、本契約するのが確実な場合はさっさと契約した方がrsyncが超早くて捗りますよw