仮想マシンのイメージ形式を変換する方法

イントロダクション

クラウドサーバーで作業をしている場合、通常は仮想マシンと一緒に作業しています。仮想マシンは、より大きなサーバークラスター内で動作している、完全に分離されたオペレーティングシステムのインスタンスで、独自の環境が提供されています。QEMUやVirtualBoxなどのソフトウェアを使用して、デスクトップ上でも仮想マシンを利用することもできます。仮想マシンには、デスクトップインタフェース全体が含まれている場合もありますし、SSHサーバーのみを実行してターミナル接続を許可する場合もあります。どちらの場合でも、技術的には似ており、同様の前提条件を持っています。大規模なクラウド最適化を除いて、仮想化環境の唯一の重要な違いは、仮想マシンのハードディスクと設定オプションです。これらは仮想マシンイメージと呼ばれ、プロバイダーによって異なるフォーマットで提供されています。

このチュートリアルでは、qcow2、vdi、vhd、vmdkなどの仮想マシンのイメージ形式を変換する方法を学びます。これにより、必要に応じてデスクトップからクラウドへ、そして再び元の環境に仮想環境を移行できるようになります。

前提条件 (Zentei jouken)

このチュートリアルのコマンドは、QEMUとVirtualBoxとそれに付属するコマンドラインツールがインストールできれば、Windows、macOS、またはLinux上で実行することができます。このチュートリアルでは、Homebrewパッケージマネージャーを使ったインストール手順が提供されています。macOSやLinux、またはWSL2でWindows上にHomebrewをインストールすることができます。

もしSilicon Cloudのドロップレットで動作しているなら、最低でもCPUが2つとメモリが2GB必要です。

このチュートリアルのコマンドを実行するためには、最低でも10GBの空き容量が必要です。

Note

注意:2020年以降に製造されたApple Silicon CPUを搭載したmacOSを使用している場合、VirtualBoxの代わりにQEMUのみを使用できます。

QEMUを日本語で表現すると、以下のようになります:
QEMU

QEMUは、最強で広くサポートされているオープンソースの仮想化ソフトウェアです。Windows、macOS、Linuxなどの主要なプラットフォーム(Androidなど他のオペレーティングシステムも含む)で動作し、必要に応じて仮想化とエミュレーションの両方が可能です。たとえば、Windowsデスクトップ上でLinuxサーバーイメージを実行している場合(一般的な用途)、これらのプラットフォームは共通の基盤アーキテクチャ(Intel/AMD x86)を共有しているため、QEMUは仮想化によってフルパフォーマンスを実現できます。x86アーキテクチャのLinuxやWindows(「ホスト」としても「ゲスト」としても)をmacOSやAndroidのARMアーキテクチャと組み合わせて使用する場合、QEMUは自動的にエミュレーションを使用してアーキテクチャを変換します。

仮想化と比較すると、エミュレーションは一般的に本番環境では使用されません。なぜなら、エミュレーションは大幅なパフォーマンスの低下を引き起こすからです。しかし、QEMUは仮想化とエミュレーションを近似とみなしているため、同じイメージ形式とツールをどのシナリオにおいても利用できるという大きな互換性の利点があります。

QEMUはコマンドラインソフトウェアであり、仮想マシンの設定オプションの数が非常に多いため、VMwareやVirtualBoxのようなデスクトップ仮想化ソフトウェアに比べて学習曲線が高いです。WindowsやLinuxではQtEmu、macOSではUTMなどのGUIフロントエンドと組み合わせて使用することもできます。このチュートリアルでは、QEMUのコマンドラインでの操作方法を提供します。

QEMUのインストール

QEMUをインストールするには、Homebrewのbrew installを使用してください。

  1. brew install qemu

 

これにより、qemu-imgを含むQEMUのツールとコマンドの完全なスイートが提供されます。これは仮想マシンイメージをコマンドラインで変換するために使用されます。which qemu-imgを実行して、qemu-imgコマンドにアクセスできるか確認してください。

  1. which qemu-img

 

Output

/usr/local/bin/qemu-img

Note

注意:WSL2を使わずにWindowsで作業をしたい場合は、QEMUのネイティブインストーラーを使ってWindowsにもインストールすることもできます。

このチュートリアルでは、QEMUは必要とするほとんどの機能を提供します。また、人気のある仮想化パッケージであるVirtualBoxもインストールすることができます。

バーチャルボックス

VirtualBoxはオラクルが提供するオープンソースの仮想化ソフトウェアです。これは、すべてのx86オペレーティングシステム(Windows、Linux、および2020年以前に製造されたmacOSコンピューター)をサポートしています。エミュレーションや非x86アーキテクチャには対応していませんが、そのためLinuxをWindows上で実行するためやその逆に使用するのに非常に便利です。しかし、QEMUよりも使いやすく、広く互換性のあるデフォルトの設定が提供され、デスクトップインターフェースをデフォルトで含んでいます。

QEMUと比べてコマンドラインの機能性はあまり提供されていないため、しばしばVagrantなどの専用のオーケストレーションソフトウェアと組み合わせて、仮想マシンの設定を自動化および再現するために使用されます。ただし、VirtualBoxにはVBoxManageコマンドラインツールが含まれており、一部の仮想マシンイメージを操作するために使用することができます。

VirtualBoxをインストールする

macOSでVirtualBoxをインストールするには、VirtualBoxは完全なアプリケーションバンドルとして配布されており、Homebrewはこれを「cask」と呼んでいますので、brew installコマンドを–caskフラグとともに使用してください。

  1. brew install –cask virtualbox

 

UbuntuまたはDebian派生のLinuxディストリビューション(WSL2を含む)にVirtualBoxをインストールするには、まずapt updateコマンドを使用してパッケージソースを更新し、次にapt installコマンドを使用してインストールします。

  1. sudo apt update
  2. sudo apt install virtualbox

 

WSL2を使用せずにWindowsにVirtualBoxをインストールする場合は、そのダウンロードページを参照してください。

VirtualBoxをインストールした後、”which vboxmanage” を実行してvboxmanageコマンドへのアクセスがあることを確認してください。

  1. which vboxmanage

 

Output

​​/usr/local/bin/vboxmanage

QEMUやVirtualBox以外にも、仮想化のための代替手段があります。しかし、これらのほとんどは特定のプラットフォーム向け(WindowsではHyper-Vなど)や大規模企業向け(VMwareなど)に設計されています。このチュートリアルでは直接触れませんが、次の手順でそれらのイメージ形式を変換することができます。

QEMUを使用して仮想マシンイメージを作成する。

仮想マシンイメージの変換を示すために、まずQEMUでイメージを作成することができます。既に変換するイメージを持っている場合は、このセクションをスキップしても構いません。

QEMUのデフォルトのqcow2フォーマットでイメージを作成するために、qemu-img createコマンドを使用し、-f qcow2フラグを付けます。

  1. qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G

 

この時点で、空の仮想マシンイメージが作成されます。ubuntu-desktop-22.04.qcow2と名前を付け、容量を10Gと指定しましたが、この時点ではUbuntu 22.04がインストールされておらず、また10GBの大きさもありません。

Output

Formatting ‘ubuntu-desktop-22.04.qcow2’, fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

QEMUイメージは、仮想マシン内で実行されるソフトウェアに最大宣言容量を反映しつつ、ディスク上でできるだけ少ないスペースを占有します。この場合、10GBが仮想マシンが利用可能と思っている容量であり、仮想マシンイメージが自動的にスケールアップする最大サイズでもあります。

次の典型的なステップは、Ubuntu 22.04 ISOを使用して仮想マシンにUbuntu 22.04をインストールすることです。ただし、このチュートリアルでは、実際にはこの仮想マシンで直接作業を行わないため、このステップをスキップすることができます。ISOは通常読み取り専用のディスクイメージであり、かつてCDやDVDのインストールメディアに書き込まれていたものであり、書き込み可能なハードディスクのイメージではありません。ISOイメージを操作するための他のソフトウェアも存在し、例えばmkisofsやddなどがあります。QEMUを使用してLinuxをインストールする詳細については、QEMUのドキュメンテーションを参照してください。

QEMUイメージを別のフォーマットに変換する。

VMイメージを作成した後は、qemu-img convertを使用して他のフォーマットに変換することができます。vdiはVirtualBoxのデフォルトのイメージフォーマットです。デフォルトでは、元のVMイメージは削除されずに新しいイメージが作成されます。

  1. qemu-img convert -f qcow2 ubuntu-desktop-22.04.qcow2 -O vdi ubuntu-desktop-22.04.vdi

 

-fフラグは、入力形式と入力ファイル名を指定するために使用されます。-Oフラグは、出力形式と出力ファイル名を指定するために使用されます。非常に大きな画像を変換する際、進捗バーを表示するために-pフラグも含めることができます。前の手順で作成した画像は、まだ内容がないため、即座に変換されます。lsを使用して、ubuntu-desktop-22.04.vdiが作成されたことを確認できます。

  1. ls ubuntu-desktop-22.04.vdi

 

Output

ubuntu-desktop-22.04.vdi

他の一般的な形式には、主にVMwareが使用するvmdkや、主にMicrosoftのHyper-Vが使用するvhdなどがあります。また、お使いのソフトウェアが必要とする場合は、次の手順に従って「raw」イメージを作成することもできます。

他の仮想マシン形式をQEMUに変換

もしvdi形式のイメージがある場合、VirtualBoxが提供するvboxmanageコマンドを使用して変換することができます。

  1. vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img –format raw

 

Output

0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100% Clone medium created in format ‘raw’. UUID: 0501e707-c94e-4103-9069-d7b64a933d78

以下のように日本語で言い換えることができます:

注意してください。作成したイメージは、自動的にローカルのVirtualBox設定に登録されますが、一時的なコピーを作成しようとしている場合は不便になるかもしれません。もしも重複して登録してしまった場合は、VirtualBoxのインターフェースから手動で新しいエントリを削除する必要があるかもしれません。

生の仮想マシンイメージはまったく圧縮されていないため、このコマンドは実際には以前とは異なり、10GBの完全なファイルを作成します。最後のステップの構文を逆にすることで、QEMUで使用するためにqcow2形式に戻すことができます。

  1. qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2

 

ディスク容量を回復するため、元の画像を削除できるようになりました。

  1. rm ubuntu-desktop-22.04.img

 

最後に、qemu-img checkコマンドとqemu-img infoコマンドを使用して、仮想マシンイメージの一部のメタデータを出力することができます。

  1. qemu-img check ubuntu-desktop-22.04.qcow2

 

Output

No errors were found on the image. Image end offset: 262144

  1. qemu-img info ubuntu-desktop-22.04.qcow2

 

Output

image: ubuntu-desktop-22.04.qcow2 file format: qcow2 virtual size: 10 GiB (10737418240 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false

qemu-imgを使用して画像を変換するには、qemu-imgのマニュアルページまたは公式ドキュメンテーションを参照してください。

Note

注意:これらの仮想マシンイメージを、Silicon Cloudのカスタムイメージのドキュメントに従ってクラウドサーバーイメージとしてSilicon Cloudにアップロードすることもできます。

結論

このチュートリアルでは、QEMUとVirtualBoxのコマンドラインツールを使用して、仮想マシンイメージの作成、変換、エクスポートを行いました。一般的な仮想マシンイメージ形式のいくつかの一般的な例や、仮想マシン作業における便利なデフォルトの前提条件についても確認しました。特に、アーキテクチャの移行やクラウドプロバイダの必要がある場合など、仮想化のような一般的な概念の基礎となる技術を理解することは常に役立ちます。

次に、ニーズに応じた仮想マシンのスケーリングについてのガイドをご確認いただくことをおすすめします。

コメントを残す 0

Your email address will not be published. Required fields are marked *