本文へジャンプします。

ニフティクラウド探検隊 ニフティクラウドにサーバを持ち込んでみた。

こんにちは。
ニフティでインフラを守るお仕事をしている五月女です。
Photo_2

08/22に実施された機能追加で待望のコンソール接続機能が提供されました!ヽ(*´∀`)ノ
前々から「提供して欲しい!」と言い続けてきた機能なのでとても嬉しいです。

コンソール接続によって様々な事が実現可能になりました。
コンソール接続は、対象サーバのネットワーク設定状態に依存しないため、iptablesやsshといったサーバのネットワーク周りの設定に失敗してしまった場合も「設定を元に戻してサーバを救う」といった事が出来ます。
また、アクセス過多でssh経由のログイン出来なくなってしまったサーバをコンソールから状態を確認したり、前々回紹介した「カーネルアップデート」の様なサーバの根幹に関わる作業も、コンソール画面を確認しながら実施する事で、より確実に実施出来る様になりました。

こんなにも便利なコンソール接続機能ですが、今回はさらに便利な使い方として、コンソール接続機能を利用した「手元のサーバをニフティクラウドに持ち込む方法」を紹介します。

目次

※内容は、2011年09月現在時点の情報です。

■ニフティクラウドに手元のサーバを持ち込みたい!

ニフティクラウドは「サーバが欲しい!」と思ってから約5分でサーバを提供してくれます。
しかし、当然の事ながら、提供されたサーバの環境構築は自分で実施しなければなりません。

一旦、ニフティクラウド上に環境構築してしまえば、後はコピー機能を使って同じ環境を無限に増やす事が可能ですが、どうしても最初の環境構築作業は外せません。
ワンライナーで構築出来るような簡単な環境なら良いのですが、複雑な作業が求められたり、大量の設定確認が必要な場合、環境構築は多くの作業時間を必要とします。

さらに、担当者が退社しており、構築手順書も無いサーバだったりする場合、ニフティクラウド上にもう一度同じ環境を構築する事は困難を極めるでしょう。
W_hand_up_01_g_bl
最近の電力事情やBCP対応で「社内にあるサーバをクラウドに移行しよう!」なんてプロジェクトを進めてる人で、頭を抱えてる人もいるのでは無いでしょうか。

自分自身、そんな事をしていた時「手元のサーバをそのままニフティクラウドに持ち込めたら楽なのになぁ」と思っていました。

そこで、そんな悩みを解消する「サーバのイメージ化」「ニフティクラウドへの持ち込み」について考えてみました。

■サーバ持ち込みに必要な要素の確認

ニフティクラウドが提供するコンソール機能とサーバのイメージ化について

ニフティクラウドが提供するコンソール機能は、ISOイメージのマウントとISOイメージからのサーバブート機能を備えています。
この機能を使い、ISOイメージとして手元のサーバを「バックアップ」し、コンソール接続を介してニフティクラウドへ「リストア」すれば、手元のサーバをニフティクラウドに持ち込む事が出来ます。

サーバをまるごとイメージとしてバックアップするツールは、有償・無償を含めて様々なツールが提供されていますが、今回は、サービスを提供中のサーバを電断せずにイメージ化する手段として、実績あるOSSプロダクトである「Mondo Rescue」を利用してみたいと思います。

持ち込むサーバについて
  • 今回、ニフティクラウドへ持ち込むサーバはVMware vSphere Hypervisor(ESXi4.1)上に作成したCentOS5.5な仮想マシンでやってみました。

Home_service_2

  • 持ち込むサーバ(仮想マシン)

    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を利用してインストールする事が出来ます。

  • パッケージの確認

    [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 ~]# wget ftp://ftp.mondorescue.org/rhel/5/x86_64/mondo-2.2.9.7-1.rhel5.x86_64.rpm
[root@localhost ~]# wget ftp://ftp.mondorescue.org/rhel/5/x86_64/afio-2.5-1.rhel5.x86_64.rpm
[root@localhost ~]# wget ftp://ftp.mondorescue.org/rhel/5/x86_64/buffer-1.19-4.rhel5.x86_64.rpm
[root@localhost ~]# wget ftp://ftp.mondorescue.org/rhel/5/x86_64/mindi-2.0.7.8-1.rhel5.x86_64.rpm
[root@localhost ~]# wget ftp://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

Mondo_rescue_archive01

バックアップイメージ作成先ディバイスの選択
  • 今回はローカルHDDの空き領域内にバックアップイメージを作成するので「Hard disk」を選択して「Enter」

Mondo_rescue_archive02

  • ※注意)十分な空き領域のあるディバイスを選択する事
バックアップイメージ作成先ディレクトリを設定
  • 適当に開いてそうな領域として「/mnt」を入力して「Enter」

Mondo_rescue_archive03

圧縮方法を選択
  • 「bzip2」を選択して「Enter」

Mondo_rescue_archive04

圧縮率の選択
  • 圧縮率が高ければバックアップイメージのサイズは小さくなりますが、イメージ作成・展開に時間がかかってしまいます。
    今回は「Average」を選択して「Enter」

Mondo_rescue_archive05

ISOファイルの最大サイズを設定
  • 標準の「4480」のまま「Enter」

Mondo_rescue_archive06

ISOファイルのファイル名先頭文字を設定
  • 標準の「mondorescue」のまま「Enter」

Mondo_rescue_archive07

対象のパスを設定
  • 事前に調べておいたディスク構成から、今回は「/」を入力して「Enter」

Mondo_rescue_archive08

対象外のパスを設定
  • 今回は「/mnt」配下にバックアップイメージを作成するので、バックアップ対象外にしたい「/mnt」と入力して「Enter」

Mondo_rescue_archive09

テンポラリ領域を設定
  • こちらも「/mnt」配下を利用したいので「/mnt/mondo.tmp」と入力して「Enter」

Mondo_rescue_archive10

スクラッチ領域を設定
  • こちらも「/mnt」配下を利用したいので「/mnt/mondo.scratch」と入力して「Enter」

Mondo_rescue_archive11

拡張属性のバックアップ可否を選択
  • このまま「Yes」を選択して「Enter」

Mondo_rescue_archive12

作業後の検証実施を実施するか選択
  • このまま「Yes」を選択して「Enter」

Mondo_rescue_archive13

対象OSのカーネルタイプを選択
  • 今回は対象OSがCentOSなので「Yes」を選択して「Enter」

Mondo_rescue_archive14

最終確認
  • バックアップイメージ作成を実行して良いか聞いてくるので「Yes」を選択して「Enter」

Mondo_rescue_archive15

  • ※注意)イメージ作成中はIdleが0%になることもしばしば起こります。サービス提供中のサーバに対して実行する場合は、システムは負荷が低い時間を見計らって実行すると良いと思います。

  • バックアップイメージ作成開始

Mondo_rescue_archive16

  • バックアップイメージ作成完了

Mondo_rescue_archive17

作成されたバックアップイメージの確認
  • それなりのサイズの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)」を「従量課金」で作成します。

Niftycloud_restore01

受け入れ用サーバにバックアップイメージの展開
コンソール接続

Niftycloud_restore02

バックアップイメージのISOのマウント
  • コンソールメニューの「Devices」から「CD/DVDドライブ1」内の「Connect to Disk Image File(iso)..」を選択し、バックアップイメージのISOファイルを指定します

Niftycloud_restore03

Niftycloud_restore04

ISOから起動
  • コンソールメニューの「VMware Remote Console」から「Reset」を選択しサーバを再起動させます。
  • Niftycloud_restore05

  • 起動中にコンソール内で素早く「Esc」を押し「Boot Menu」を表示させ「CD-ROM Drive」を選択して「Enter」

Niftycloud_restore06

  • ※注意)複数回「Esc」を押すと「Boot Menu」が閉じてしまうので、素早く確実に一度だけ押す事
バックアップイメージ展開実行
  • Mondo Rescueのリストアメニューが表示されるので「nuke」と入力し「Enter」
  • Niftycloud_restore07_01

  • 途中経過
  • Niftycloud_restore08

  • 展開完了!
  • Niftycloud_restore09

  • コンソールメニューの「VMware Remote Console」から「Reset」を選択しサーバを再起動させます。
  • 動作確認
    カーネルで「準仮想化ドライバ」が読み込まれているか確認
    [root@localhost ~]# modprobe -l | grep vm
    

    Niftycloud_restore10

    ネットワークの確認
    • IPアドレスがDHCPによる自動取得になっているか確認
    [root@localhost ~]# vi /etc/sysconfig/network
    

    Niftycloud_restore11

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

    Niftycloud_restore12

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

    Niftycloud_restore13

    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
    

    Niftycloud_restore14

    コントロールパネルで異常が出てないか確認
    • 特にエラーやワーニング等が出力されていなければ作業完了。
    • お疲れ様でした。

    ■まとめ

    無事、手元のサーバをまるごとニフティクラウドに持ち込む事が出来ました。

    今回は手元にあったvSphereHypervisor上の仮想マシンの持ち込みを紹介しましたが、もう一工夫すれば、XenServerやKVM、Hyper-vといった別のHyperviser上の仮想マシンの持ち込みや、物理サーバですらイメージ化によって持ち込む事が可能です。

    また、今回、サーバのイメージ化ツールとして利用したMondo rescueは、サーバを動作させたままイメージ化出来るのが魅力的なツールですが、他にもAcronisNorton Ghostといった商用ソフトやClonezillaといったOSSもサーバのイメージ化に使える大変便利なツールです。
    それぞれのツールに特徴があるので、環境によって使い分けるのが良いかと思います。

    実際のサーバ移行には、ここで触れなかった様々な問題が出るかもしれません。
    しかし、手元のサーバをそのままニフティクラウドに載せる事で環境構築で楽が出来るのは確実です!
    是非チャレンジしてみて下さい。

    ※本記事は全ての環境からのサーバ持ち込みを保証する物ではありません。
    また、サーバーにデフォルトで設置されているVMware toolsに変更が入った時点でサポートが対象外になりますので、ご了承の上、お試しください。

    => 「ニフティクラウド 禁止事項」

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

福澤真

福澤真

ニフティクラウドのコンパネ開発、運用をしています。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。

世良迪夫

世良迪夫

ニフティクラウドのRDBなどを担当しています