Clonezilla を使って仮想 Linux 環境に移行する

オープンソース・ツールの Clonezilla Live を使って物理サーバーを仮想サーバーに変換する方法

この記事では、オープンソースのクローニング・ソフトウェア Clonezilla Live を使って物理サーバーを仮想サーバーに変換する方法を学びます。具体的には、イメージ・ベースの手法を使って物理システムから仮想システムへ移行する方法を学びます。

Ting Li, Software Engineer, IBM

author photoTing Li は現在、上海にある IBM China Systems & Technology Lab の IBM Director Product Engineer チームで働いています。それ以前にはストレージ管理ソフトウェアと CIM 開発に 1 年半の経験を積んできました。



2009年 4月 21日

今日のデータ・センターが取り組んでいる 2 つの概念、つまり経済性とグリーン・コンピューティングのおかげで、サーバー仮想化が IT の世界でホットな話題となっており、多くのハードウェア・ベンダーやソフトウェア・ベンダーがそのためのソリューションを提供しています。仮想化ソリューションには、いくつかの利点があります。例えば、仮想化によってサーバー間で仮想マシンを容易に移植できるようになったり、ソフトウェアの開発やテストのための複製可能なクローン・イメージとして仮想マシンをプロビジョニングできるようになったりします。

仮想化されたサーバーを実現するためのプロセスは、下記のように出発点によって異なります。

  • ゼロからシステムを設計している場合には、おそらく土台から仮想化を実装することになるでしょう。
  • システムが既に物理的な状態で存在している場合には、おそらく物理環境から仮想環境に移行する必要があるでしょう。

この 2 番目のプロセスを私は P2V (physical-to-virtual) マイグレーションと呼んでおり、これがこの記事の主題です。通常、P2V マイグレーションを実現する方法には、手動による方法や自動的な方法など、いくつかの方法があります。ここではそれらの方法について説明し、次にクローニング・ベースのソリューションである Clonezilla Live を使って物理サーバーを仮想マシンに変換する方法を説明します。

Clonezilla Live を利用する場合には、まず物理サーバーからシステム・イメージを作成し、次にブート CD を使って仮想マシンのハードディスク上にイメージを復元します。この方法は簡単で短時間に行うことができるため、元のシステムを変更することなく (ハードウェアのミスマッチによって起こり得る問題を避けながら) システムのコピーを分析しなければならないソフトウェア開発者、システム管理者、サポート・エンジニアにとって有用なはずです。

: 仮想システムや物理システムのハードウェアやソフトウェアには非常に幅広い種類があるため、この記事で説明する手順はあくまでも 1 つの参考でしかありません。皆さんの移行プロジェクトでシステムを適切に動作させるためには、この記事で説明していることの一部を別の方法で行う必要があるかもしれません。

Clonezilla Live の紹介

Clonezilla は Norton Ghost に似た、オープンソース (GPL) のクローン作成ソリューションであり、特定のパーティションまたはディスク全体のクローンを作成するのに使用することができます。Clonezilla には、Clonezilla SE (server edition) と Clonezilla Live という 2 つのリリースがあります。Clonezilla SE はネットワーク全体にわたって複数のサーバーを同時にバックアップする場合や復元する場合に最適です。Clonezilla Live は 1 台のマシンのクローン作成用に、Clonezilla SE よりも軽量に作られています。

Clonezilla Live は Debian Live と Clonezilla との組み合わせであり、以下のような特徴と利点を持っています。

  • ハードディスク上で使用されているブロックのみを複製します。
  • 複数のファイルシステム、さらには LVM もサポートしています (GNU/Linux での ext2、ext3、xfs、jfs、LVM2 や、Microsoft Windows での FAT、NTFS、そして Mac OS での HFS+ など)。
  • Clonezilla SE の場合とは異なり、Linux のディスクレス・リモート・ブート・サーバー (DRBL: Diskless Remote Boot in Linux) をセットアップする必要がありません。
  • CD/DVD、USB フラッシュ・ドライブとハード・ドライブ、そして PXE によるブートがサポートされています。
  • ブートと復元の手順をカスタマイズできる機能があります。

Clonezilla Live は既存のツール (Partition Image、ntfsclonepartclonedd など) を使用してパーティションまたはディスクを複製します。一覧にないファイルシステムの場合には、Clonezilla はすべての使用中のブロックと未使用ブロックを dd を使ってコピーします。


仮想化ツールとシステム移行ツール

物理サーバーを仮想マシンに移行する際には、ある物理サーバーから別の物理サーバーに移行する場合と同じ制約を受ける場合があります。例えば 64 ビット・システムのイメージを 32 ビットのプラットフォームに移行することはできません。また、Windows イメージを仮想マシン上に復元する際には、ほぼ確実に HAL (Hardware Abstract Layer) の問題に突き当たります。

物理的な世界と仮想的な世界の間でシステムの移行を行う場合には、多くの無料ツールや商用ツールが役立ちます (PlateSpin PowerConvert、VMware Convert、Microsoft® Virtual Server Migration Tookit、その他のクローニング・ソフトウェアなど)。またこれらの移行ツールを利用すると、物理サーバーと仮想マシンとの間のハードウェアのミスマッチによって起こる可能性のある問題を解決することもできます。必要なドライバーをオペレーティング・システムのカーネルに渡し、システムのブート・フェーズでドライバーを適切に初期化することは、こうしたツールの役割の 1 つです。もちろん、こうした P2V ツールの大部分は 1 台のマシンの移行に必要とされる以上の機能を備えています。

VMware Server は無料の独自プラットフォームであり、Linux ホストと Windows ホストの両方で複数のゲスト・オペレーティング・システムのタイプ (Windows から Linux、Solaris などに至るまで) をサポートしています。ハイパーバイザー上で実行する VMM (Virtual Machine Monitor) は完全仮想化ソリューションとして、利用可能なあらゆるタイプのハードウェア・リソース (仮想 BIOS、仮想メモリー、仮想 SCSI コントローラー、仮想ネットワーク・カードなど) を備えた仮想マシンを実現することができます。ゲスト・オペレーティング・システムはベースとなるハードウェアから完全に分離されているため、何も変更せずに実行することができます。

では、Clonezilla Live を使った P2V マイグレーションについて調べてみましょう。ここでは VMware Server でホストされる仮想マシン上に Windows システムのイメージを複製します。


ステップ 1. システム・パーティションを複製する

Clonezilla に関するヒント

移行を成功させるためには、この記事で説明するステップに従う際に以下のヒントを頭に入れておき、成功のための秘訣をまとめたものとして見返す必要があります。

  1. イメージ・リポジトリーにパーティション内のデータを保存するための十分な空きスペースがあることを確認します。
  2. イメージを複数のボリューム・ファイルに分割し、最大ファイル・サイズの制約を回避します。
  3. Clonezilla では、サイズが大きいハードディスクやパーティションからサイズの小さいハードディスクまたはパーティションにイメージを復元することはできません。
  4. Clonezilla Live が VMware の全バージョンに対して SCSI ディスクをサポートしているわけではない場合には、IDE タイプのディスクを使って VM を作成します。
  5. Clonezilla Live のシェル配下にイメージを復元する場合には、root としてログインする必要があります。
  6. 複製されたパーティション・イメージを復元するためには、復元先の仮想ディスクがフォーマット済みのディスクとして Clonezilla に認識されていなければなりません。
  7. Windows® の移行を成功させるためには sysprep などのツールや HAL に関する十分な知識が必要です。

まず、Clonezilla Live CD から物理サーバーをブートします。

Clonezilla にはいくつかのブート方法が用意されています。例えば To RAM オプションを選択すると、Clonezilla と共に Debian Live がメモリー内にロードされ、CD-ROM を他の目的に使用することができます。デフォルトを選択すると、言語とキーボード・レイアウトを設定するように要求されます。これはデフォルトのままにしておきます。

次に、GUI ベースのウィザードを使ってバックアップと復元を行うのか、あるいは Debian シェルを使って高度なアクセスや操作を行うのかを選択します。十分な経験を積んだユーザー以外は Start_Clonezilla オプションを使う必要があります。シェルの使い方は「仮想マシン上にイメージを復元する」で説明します。

ここで、複製のタイプとして下記の 2 つのオプションがあります。

  • device-device はデバイスからデバイスに直接複製するためのオプションです。
  • device-image はデバイスからイメージにバックアップするためのオプションです。

ここでは物理システムを仮想マシンに変換しているので、device-image タイプを選ぶ方が適切です。

次に、イメージのバックアップを書き込む先であり、イメージを復元する際の復元元となるイメージ・ディレクトリーを選択する必要があります (図 1)。ネットワークに接続されており、ローカル・ディスクにバックアップ・イメージ用の空きスペースがない場合には、ssh-server、samba-server、nfs-server といったオプションが有効です。この記事ではシステム・パーティションを複製し、それを同じハードディスク上の別のパーティションに保存します。local_dev を選択すると Clonezilla のイメージ・リポジトリーとして USB デバイスを選択することができます。

図 1. イメージ・リポジトリーの選択
イメージ・リポジトリーの選択

内部ディスクあるいは外部から挿入された (USB) ディスクのどちらを選択したかに応じて、今度はイメージ・リポジトリー (/home/partimag) にリンクする場所を選択するように要求されます。イメージは実際には home/partimag 配下にあるディレクトリーであり、そのディレクトリーの中に、そのイメージに関連するすべての情報とデータ・ファイルがあります。この例では、システム・パーティション /dev/sda1 は /dev/sda5 に置かれるイメージとして保存されます。従って sda5 を選択すると /home/partimag/ としてマウントされます (図 2)。

図 2. イメージのパーティション
イメージのパーティション

図 2 には、イメージ・デバイスをマウントするための追加のコマンド情報と現在のファイルシステムのレイアウトが /home/partimag の空きスペース情報のレポートと共に表示されています。この画面で、イメージ・リポジトリーにシステム・パーティションのデータを保存するための十分な空きスペースがあることを確認します。

さらに、図 3 に示す画面では、Clonezilla イメージのホーム・ディレクトリーがイメージ・デバイスの中にあることを確認することができます。

図 3. Clonezilla のモード
Clonezilla のモード

以上の確認を終えたら、Clonezilla Live で使用するモードを選択します。ローカル・ディスク全体を保存、復元するのか、あるいは個々のパーティションを保存、復元するのかを選択します。パーティションをバックアップするためには 3 番目の項目、saveparts を選択します。

モードを選択すると、バックアップ対象のイメージの名前 (Sys01-2009-02-23-img) とソース・デバイス (/dev/sda1) を入力するように要求されます。その次の何桁かはイメージ作成プロセスのための高度なオプションを示しています。Clonezilla はさまざまなファイルシステム・フォーマットをサポートしており、またパーティション複製ツール (ntfsclone、partclone、partimage、dd など) と統合されているため、現在のファイルシステム用に使用するツールの優先順位を設定することができます。複製対象のファイルシステムをよく理解していない場合にはデフォルトの設定のままにしておきます。この記事での NTFS ベースのバックアップにはデフォルトの設定 (-q (ntfsclone > partimage > dd)) が最適です。

図 4 は複製を最適化するために設定可能な他のパラメーターを示しています。

図 4. Clonezilla の高度なパラメーター (複製の場合)
Clonezilla の高度なパラメーター (複製の場合)

Windows システム・イメージの場合には、-rm-win-swap-hib というオプションを選択するとスワップ・ファイルとハイバネーション・ファイルが除外され、バックアップ時間と復元時間を節約することができます。保存されたイメージを別の場所に転送したい場合や、イメージを復元する際にイメージの完全性をチェックする必要がある場合には、-gm オプションまたは -gs オプションをお勧めします。

また Clonezilla Live では、効率と実行時間を考慮して圧縮方法を選択することができます。一部のファイルシステムは 2GB よりも大きなファイルをサポートしないため、イメージを複数のボリューム・ファイルに分割することで最大ファイル・サイズを設定するオプションがあります。

最後に、複製プロセスが終了した後のアクションを -p パラメーターを使って指定することができます。

ひと通り設定が終わったら、選択した結果の実際の動作を確認します。ocs-sr ツールは、バックアップ・プロセスにも復元プロセスにも使うことができます。Clonezilla の GUI ベースのウィザードによる設定を完了すると、ocs-sr ツールによって、コマンドラインから実行した場合でも同じ結果を得るために必要な ocs-sr コマンドとパラメーターが表示されます。また ocs-sr ツールは ocs-sr コマンドを含む一時ファイルも作成し、/tmp ディレクトリーの下に保存します。

あとは、バックアップが完了するまでしばらく待ちます。バックアップが完了してサーバーが起動したら、イメージ・ディレクトリーを物理サーバーから仮想マシン用の復元ソースとして使用する場所に転送します。


ステップ 2. 仮想マシンを準備する

ここから先では、システムの移行先としての仮想マシンを VMware Server の中に作成します。ホスト環境は、必ず VMware Server とゲスト・オペレーティング・システムの要件と制限に適合している必要があります。仮想マシンはベースラインとしてホストと同じプロセッサーを使用するため、ホスト環境と複製される物理サーバーとが互換性のあるタイプのプロセッサーを使用している必要があります。

まず、VMware の New Virtual Machine Wizard を使って仮想マシンを作成します。その際に、物理サーバーから複製されたオペレーティング・システムのバージョンと一致するオペレーティング・システムのバージョンを選択します。また、複製元のシステムが置かれていたパーティションと同じ、あるいはそれよりも大きなサイズの仮想ディスクも作成する必要があります。これは Clonezilla がサイズの大きいハードディスクやパーティションからサイズの小さいハードディスクやパーティションへのイメージの復元をサポートしていないためです。ただし Clonezilla Live による復元プロセスでは、サイズの大きいハードディスクに対してはオリジナルのディスク・レイアウトに従ってイメージを復元することができます。

図 5. 仮想マシンのディスク容量を指定する
仮想マシンのディスク容量を指定する

: Clonezilla Live のカーネルは、初期のバージョンの VMware Server に対しては SCSI ディスクをサポートしていないかもしれません。その場合には、仮想マシンを作成する際に IDE タイプの仮想ディスクを使用します。

次に、仮想マシンに対して Clonezilla Live の ISO イメージを使えるように、仮想 CD-ROM デバイスを変更します (図 6)。

図 6. Clonezilla Live の ISO イメージを VM で使用する
Clonezilla Live の ISO イメージを VM で使用する

さらに、この前のセクションで作成したシステム・イメージのファイルを、ホスト・サーバーの 2 番目のディスク (PhysicalDrive 1 の Partition 0) の配下に置きます。VMware Server はホスト・システム上でのパススルー SCSI ドライブへのアクセスができるため、VMware に直接追加された PhysicalDrive 1 の Partition 0 を使って仮想マシン用に別のハードディスクを追加します。復元フェーズでは、このデバイスが /home/partimag に表示されます。

図 7. システム・イメージを持つパーティションを追加する
システム・イメージを持つパーティションを追加する

これでコンパクトな仮想マシンを作成できたので、この仮想マシンを Clonezilla Live からブートしてみましょう。


ステップ 3. 仮想マシン上にイメージを復元する

Clonezilla Live イメージから仮想マシンをブートすると、Clonezilla Live は GUI ベースの復元ウィザード・インターフェースを表示します。このインターフェースはバックアップ時のモード選択前に使用したものと同じです (図 8)。この例では Debian ベースの Clonezilla Live のシェルから直接入力し、手動による復元を選択します。

図 8. Clonezilla Live のシェル
Clonezilla Live のシェル

Clonezilla Live シェルの配下にあるイメージを復元するためには、root としてログインする必要があります (リスト 1)。こうすることで Clonezilla にフル・アクセスすることができます。

リスト 1. root ユーザーになる
user@debian:~$ sudo su -
debian:~#

今度は、復元先のディスクと、ソース・イメージを置くためのディスクを決定する必要があります。リスト 2 は 2 つのローカル・ハードディスクを示しています。

リスト 2. ディスク情報を表示する
debian:~# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 160.0 GB, 160039272960 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa0bea0be

Device Boot         Start       End      Blocks       Id    System
/dev/sdb1            1            19457   156288321   7      HPFS/NTFS

/dev/sda は復元先として作成した仮想ディスクです。このディスクはフォーマットされていません。/dev/sdb はホスト・サーバーの PhysicalDrive 1 であり、先ほどパススルー SCSI デバイスの形で仮想マシンに直接追加したものです (複製したクローン・イメージはこのディスク上にあります)。

複製されたパーティション・イメージを復元するためには、復元先の仮想ディスクがフォーマット済みとして Clonezilla に認識される必要があります。仮想ディスクにラベルを書き込むためには、fdisk ツールを使うとことができます。この手順をリスト 3 に示します。

リスト 3. 復元先のディスクをフォーマットする
# fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xee2955bc.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

The number of cylinders for this disk is set to 5221.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-5221, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-5221, default 5221): 
Using default value 5221

Command (m for help):
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
[ 866.679048] sd 0:0:0:0: [sda] 83886080 512-byte hardware sectors (42950 MB)
[ 866.682658] sd 0:0:0:0: [sda] Write Protect is off
[ 866.683795] sd 0:0:0:0: [sda] Cache data unavailable
[ 866.683822] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 866.686443]  sda: sda1
[ 866.695530] sd 0:0:0:0: [sda] 83886080 512-byte hardware sectors (42950 MB)
[ 866.698278] sd 0:0:0:0: [sda] Write Protect is off
[ 866.699422] sd 0:0:0:0: [sda] Cache data unavailable
[ 866.699495] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 868.702058]  sda: sda1 
Syncing disks.

リスト 3 のデフォルト値を受け入れます。この時点ではパーティション・タイプを気にする必要はありません。イメージを復元する間に Clonezilla がパーティション・タイプを再度作成するからです。

バックアップの手順と同様、書き込み可能なデバイスまたはスペースを /home/partimag としてマウントする必要があります。すると Clonezilla は /home/partimag の配下にある複製されたイメージ・ディレクトリーを検索します。パーティション /dev/sdb1 上のイメージから新たに作成されたパーティション /dev/sda1 に復元する準備として、まず書き込み権限を持つものとして /dev/sdb1 を /home/partimag にマウントします。この場合、/dev/sdb1 はホスト・サーバー上の NTFS ファイルシステムであるため、既に開いている可能性があります。そのため、適切にマウントするためには force オプションを使う必要があるかもしれません。このマウント方法をリスト 4 に示します。

リスト 4. イメージ・デバイスを /home/partimag にマウントする
debian:~# mount -t ntfs-3g /dev/sdb1 /home/partimag -o force
debian:~# ls /home/partimag
Sys01-2009-02-23-img

/home/partimag と復元先パーティションが準備できたら、対象の環境にイメージを復元する上で最適の方法を選択する必要があります。バックアップの場合とまったく同様、イメージを復元する場合にもClonezilla には高度で柔軟なオプションとしてさまざまなものが用意されています。図 9 は復元用のパラメーターとその意味を示しています。

図 9. Clonezilla の高度なパラメーター (復元の場合)
Clonezilla の高度なパラメーター (復元の場合)

Windows のシステム・イメージを復元する場合には、復元先ディスクにブート・ヘッダーを書き込む必要があります。そのための推奨オプションは、-j0 (dd を使ってパーティション・テーブルを作成する) と -t1 (クライアントは作成済みの MBR を syslinux から復元する) です。hnX PC (X は 0 または 1) オプションは対象環境に必ず一意の Windows マシン名を持たせるために有効です。復元先の現在のパーティション・レイアウトを保持したくない場合には、-k1 やパーティション関係の他のパラメーターを使うと、別のパーティション・テーブルを作成することができます。

リスト 5 は /home/partimag (/dev/sdb1) の Sys01-2009-02-23-img というイメージを /dev/sda1 というデバイスに復元します。

リスト 5. コマンドラインを使ってイメージを復元する
debian:~# /opt/drbl/sbin/ocs-sr -e1 auto -c -t1 -r -j3 -cm -j0 -p reboot restoreparts
             "Sys01-2009-02-23-img" "sda1"

入力した内容を確定すると、復元の要約と進行状況が図 10 のように表示されます。これが終わると、システムが仮想マシン上に複製されています。

図 10. Clonezilla による復元の要約と進行状況
Clonezilla による復元の要約と進行状況

復元が完了すると、仮想マシンからシステムがブートされます。パフォーマンスを改善するためには、仮想オペレーティング・システム用に VMware Tools をインストールします。


まとめ

この記事は、イメージ・ベースの手法とオープンソースのツールを使って物理システムから仮想システムに移行する方法を説明しました。この記事で説明したステップは参考にすぎないことを忘れないでください。環境の違いにより、皆さんのシステムで実際に移行を行う場合、この記事で説明した内容とは異なる可能性があります。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • My developerWorks コミュニティーに加わってください。パーソナル・プロファイルとカスタム・ホームページを利用すると、皆さんの関心事項に合わせて developerWorks をカスタマイズすることができ、また他の developerWorks ユーザーとやり取りすることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, Open source
ArticleID=393882
ArticleTitle=Clonezilla を使って仮想 Linux 環境に移行する
publish-date=04212009