仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VMDK 仮想ハードディスクを Amazon Elastic Compute Cloud (EC2) AMI 形式に変換する方法

少しの間、Amazon Elastic Compute Cloud (EC2) の概念を紹介させてください。 Amazon EC2 は、世界中のユーザーに即座にサイズ変更可能でスケーラブルなコンピューティング能力を提供するように設計された Web サービスです。これは、大規模な Amazon ファーム内に配置された大規模な仮想化グリッドであり、CPU サイクルとハード ディスク領域を、必要な人にオンザフライで提供します。あなたがしなければならない唯一のことは支払うことであり、実際にはそれほど多くはありません.

実際に役立つように、Amazon は非常に手頃な価格でサービスを提供しています。これは、独自のインフラストラクチャの購入と維持に費やさなければならない金額に匹敵します。ホーム ユーザーにとって、これは最も差し迫った必要性とは思えないかもしれませんが、柔軟な要求を持つ中小企業は、ハードウェアに依存しない自由の可能性を確実に気に入るはずです。

このアイデアを気に入る人もいれば、嫌う人もいます。個人的には、これは素晴らしいプロジェクトだと思います。特に、Amazon クラウドは Linux に基づいており、主に Linux をサポートしており、Linux 市場の成長に大きなチャンスを生み出しています。 Mark Shuttleworth は、次の Ubuntu リリースに Amazon の機能を組み込むという彼の意図に対して、かなりの批判を受けましたが、デスクトップと Web の間のニーズの融合が、Ubuntu でのみ利用可能な「優美な」柔軟性を手招きしているため、これは賢明なステップだと思います。クラウド。

VMDK 仮想ハードディスクを Amazon Elastic Compute Cloud (EC2) AMI 形式に変換する方法

自宅で ...

自宅では、従来の仮想化が提供する以上のものが必要になることはめったにありません。しかし、リビングルームに 16GB の RAM を備えた独自のデータベース サーバーを設置する価格が提示されるたびに、おそらく Amazon を検討し始めるでしょう。

そのようなことが起こった場合、Amazon EC2 の使用方法を知りたいと思うでしょう。完全なチュートリアルは、この記事の範囲を超えています。そのための公式ドキュメントがあります。

代わりに、Amazon 仮想マシン イメージの作成という、おそらくホーム ユーザーが遭遇する可能性がある最も重要なものではありますが、スキーム全体の一部を示します。 VMware 製品で使用される自作の仮想ハードディスクを、EC2 で使用できる Amazon 互換のイメージに変換する方法を紹介します。

そもそも Amazon イメージを作成したり、既存のビルドを使用したりしないのはなぜですか?

良い質問です! Amazon では、最初からイメージを作成することも、既存のテンプレート (SUSE、Ubuntu、RedHat など) のいずれかを出発点として使用することもできます。ただし、画像の作成は少し複雑です。また、既存のテンプレートを使用することは、あなたが望むものではないかもしれません.たとえば、特別なカスタム構成のディストリビューションを実行したい場合や、自分以外の誰も利用できないプライベートなデジタル署名されたイメージを使用したい場合があります。あなたは完全なコントロールを望んでおり、他の人にあなたのためにイメージを作成させる余裕はありません.

目的:自宅で画像を作成し、Amazon にアップロードする

このチュートリアルを非常に重要な特定のテーマに絞り込んでいます。独自の証明書を持つプライベート イメージが必要です。自宅で、余暇に、自分の時間と費用で、帯域幅と長時間の構成にお金を浪費することなく作成したいと考えています。準備ができたら、それを変換して、Amazon Simple Storage Service (S3) と呼ばれる Amazon ストレージにアップロードします。

注:このチュートリアルの手順を使用するには、有効な Amazon EC2 アカウントが必要です。さらに、チュートリアルを正しく実行するには、Linux を使用する必要があります。ここで使用されている特定のツールは、Linux でのみ使用できますが、Amazon が Linux で実行されていることを考えると驚くことではありません。

最初の質問:何から変換しますか?

別の良い質問です。多くのデスクトップ仮想化フォーマットが利用可能です。ただし、自宅で仮想化を実行している場合は、VMware 製品のいずれかを使用している可能性が高くなります。 VMware は、仮想ハード ディスクに .vmdk 形式を使用します。これは、Amazon Machine Image (AMI) に変換するソース形式です。

ただし、VMDK 仮想ディスクを AMI に直接変換することはできません。何をする必要があるかを示すために、このチュートリアルを書きました。さぁ、始めよう。

ステップ 1:必要なものがすべて揃っていることを確認する

始める前に、あれやこれやの変換を急いで開始する前に、考慮すべき非常に重要な事柄がいくつか (かなりの数) あります。

さらに、読み始める前に、Amazon EC2 プロジェクトはまだ初期段階にあることを認識していただく必要があります。そのため、ここで示す推奨事項は将来のセットアップに部分的にしか適用されないか、まったく適用されない可能性があります。私は通常、調査結果を謙虚に評価することはしませんが、この特定のケースでは、繊細な変数が非常に多いため、この努力の成功を保証することはできません.ただし、この小さな入場でがっかりさせないでください。フォローしてください。

Amazon の一般的な要件 (VMware に関係なく):

Xen の要件

また、ディストリビューションを変換して Amazon で使用する前に、ディストリビューションを xenify する必要があります。これは何を意味するのでしょうか? Amazon の仮想インフラストラクチャは、VMware、KVM、またはその他の仮想化製品に似たオープンソースのハイパーバイザーである Xen に基づいています。 Amazon 仮想マシンをこのプラットフォームで実行するには、特定のカーネルとカーネル モジュールが必要です。適切な Xen カーネルをダウンロードして展開し、Xen モジュールをインストールして、GRUB メニューを更新する必要があります。

詳細については、お気に入りのディストリビューションの Web サイト / ソフトウェア リポジトリにアクセスし、バージョンに一致する関連するカーネルをダウンロードしてください。アーカイブを解凍し、そこに含まれるファイルを /boot および /lib に配置します。次のステップは、関連するモジュール ファイルを作成することです:

depmod -F /boot/System.map-<カーネル>-xenU -a <カーネル>-xenU

カーネルが使用しているバージョンと一致する場所 (uname -r)。

これが完了したら、モジュールが /lib/modules/-xenU ディレクトリに存在することを確認します。最後に、Xen カーネル エントリが含まれるように GRUB menu.lst 構成ファイルを更新します。このエントリ (スタンザ) は、デフォルトで起動する必要があります。 GRUB の詳細については、私の詳細なチュートリアルを参照してください。

パーティショニング要件

別のトリッキーなもの。 Amazon 仮想マシンには、非常に特殊なパーティショニング レイアウトが必要です。 /etc/fstab ツリーは次のようになります:

/dev/sda1 / ext3 デフォルト 1 1
なし /dev/pts devpts gid=5,mode=620 0 0
なし /dev/shm tmpfs デフォルト 0 0
なし /proc proc デフォルト 0 0
なし /sys sysfs デフォルト 0 0

独自の swap および /mnt マウントポイントを使用している場合は、Amazon がマシン インスタンスの実行時に独自のマウントポイントを使用するため、/etc/fstab からそれらを削除します。

一般に、仮想マシンがどのように見えるべきかについての多くのマニアックな詳細については、AMI の作成に関するドキュメントをお読みください。膨大な量のデータに驚かないでください。ほとんどのデータはテスト ケースには関係ありません。注意を払う必要があるのは、カーネル モジュール、パーティショニング レイアウト、およびネットワーク構成です。

デフォルトのランレベルとサービス

さらに、実際に Amazon マシンに接続できるようにするには、ファイアウォール サービスを無効にするか、SSH 着信接続を許可するように構成する必要があります。当然、デフォルトのランレベルで SSH サービスを有効にする必要があります。デフォルトでは、SSH は TCP ポート 22 を使用します。

ランレベルといえば、Xen マシンは通常、未使用のランレベル 4 で起動するため、/etc/inittab ファイルを編集し、未使用のランレベル 4 のコメントを外して、デフォルトのランレベルとして設定する必要があります。次に、関連するサービスを有効にする必要があります。残念ながら、私は推奨する魔法のセットを持っていません。

同様に、Amazon で X を実行することは (まだ) できないため、ランレベル 5 は論外です。さまざまなランレベルでサービスを実行するように構成するのに助けが必要な場合は、Linux サービスのチュートリアルをご覧ください。

ネットワーク インターフェイス

また、DHCP 経由で IP アドレスをリースし、IPv6 プロトコルを無効にするようにネットワーク デバイスを構成する必要があります。ほとんどの場合、これがデフォルトの設定なので、ここで苦労する必要はありません。

追加の重要事項:

VMware 製品を使用すると、データがいっぱいになるにつれて大きくなる、動的に拡張可能なイメージを作成できます。したがって、40GB の仮想ディスクに 700MB のデータしか含まれていない場合、その重さは 700MB しかありません。サイズを事前に割り当てることもできます。この場合、ディスクは 40 GB のフル サイズに拡張されます。ただし、ハードディスク容量を節約するために、多くのユーザーは最初のオプションであるダイナミック ハードディスクを使用することを選択します。

VMDK を RAW に変換すると、動的拡張で得られるメリットが失われます。ディスク イメージは実際のサイズに拡張されます。そのため、仮想マシンを作成するときは注意し、ディスク サイズに注意してください。

次に、Amazon は現在、最大 10 GB の画像のみをサポートしています。これは、VMDK が 10GB を超えてはならないことを意味します。そうしないと、AMI を作成できません。大きすぎる画像を使用すると、エラーが発生します:

エラー:指定された画像ファイル .raw が大きすぎます

画像の例:

第三に、Linux マシンに Java と Ruby をインストールする必要があります。はい、このチュートリアルのステップ 3 には Linux マシンが必要です。冒険に出かける前に、これらすべての要求を満たしていることを確認してください。

ステップ 2:VMDK を RAW に変換する

必要なものがわかったので、変換に QEMU を使用します。 Windows と Linux の両方で使用できる QEMU は、VMDK ファイルを RAW 形式に変換できる、かなり強力な何でも屋のエミュレーター/イメージ ユーティリティです。

ずいぶん前に、VMware Player の記事で、仮想ハードディスクを作成するための優れたツールとして QEMU を紹介しました。変換など、他のディスク関連のタスクにも使用できます。

ここで、VMware ディスクを raw フォーマットに変換する必要があります。 Essentially, this will strip the hard disk image of any smart VMware algorithms and expand it into a sector-by-sector disk image.

QEMU does this well. In fact, you can use QEMU for all sorts of conversions. But currently, we're interested in vmdk> raw. To convert, simply locate the relevant .vmdk file and run the following qemu-img command:

qemu-img convert -O raw source.vmdk target.raw

Let the process run. Depending on your machine specs and the image size, it can take quite a while.

Step 3:Bundle the image with AMI tools

Amazon offers two bundles of tools for work with their EC2 service. One is the set of API tools, a client interface for the EC2 service. The other is the set of AMI tools, a collection of command utilities used to create, bundle and upload AMI to Amazon S3.

We need the AMI tools. Download and extract them, preferably inside your home directory. Now, you will have to run a long and tedious conversion command that will look something like this:

./ec2-bundle-image -i -r -c ->
-> -k --user

Let's explain the options:

  • -i - This is your RAW file.
  • -r - This is the architecture of your virtual machine (i386, x86_64, etc).
  • -c - This is the certificate you received from Amazon. You should keep them in the home directory or the same directory against which you're running the command, because the ec2-bundle-image command does not permit trailing slashes in the path to certificate. I don't know why this is, it just is. If you do use it, you'll get an error like this one:
--prefix has invalid value 'cert.pem':'/' character not allowed.

Here's an actual screenshot of such an error (output manipulated for clarity):

  • -k - Your private key. Again, the same rules apply as for the certificate.
  • --user - Your Amazon user ID.

Requirements

But this is not enough. Even if you follow the command to the letter, the ec2-bundle-image will complain. Something like this:

ec2-bundle-image:line 3:EC2_HOME:Neither of EC2_AMITOOL or EC2_HOME environment variables are set

This means you will have to export a few environment variables before using the utility.

BASH

On Bash, you will use the export command, like this:

export EC_HOME=
export EC_AMITOOL_HOME=

TCSH

TCSH does not support export. So instead, you will have to use setenv:

setenv EC_HOME 
setenv EC_AMITOOL_HOME 

The paths should correspond to the following:

  • EC_HOME - your home directory or perhaps an ec2 sub-directory inside it, most likely. Do not use the /tmp filesystem as EC_HOME might complain about an insecure, world-readable directory.
  • EC_AMITOOL_HOME - the directory where you extracted the AMI tools.

You may also want to export/setenv other variables, which makes the process of typing them manually rather boring. To make things more efficient, you may want to create a file, contain all your variables and their values and then source it when you need to run the AMI tools. Something like this:

source file-containing-all-exports

さあ、準備が整いました。 Hit Enter against your long conversion command. And wait. After a while, the process should complete successfully. The emphasis is on the word should, as you have to complete a series of delicate preparations for the thing to work.

If you did successfully convert the VMDK> RAW> AMI, then you're ready to upload the file. The indication that your conversion was successful will be a list of files in the /tmp directory and an XML manifest file. This is the default output directory.

This concludes the actual conversion process. Your next step is the upload, but this is beyond the scope of this article. We'll talk about this on another occasion. Amazon is here to stay and you're likely to see several more articles on the subject on Dedoimedo in the future.

結論

As you can see, the task is not that simple, but it is manageable and will save you quite a bit of time, bandwidth and ultimately money. Being able to convert images offers you freedom beyond the specific needs of the Amazon EC2 service. We've already seen how to use VMware Converter to this end. Now, QEMU is another power tool we can use to enhance our virtualization needs.

You must satisfy quite a few rules though, especially in regard to AMI tools. You must make sure the image is not too big, not to use the trailing slash in front of the certificate and private key paths, make sure the environment variables are exported, and in general, not to place the Amazon tools in "unsafe" directories. Now, have fun walking on clouds.

In the sequel articles, we will talk about Kiwi, a handsome component of the powerful SUSE Build Service and see how it can be used to create Xen or even AMI images from custom distributions or even your own physical installation, offering similar capabilities to VMware Converter - and then some. To this end, we'll play with Image Creator and Product Creator. We will also talk about SUSE Studio and many other exciting, revolutionary concepts, ideas and projects.

Markus, you asked about an AMI tutorial?どうぞ。楽しみ。

乾杯。


  1. VMware Converter を使用して仮想マシンを変換する

    仮想化は、ソフトウェアのテストとデバッグ、同じデスクトップ上で異なるオペレーティング システムの複数のインスタンスを同時に実行し、ハードウェア コストを最小限に抑え、モジュール性と効率を高める優れた方法です。これにより、パワー ユーザーは時間とお金を節約し、通常は挑戦したり、試みたり、できなかったりするタスクを実行できます。仮想化とは、名前が示すように、仮想マシンを使用することです。これらの仮想マシンは、仮想ハード ディスクに格納されます。 問題は、各仮想化製品が独自のファイルシステム形式を提供していることです。これは、たとえば VirtualBox と VMware を使用している場合、

  2. VMware Server で仮想マシンのクローンを作成する方法

    仮想化のファンなら、遅かれ早かれ VMware Server に出会うでしょう。サーバーは、既存のデスクトップ上でさまざまなオペレーティング システムの複数のインスタンスを実行できる無料のソリューションであり、効率性、生産性、モジュール性、テスト、および調整の世界を目の前で開きます。 仮想化により、実際のマシンでは通常試みない多くのことを行うことができます。たとえば、パーティションの破壊を恐れずに、Windows と Linux マシンのデュアル ブート構成をテストします。または、実際のセットアップを汚さずに新しいソフトウェアを試してみたいと思うかもしれません。 はじめに 仮想