こんにちは。
ニフティでインフラを守るお仕事をしている五月女です。
08/22に実施された機能追加で待望のコンソール接続機能が提供されました!ヽ(*´∀`)ノ
前々から「提供して欲しい!」と言い続けてきた機能なのでとても嬉しいです。
コンソール接続によって様々な事が実現可能になりました。
コンソール接続は、対象サーバのネットワーク設定状態に依存しないため、iptablesやsshといったサーバのネットワーク周りの設定に失敗してしまった場合も「設定を元に戻してサーバを救う」といった事が出来ます。
また、アクセス過多でssh経由のログイン出来なくなってしまったサーバをコンソールから状態を確認したり、前々回紹介した「カーネルアップデート」の様なサーバの根幹に関わる作業も、コンソール画面を確認しながら実施する事で、より確実に実施出来る様になりました。
こんなにも便利なコンソール接続機能ですが、今回はさらに便利な使い方として、コンソール接続機能を利用した「手元のサーバをニフティクラウドに持ち込む方法」を紹介します。
- ■ニフティクラウドに手元のサーバを持ち込みたい!
- ■サーバ持ち込みに必要な要素の確認
- ■サーバをイメージ化する
- Mondo Rescueのセットアップ
- (1)yumからインストールする方法
- (2)RPMパッケージからインストールする方法
- ディスク構成の確認
- バックアップイメージ作成
- Mondo Rescueの対話インターフェース起動
- バックアップイメージ作成先ディバイスの選択
- バックアップイメージ作成先ディレクトリを設定
- 圧縮方法を選択
- 圧縮率の選択
- ISOファイルの最大サイズを設定
- ISOファイルのファイル名先頭文字を設定
- 対象のパスを設定
- 対象外のパスを設定
- テンポラリ領域を設定
- スクラッチ領域を設定
- 拡張属性のバックアップ可否を選択
- 作業後の検証実施を実施するか選択
- 対象OSのカーネルタイプを選択
- 最終確認
- 作成されたバックアップイメージの確認
- ■サーバをニフティクラウドに持ち込む
- ■まとめ
※内容は、2011年09月現在時点の情報です。
■ニフティクラウドに手元のサーバを持ち込みたい!
ニフティクラウドは「サーバが欲しい!」と思ってから約5分でサーバを提供してくれます。
しかし、当然の事ながら、提供されたサーバの環境構築は自分で実施しなければなりません。
一旦、ニフティクラウド上に環境構築してしまえば、後はコピー機能を使って同じ環境を無限に増やす事が可能ですが、どうしても最初の環境構築作業は外せません。
ワンライナーで構築出来るような簡単な環境なら良いのですが、複雑な作業が求められたり、大量の設定確認が必要な場合、環境構築は多くの作業時間を必要とします。
さらに、担当者が退社しており、構築手順書も無いサーバだったりする場合、ニフティクラウド上にもう一度同じ環境を構築する事は困難を極めるでしょう。
最近の電力事情やBCP対応で「社内にあるサーバをクラウドに移行しよう!」なんてプロジェクトを進めてる人で、頭を抱えてる人もいるのでは無いでしょうか。
自分自身、そんな事をしていた時「手元のサーバをそのままニフティクラウドに持ち込めたら楽なのになぁ」と思っていました。
そこで、そんな悩みを解消する「サーバのイメージ化」と「ニフティクラウドへの持ち込み」について考えてみました。
■サーバ持ち込みに必要な要素の確認
ニフティクラウドが提供するコンソール機能とサーバのイメージ化について
ニフティクラウドが提供するコンソール機能は、ISOイメージのマウントとISOイメージからのサーバブート機能を備えています。
この機能を使い、ISOイメージとして手元のサーバを「バックアップ」し、コンソール接続を介してニフティクラウドへ「リストア」すれば、手元のサーバをニフティクラウドに持ち込む事が出来ます。
サーバをまるごとイメージとしてバックアップするツールは、有償・無償を含めて様々なツールが提供されていますが、今回は、サービスを提供中のサーバを電断せずにイメージ化する手段として、実績あるOSSプロダクトである「Mondo Rescue」を利用してみたいと思います。
持ち込むサーバについて
- 今回、ニフティクラウドへ持ち込むサーバはVMware vSphere Hypervisor(ESXi4.1)上に作成したCentOS5.5な仮想マシンでやってみました。
- 持ち込むサーバ(仮想マシン)
OS CentOS5.5(x86_64) CPU 2CPU Mem 4GB HDD 40GB NIC 1枚 - ホスト
Hypervisor VMware vSphere Hypervisor(ESXi4.1) CPU* Core2Quad Q9550 Mem 16GB ストレージ NFS接続
■サーバをイメージ化する
Mondo Rescueのセットアップ
(1)yumからインストールする方法
Mondo RescueはCentOS標準のパッケージでは提供されていませんが、サードパーティリポジトリを追加することで、yumを利用してインストールする事が出来ます。
- サードパーティリポジトリのセットアップ
「ニフティクラウド探検隊 CentOSで手軽に最新のソフトウエアを使いたい!」の記事を参考に、サードパーティリポジトリである「RPMforge」をセットアップします。
- パッケージの確認
[root@localhost ~]# yum --enablerepo=rpmforge info mondo Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.yongbok.net * epel: ftp.iij.ad.jp * extras: mirrors.ta139.com * rpmforge: apt.sw.be * updates: mirror.yongbok.net Excluding Packages in global exclude list Finished Available Packages Name : mondo Arch : x86_64 Version : 2.2.9.4 Release : 1.el5.rf Size : 1.2 M Repo : rpmforge Summary : Create system image for bare-metal disaster recovery from CD, DVD or tape URL :
http://www.mondorescue.org/
License : GPL Description: Mondo is a GPL disaster recovery solution to create backup media : (CD, DVD, tape, network images) that can be used to redeploy the : damaged system, as well as deploy similar or less similar systems. [root@localhost ~]#
- パッケージのインストール
[root@localhost ~]# yum --enablerepo=rpmforge install mondo Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.ta139.com * epel: ftp.kddilabs.jp * extras: mirrors.ta139.com * rpmforge: fr2.rpmfind.net * updates: mirrors.ta139.com Excluding Packages in global exclude list Finished Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mondo.x86_64 0:2.2.9.4-1.el5.rf set to be updated --> Processing Dependency: mindi >= 2.0.7 for package: mondo --> Processing Dependency: cdrecord for package: mondo --> Processing Dependency: buffer for package: mondo --> Processing Dependency: afio for package: mondo --> Processing Dependency: mkisofs for package: mondo --> Running transaction check ---> Package afio.x86_64 0:2.5-2.el5.rf set to be updated ---> Package buffer.x86_64 0:1.19-2.el5.rf set to be updated ---> Package cdrecord.x86_64 9:2.01-10.7.el5 set to be updated ---> Package mindi.x86_64 0:2.0.7.5-1.el5.rf set to be updated --> Processing Dependency: mindi-busybox for package: mindi ---> Package mkisofs.x86_64 9:2.01-10.7.el5 set to be updated --> Running transaction check ---> Package mindi-busybox.x86_64 0:1.7.3-1.el5.rf set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================= Package Arch Version Repository Size ================================================================================= Installing: mondo x86_64 2.2.9.4-1.el5.rf rpmforge 1.2 M Installing for dependencies: afio x86_64 2.5-2.el5.rf rpmforge 79 k buffer x86_64 1.19-2.el5.rf rpmforge 23 k cdrecord x86_64 9:2.01-10.7.el5 base 594 k mindi x86_64 2.0.7.5-1.el5.rf rpmforge 199 k mindi-busybox x86_64 1.7.3-1.el5.rf rpmforge 280 k mkisofs x86_64 9:2.01-10.7.el5 base 608 k Transaction Summary ================================================================================= Install 7 Package(s) Upgrade 0 Package(s) Total download size: 3.0 M Is this ok [y/N]:y ※yを押下 Downloading Packages: ・ ・ 省略 ・ ・ Complete! [root@localhost ~]#
インストール完了
(2)RPMパッケージからインストールする方法
- Mondo Rescueのインストールに必要なパッケージを準備
[root@localhost ~]# yum install mkisofs cdrecord Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.yongbok.net * epel: ftp.iij.ad.jp * extras: mirrors.ta139.com * updates: mirror.yongbok.net Excluding Packages in global exclude list Finished Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cdrecord.x86_64 9:2.01-10.7.el5 set to be updated ---> Package mkisofs.x86_64 9:2.01-10.7.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================= Package Arch Version Repository Size ================================================================================= Installing: cdrecord x86_64 9:2.01-10.7.el5 base 594 k mkisofs x86_64 9:2.01-10.7.el5 base 608 k Transaction Summary ================================================================================= Install 2 Package(s) Upgrade 0 Package(s) Total download size: 1.2 M Is this ok [y/N]:y ※yを押下 Downloading Packages: ・ ・ 省略 ・ ・ Complete! [root@localhost ~]#
- Mondo Rescueのダウンロード
Mondo Rescue公式サイトからパッケージをダウンロードします。
※FTPから最新のパッケージをダウンロードします。
[root@localhost ~]# wgetftp://ftp.mondorescue.org/rhel/5/x86_64/mondo-2.2.9.7-1.rhel5.x86_64.rpm
[root@localhost ~]# wgetftp://ftp.mondorescue.org/rhel/5/x86_64/afio-2.5-1.rhel5.x86_64.rpm
[root@localhost ~]# wgetftp://ftp.mondorescue.org/rhel/5/x86_64/buffer-1.19-4.rhel5.x86_64.rpm
[root@localhost ~]# wgetftp://ftp.mondorescue.org/rhel/5/x86_64/mindi-2.0.7.8-1.rhel5.x86_64.rpm
[root@localhost ~]# wgetftp://ftp.mondorescue.org/rhel/5/x86_64/mindi-busybox-1.7.3-1.rhel5.x86_64.rpm
- ダウンロードしたファイルの確認
[root@localhost ~]# ls . afio-2.5-1.rhel5.x86_64.rpm mindi-2.0.7.8-1.rhel5.x86_64.rpm mondo-2.2.9.7-1.rhel5.x86_64.rpm .. buffer-1.19-4.rhel5.x86_64.rpm mindi-busybox-1.7.3-1.rhel5.x86_64.rpm [root@localhost ~]#
- Mondo Rescueのインストール
[root@localhost ~]# rpm -Uvh *.rpm 警告: mindi-2.0.7.8-1.rhel5.x86_64.rpm: ヘッダ V4 DSA signature: NOKEY, key ID 37db9883 準備中... ########################################### [100%] 1:mindi-busybox ########################################### [ 20%] 2:buffer ########################################### [ 40%] 3:afio ########################################### [ 60%] 4:mindi ########################################### [ 80%] 5:mondo ########################################### [100%] [root@localhost ~]#
インストール完了
ディスク構成の確認
- バックアップイメージ作成時に指定する必要があるのでメモしておいて下さい
[root@localhost ~]# df -kh Filesystem サイズ 使用 残り 使用% マウント位置 /dev/sda3 27G 2.3G 23G 9% / /dev/sda1 494M 23M 446M 5% /boot tmpfs 502M 0 502M 0% /dev/shm [root@localhost ~]#
- ※上記の構成なら「/」配下をバックアップすれば良さそうですね。
バックアップイメージ作成
Mondo Rescueを利用したバックアップイメージの作成方法はいくつか方法がありますが、今回は対話式インターフェースを使います。
Mondo Rescueの対話インターフェース起動
- 下記コマンドで対話インターフェースが起動します
[root@localhost ~]# mondoarchive
バックアップイメージ作成先ディバイスの選択
- 今回はローカルHDDの空き領域内にバックアップイメージを作成するので「Hard disk」を選択して「Enter」
- ※注意)十分な空き領域のあるディバイスを選択する事
バックアップイメージ作成先ディレクトリを設定
- 適当に開いてそうな領域として「/mnt」を入力して「Enter」
圧縮方法を選択
- 「bzip2」を選択して「Enter」
圧縮率の選択
- 圧縮率が高ければバックアップイメージのサイズは小さくなりますが、イメージ作成・展開に時間がかかってしまいます。
今回は「Average」を選択して「Enter」
ISOファイルの最大サイズを設定
- 標準の「4480」のまま「Enter」
ISOファイルのファイル名先頭文字を設定
- 標準の「mondorescue」のまま「Enter」
対象のパスを設定
- 事前に調べておいたディスク構成から、今回は「/」を入力して「Enter」
対象外のパスを設定
- 今回は「/mnt」配下にバックアップイメージを作成するので、バックアップ対象外にしたい「/mnt」と入力して「Enter」
テンポラリ領域を設定
- こちらも「/mnt」配下を利用したいので「/mnt/mondo.tmp」と入力して「Enter」
スクラッチ領域を設定
- こちらも「/mnt」配下を利用したいので「/mnt/mondo.scratch」と入力して「Enter」
拡張属性のバックアップ可否を選択
- このまま「Yes」を選択して「Enter」
作業後の検証実施を実施するか選択
- このまま「Yes」を選択して「Enter」
対象OSのカーネルタイプを選択
- 今回は対象OSがCentOSなので「Yes」を選択して「Enter」
最終確認
- バックアップイメージ作成を実行して良いか聞いてくるので「Yes」を選択して「Enter」
- ※注意)イメージ作成中はIdleが0%になることもしばしば起こります。サービス提供中のサーバに対して実行する場合は、システムは負荷が低い時間を見計らって実行すると良いと思います。
- バックアップイメージ作成開始
- バックアップイメージ作成完了
作成されたバックアップイメージの確認
- それなりのサイズのISOファイルが作成されていればバックアップイメージ作成成功です。
[root@localhost ~]# ls -lt /mnt 合計 1287440 drwxr-xr-x 4 root root 4096 9月 19 18:53 . -rw-r--r-- 1 root root 1317023744 9月 19 18:39 mondorescue-1.iso drwxr-xr-x 25 root root 4096 9月 19 18:24 .. drwxr-xr-x 2 root root 4096 9月 19 15:29 cdrom drwxr-xr-x 2 root root 4096 9月 15 23:38 hgfs [root@localhost ~]#
■サーバをニフティクラウドに持ち込む
ニフティクラウドで受け入れ用サーバを作成する
- ニフティクラウドのコントロールパネルにログインして、受け入れ用サーバを作成します。
作業に失敗した際のリスクを最小限にするため、ここでは「CentOS 5.6 64bit Plain」で「mini(1vCPU 512MB)」を「従量課金」で作成します。
受け入れ用サーバにバックアップイメージの展開
コンソール接続
- コンソールに接続します。
- コンソール接続の方法については下記の記事が詳しいです。
=>【ニフティクラウドの機能アップデートを実施しました】
バックアップイメージのISOのマウント
- コンソールメニューの「Devices」から「CD/DVDドライブ1」内の「Connect to Disk Image File(iso)..」を選択し、バックアップイメージのISOファイルを指定します
ISOから起動
- コンソールメニューの「VMware Remote Console」から「Reset」を選択しサーバを再起動させます。
- 起動中にコンソール内で素早く「Esc」を押し「Boot Menu」を表示させ「CD-ROM Drive」を選択して「Enter」

- ※注意)複数回「Esc」を押すと「Boot Menu」が閉じてしまうので、素早く確実に一度だけ押す事
バックアップイメージ展開実行
- コンソールメニューの「VMware Remote Console」から「Reset」を選択しサーバを再起動させます。
動作確認
カーネルで「準仮想化ドライバ」が読み込まれているか確認
[root@localhost ~]# modprobe -l | grep vm

- ※注意)確認内容の詳細は「ニフティクラウド探検隊 お手軽ワンライナーでカーネルアップデートしてみた。【取扱注意!】」を参考にしてください。
ネットワークの確認
- IPアドレスがDHCPによる自動取得になっているか確認
[root@localhost ~]# vi /etc/sysconfig/network

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1

OS初期化スクリプト適用
- 「OS初期化スクリプト」の適用
[root@localhost ~]# wget http://cloud.nifty.com/doc/cloudinit_linux.tar.gz
[root@localhost ~]# tar vzxf cloudinit_linux.tar.gz
[root@localhost ~]# cp niftycloud_update /etc/rc.d/init.d/
[root@localhost ~]# cp niftycloud_init /etc/rc.d/init.d/
[root@localhost ~]# chmod 755 /etc/rc.d/init.d/niftycloud_*
[root@localhost ~]# ln -s /etc/rc.d/init.d/niftycloud_update /etc/rc3.d/S04niftycloud_update
[root@localhost ~]# ln -s /etc/rc.d/init.d/niftycloud_init /etc/rc3.d/S05niftycloud_init
[root@localhost ~]# date; shutdown -r now

コントロールパネルで異常が出てないか確認
- 特にエラーやワーニング等が出力されていなければ作業完了。
- お疲れ様でした。
■まとめ
無事、手元のサーバをまるごとニフティクラウドに持ち込む事が出来ました。
今回は手元にあったvSphereHypervisor上の仮想マシンの持ち込みを紹介しましたが、もう一工夫すれば、XenServerやKVM、Hyper-vといった別のHyperviser上の仮想マシンの持ち込みや、物理サーバですらイメージ化によって持ち込む事が可能です。
また、今回、サーバのイメージ化ツールとして利用したMondo rescueは、サーバを動作させたままイメージ化出来るのが魅力的なツールですが、他にもAcronisやNorton Ghostといった商用ソフトやClonezillaといったOSSもサーバのイメージ化に使える大変便利なツールです。
それぞれのツールに特徴があるので、環境によって使い分けるのが良いかと思います。
実際のサーバ移行には、ここで触れなかった様々な問題が出るかもしれません。
しかし、手元のサーバをそのままニフティクラウドに載せる事で環境構築で楽が出来るのは確実です!
是非チャレンジしてみて下さい。
※本記事は全ての環境からのサーバ持ち込みを保証する物ではありません。
また、サーバーにデフォルトで設置されているVMware toolsに変更が入った時点でサポートが対象外になりますので、ご了承の上、お試しください。