仮想化概要

はじめに

第28章はじめに

仮想化では、抽象化された完全なマシン環境を（ソフトウェアで）作成する必要があります。エンド ユーザーのソフトウェアは、実行中のマシンの物理的な詳細を認識せずに実行されます。

この目標を達成するためのアプローチはいくつかありますが、一般的には、ハードウェアを直接使用するホスト オペレーティング システムとファイルシステムが関与します。1つ以上のゲスト システムは、ホスト システムの上で（または見方によっては下で）、より低いレベルの特権で実行されます。ネットワーク アダプタなどのハードウェアへのアクセスは、通常何らかの仮想デバイスを介して、要求されたときに物理デバイスにアクセスします。

仮想マシンには多くの用途があります。それらには、ハードウェアのより効率的な使用、ソフトウェアの分離、セキュリティ、安定性、安全な開発オプション、そして再起動せずに複数のオペレーティング システムを同時に実行する機能が含まれます。


学習目標
この章の終わりまでに、次のことができるようになります。

仮想化の基となる概念と、仮想化がどのように広く使用されるようになったかを理解できます。
ホストとゲストの役割を理解できます。
エミュレーションと仮想化の違いについて説明できます。
さまざまな種類のハイパーバイザを区別できます。
Linux ディストリビューションがlibvirtをどのように使用しているかを詳細に知っています。
qemuハイパーバイザを使用できます。
KVMをインストール、使用、管理できます。


仮想化概要

仮想化とは何か？
この章では、仮想マシン（VM）の作成、デプロイ、およびメンテナンスについて説明します。

仮想マシン（VM）は、オペレーティング システム全体の仮想インスタンスであり、サーバーまたはデスクトップ／ワークステーションの役割を果たします。

外部の世界からは、VMが実際の物理マシンであるかのように見え、ネットワーク上のどこかに存在するように見えます。VMで実行されているアプリケーションは、ほとんどの場合、非物理環境であることを認識していません。

クリックして各ボックスを展開し、他の種類の仮想化について学習します。

他の種類の仮想化

ネットワーク
ハードウェア、ルーターなどの種類など、実際の物理ネットワークの詳細は抽象化されており、そこで実行したりそれを設定するソフトウェアが知る必要はありません。例：Software Defined NetworkingまたはSDN。

ストレージ
複数のネットワーク ストレージ デバイスは、ディスクなどの1つの大きなストレージ ユニットのように構成されます。例：Network Attached StorageまたはNAS。

アプリケーション
アプリケーションは、コンテナなどのスタンドアロン形式に分離されます。これについては後で説明します。

物理マシンと仮想マシンには違いがあり、その違いには無視できないものもあります。たとえば、VMとその下にある物理マシンの両方で、低レベルでのパフォーマンス チューニングを（個別に）行う必要があります。


仮想化の歴史
仮想化には長い歴史があります。それは数十年前に、最初にメインフレームに実装されました。

ハードウェア使用率を向上します。
オペレーティング システムは、ハードウェアよりも速く進化します。
マイクロコードで実装されています。
特にユーザーフレンドリというものではありません。

その後、仮想化技術はPCやワークステーションに移行しました。

最初は、エミュレーションを使用して行われました。
仮想化をサポートするために強化されたCPUにより、パフォーマンスが向上し、設定が容易になり、VMのインストールと移行の柔軟性が向上しました。

初期のメインフレームからミニコンピュータまで、仮想化は、制限の拡大、デバッグ、管理の強化に使用されてきました。

今日では、仮想化はさまざまな形でどこにでも見られます。様々な形式と実装には、それぞれ特有の利点があります。


ホストとゲスト
ホストとは、1つ以上の仮想マシンを管理する、物理マシンにインストールされたオペレーティング システムです。 

ゲストはVMと言い、1つ以上のアプリケーションを実行する完全なオペレーティング システムのインスタンスです。ゲストはクライアントと呼ばれることもあります。ほとんどの場合、ゲストはどのホストで実行されているかを気にする必要はなく、実行中にホスト間で移行できます。

実際、コンテンツ全体をVMにコピーすることで、物理マシンを仮想マシンに変換することが可能です。専用のソフトウェア ユーティリティを使用すると簡単にできます。 

CPU使用率、ネットワーク スループット、メモリ使用率などの低レベルのパフォーマンス チューニングは、ゲストで行うと、役に立たない程度の品質でしかシミュレートできません。そのため多くの場合、ホストで実行するのが最適です。

アプリケーションのチューニングは主にゲストで行われます。


エミュレーション vs. 仮想化
PC アーキテクチャにおける最初の仮想化の実装は、エミュレータを使用したものでした。現在のオペレーティング システムで実行しているあるアプリケーションが、他のOSからは特定ハードウェア環境として見えます。エミュレータは、通常、動作するために特別なハードウェアを必要としません。

Qemuはそのようなエミュレーターの1つです。

エミュレータ

エミュレータは完全にソフトウェアで実行されます。ハードウェア構成はソフトウェアに置き換えられます。X86ホストのふりをしたARMゲスト マシンの実行など、異なるアーキテクチャで仮想マシンを実行するのに役立ちます。エミュレーションは、ハードウェアが使用可能になる前でも使えるので、新しいCPU用のオペレーティング システムの開発によく使用されます。パフォーマンスは比較的遅いです。


仮想化ハイパーバイザの種類
ホスト システムは、実行するソフトウェアに関して正常に機能することに加えて、ゲストの開始・終了の実行、そして管理するハイパーバイザとしても機能します。Virtual Machine Monitor（VMM）とも呼ばれます。

仮想化には2つの基本的な方式があります。クリックして各カードを反転し、これらの仮想化の種類を学習します。

ハードウェア仮想化
ゲスト システムは、仮想化ゲストとして実行されていることを意識せずに実行されます。この方法で実行するために何かを変更する必要はありません。完全仮想化とも呼ばれます。

準仮想化
ゲスト システムは、仮想化環境で実行されていることを認識しており、ゲスト システムで動作するように特別に変更されています。

IntelとAMDの広く使用されているCPUは、x86アーキテクチャに仮想化拡張機能を組み込んでおり、ハイパーバイザが完全に仮想化された（つまり、変更されていない）ゲスト オペレーティング システムをわずかなパフォーマンス ペナルティで実行できるようにしています。

Intel拡張（Intel Virtualization Technology）は、通常 VT、IVT、VT-32またはVT-64と略され、Vanderpoolの開発コード名でも知られています。2005年の春から公開されています。

AMD拡張機能は通常AMD-Vと呼ばれ、Pacificaという開発コード名で呼ばれることもあります。

これら2つの拡張機能の詳細な説明と比較については、Xenと新しいプロセッサの記事を参照してください。

/proc/cpuinfoを見ると、CPUがハードウェア仮想化拡張機能をサポートしているかどうかを直接確認できます。 IVT対応チップを使用している場合、フラグ フィールドにvmxが表示されます。AMD-V対応チップを使用している場合には、同じフィールドにsvmが表示されます。また、CMOSで仮想化機能を有効にする必要があります。

準仮想化ゲストに使用するオペレーティング システムの選択は制限される傾向がありますが、もともと完全仮想化ゲストよりも効率的に実行される利点がありました。仮想化技術の進歩により、そのような利点が少なくなったり排除されたりしています。そして、完全仮想化に必要なハードウェア サポートの利用の可能性が広がったことにより、準仮想化の利点がより少なくなり、人気がなくなりました。

最新のハードウェアのほとんどは、ハードウェア仮想化機能を備えています（BIOSで有効にする必要があります）。

ハイパーバイザには次のものがあります。

ホスト オペレーティング システム カーネルの外部にあるもの：VMware
ホスト オペレーティング システム カーネルの内部にあるもの：KVM

このコースではKVMを説明します。KVMはすべてオープンソースであり、外部のサードパーティ ハイパーバイザ プログラムを必要としないためです。


専用ハイパーバイザ
エミュレーションを経て仮想化展開の次のステップは、ハイパーバイザ プログラムを、特別に設計された軽量カーネルにマージすることでした。

VMware ESX（および関連機能）は、オペレーティング システムに組み込まれたハイパーバイザの一例です。

専用ハイパーバイザ


カーネル内のハイパーバイザ
KVMプロジェクトは、Linuxカーネルにハイパーバイザ機能を追加しました。これにより、カーネルの機能が活用され、カーネルをハイパーバイザにすることができました。

前述のように、この種類の仮想化には特定のCPUチップ機能と設備が必要であり、それも反映されました。

図　カーネル内のハイパーバイザ


libvirt
libvirtライブラリは、仮想化技術と情報をやり取りするためのツールキットです。仮想マシン、仮想ネットワーク、およびストレージの管理を提供し、すべてのエンタープライズLinuxディストリビューションで利用可能です。

多くのアプリケーション プログラムがlibvirtと連動します。最も一般的なものとして、virt-manager、virt-viewer、virt-install、virshがあります。

現在サポートされているハイパーバイザの全リストは、libvirtウェブ サイトにあります。

QEMU/KVM
Xen
Oracle VirtualBox
VMware ESX
VMware Workstation/Player
Microsoft Hyper-V
IBM PowerVM (phyp)
OpenVZ
UML (User Mode Linux)
LXC (Linux Containers)
Virtuozzo
Bhyve (The BSD Hypervisor)
Test (Used for testing).​


libvirtを使用するプログラム
多くのユーティリティがlibvirtを使用します。使用するユーティリティの正確なリストは、Linuxディストリビューションによって異なります。全リストはlibvirtのウェブ サイトにあります。

このコースでは、コマンド ライン ユーティリティをあまり使用せずに、堅牢なGUIであるvirt-managerを使用します。これにより、非グラフィカル サーバーを使用するよりも柔軟性が向上します。

libvirtベースのユーティリティの例


QEMUとは何か？
QEMUはQuick EMUlatorの略です。2002年にFabrice Bellardによって開発されました。（ Bellardは、一時期2.7兆桁に達するπを計算する世界記録を保持するなどの偉業を成し遂げたことでも知られています。）

QEMUは、ハードウェア エミュレーションまたは仮想化を実行するハイパーバイザです。ホスト アーキテクチャとエミュレートされたアーキテクチャの間でバイナリ命令を動的に変換して、CPUをエミュレートします。

ホストとエミュレートされたアーキテクチャは、異なる場合も同じ場合もあります。ホストとゲストの両方のオペレーティング システムには多くの選択肢があります。

QEMU は、オペレーティング システム全体ではなく、特定のアプリケーションのみをエミュレートするためにも使用できます。

QEMU自体は、ホスト マシンよりもはるかに低速です。ただし、KVM（Kernel Virtual Machine）と一緒に使用することで、ネイティブ ホストに近い速度で処理することができます。

ゲスト オペレーティング システムは、QEMUで実行するために書き換える必要はありません。QEMUは、いつでも仮想マシンを保存、一時停止、復元できます。QEMUは、GPLライセンスのフリー ソフトウェアです。

QEMUには、IA-32（i386）、x86-64、MIPS、SPARC、ARM、SH4、PowerPC、CRIS、MicroBlazeなどを含む多くのアーキテクチャをサポートする機能があります。

QEMUのクロス コンパイル機能は、組み込みプロセッサ向けの開発を行う際に非常に役立ちます。

実際、QEMUは、まだ物理的に製造されていないか、市場にリリースされていないプロセッサでの開発によく使用されています。


サードパーティのハイパーバイザの統合
単独で使用される QEMUは比較的処理が低速です。ただし、サードパーティのハイパーバイザと統合すれば、ほぼネイティブの処理速度を出すことができます。これらのシステムのいくつかは、QEMUとは非常に近い従兄弟のような関係であることに注目してください。他のものはより遠い関係にあります。近しい関係のものをいくつか紹介します。

KVMはQEMUと特に密接に統合されています。ホストとターゲットのアーキテクチャが同じ場合、完全な加速化と高速化を実現します。KVMはLinuxに最適化されています。これについて詳しく説明します。
Linuxに最適化されたXenも、x86と一部のARM系のCPUのようにアーキテクチャが機能を提供する場合は、ハードウェア仮想化モードで実行できます。
Oracle Virtual Boxはqcow2形式のイメージを使用でき、QEMUと非常に密接な関係にあります。

このコースでは、仮想マシンの構成と実行にvirt-managerを使用することをお勧めします（演習でも使用します）。また、qemuコマンド ライン ユーティリティを使用して実行する方法についても説明します。


イメージのフォーマット
QEMUは、ディスク イメージ ファイルのいろいろなフォーマットをサポートしています。ただし、主に使用されるのは2つだけで、残りは歴史的な理由と変換ユーティリティのために存在しています。

クリックして各ボックスを展開し、ディスク イメージ ファイルの2つのフォーマットについて学習します。

ディスク イメージ フォーマット

raw
これがデフォルトのイメージ フォーマットです。他の非QEMUエミュレーターにエクスポートするための、最も単純で簡単なフォーマットです。空のセクタは領域を必要としません。

qcow2
COWは、Copy On Writeの略です。多くのオプションがあります。詳細については、man qemu-imgを参照してください。

サポートされている形式のリストを取得する場合には以下を行います。

c7:/tmp> qemu-img --help | grep formats:
Supported formats: vfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file \qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug

特に以下に注意してください。

vdi：Oracle Virtual Boxで使用。
vmdk：VMwareで使用。

qemu-imgはフォーマット間の変換に使用できます。例えば、

$ qemu-img convert -O vmdk myvm.qcow2 myvm.vmdk

これはデフォルトのオプションを使用しています。qemu-imgで何ができるかについては、manページを参照してください。


KVMとLinux
KVMは、メモリ管理、スケジューリング、同期などを含むコンピューティング リソースの操作にLinuxカーネルを使用します。仮想マシンを実行するときには、KVMは、Linuxカーネルを補助する役割を担います。

KVMは、VMX（Intel）または SVM（AMD）命令を使用して、1つ以上のCPU内で仮想マシン モニタ（KMM）を実行します。この時、Linuxカーネルは他のCPUで実行されています。

KVMは、ゲストを最大限のハードウェア スピードで実行します。それは、仮想マシン モニタに制御を引き継がせる命令を実行するまで続きます

引き継いだ時点で、仮想マシン モニタは任意のLinuxリソースを使用してゲストの指示をエミュレートしたり、最後の指示でゲストを再起動したり、他の操作を実行したりできます。

KVMモジュールをロードしてゲストを起動すると、Linuxはハイパーバイザに変わります。Linuxの特徴は残しつつ、ハードウェア仮想マシン モニタとしても使えます。cgroups、nice、numactlなどの標準Linuxリソースとプロセス制御ツールを使用して、仮想マシンを制御できます。

KVMは最初、Windows仮想デスクトップ製品の一部として登場しました。2007年にアップストリームにマージされた時点では、KVMには最新のx86_64プロセッサが必須でした。x86_64プラットフォームでは、KVMは主として（ただし常にではない）プロセッサの仮想化サブシステム用のドライバでした。

KVMは、2007年にLinuxカーネル モジュールとして登場しました。（同時に提供された）QEMUの修正バージョンと組み合わせることで、ほとんどのランタイム サービスにLinuxカーネルを使用するハイパーバイザが作成されました。

KVMの作者であるAvi KivityがLinux開発コミュニティにソース コードを提供してすぐに、LinusはKVMを Linuxツリーにマージしました。これは多くの人にとって驚くべきことでした。


KVMの管理
仮想マシンのイメージを作成、変換、操作、デプロイ、保守するため、多くの低レベルのコマンドがあります。

KVMの管理は、コマンド ラインとグラフィカル インターフェイスの両方で実行できます。

コマンド ライン ツールの名前は、virt-*とqemu-*の文字から始まります。グラフィカル インターフェイスには、virt-manager、kimchi、OpenStack、oVirtなどが含まれます。

より多くの専門知識を身に付けると、それらを効率的に使用できるようになります。しかし、すべての基本的な操作はvirt-managerで十分であり、ここではそれを使用します。

KVMを管理するユーティリティ


演習

課題 28.1: KVM が正しくセットアップされていることを確認する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

【【これ以降は橋本さんの訳を挿入】】

Very Important

•  The following labs are best run on a physical machine runningLinuxnatively.
•  It may be possible to run them within a Virtual Machine running under a hypervisor, such as VMWare or VirtualBox, or evenKVM. However, this requires nested virtualization to be running properly.
•  Whether or not this works depends on the particular hypervisor used, the underlying host operating system (i.e.,Windows,Mac OS or Linux) as well as the particular variant, such as which Linux or Windows version as wellas the particular kernel.
•  Furthermore it also depends on your particular hardware.   For example,  we have found nested virtualization working with VMWare on various x86_64 machines but with Oracle Virtual Box only on some.
•  If this works, performance will be poor as compared to running on native hardware, but that is not important forthe simple demonstrative exercises we will do.
•  Your mileage will vary!If it does not work we cannot be responsible for helping you trying to get it rolling.

1.  First check that you have hardware virtualization available and enabled:
$ grep -e vmx -e svm /proc/cpuinfo
where vmx is for INTEL CPUs and svm for AMD. If you do not see either one of these:
•  If  you  are  on  a  physical  machine,  maybe  you  can  fix  this.   Reboot  your  machine  and  see  if  you  can  turn  on virtualization in the BIOS settings.  Note that some IT personnel may make this impossible for “security” reasons,so try to get that policy changed.
•  You are on a virtual machine running under a hypervisor, and you do not have nested virtualization operable.

2.  If for either of these reasons, you do not have hardware virtualization, you maybe able to run virt-manager, but with weak performance.

3.  You need all relevant packages installed on your system. One can work hard to construct an exact list. However, exactnames and requirements change with time, and most enterprise distributions ship with all (or almost all) of the software you need.

4.  The easiest and best procedure is to run the script we have already supplied to you:
$ ./ready-for.sh --install LFS201
where we have done the hard work.
Alternatively, on RPM systems you can do some overkill with:
$ sudo yum|dnf|zypper install kvm* qemu* libvirt*
It is not a large amount of storage space to do it this way.
On Debian package based systems including Ubuntu you will have to do the equivalent with your favorite package installing procedure.

Very Important
•  Do not run libvirtd at the same time as another hypervisor as dire consequences are likely to arise.  This can easily include crashing your system and doing damage to any virtual machines being used.
•  We recommend both stopping and disabling your other hypervisor as in:
$ sudo systemctl stop vmware
$ sudo systemctl disable vmware
または
$ sudo systemctl stop vboxdrv
$ sudo systemctl disable vboxdrv


課題 28.2: virt-managerとKVMを使用い、VMをインストールして実行する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 28.2: Using virt-manager with KVM to Install a Virtual Machine and Run it

In this exercise we will use pre-built iso images built by TinyCoreLinux(https://www.tinycorelinux.net) because they are cooked up very nicely and are quite small.

If  you  would  like,  you  can  substitute  any  installation iso image  for  another Linux distribution,  such as Debian,CentOS,Ubuntu,Fedora,OpenSUSE etc.  The basic steps will be identical and only differ when you get to the installation phase forbuilding your new VM; which is no different than building any fresh installation on an actual physical machine.

We will give step-by-step instructions with screen capture images; If you feel confident, please try to just launch virt-manager and see if you can work your way through the necessary steps, as the GUI is reasonably clearly constructed.

1.  Make surelibvirtdis running and startvirt-managerby typing:
$ sudo systemctl start libvirtd
$ sudo virt-manager
Figure 28.6:Starting virt-manager

2.  Click on File->Create New Machine:
Figure 28.7:Creating a Virtual Machine with virt-manager

3.  We have included three different iso install images from TinyCoreLinux in the RESOURCES/s_28 directory:
Core-current.iso
CorePlus-current.iso
TinyCore-current.iso
(You can check and see if there are newer versions upstream athttps://www.tinycorelinux.netbut these shouldbe fine.)
CorePlus-current is largest and robust and we will use this as it will install with full graphics. The others are considerably quicker to use, however.
Navigate through your file system and pick the desired image:
Figure 28.8:Selecting the TinyCoreLinux iso image in virt-manager

4.  Next you have to request the amount of memory and number of CPUs or cores to use. These images are pretty minimal.A choice of 256 MB is more than enough; you may have fun seeing how low you can go!
Figure 28.9:Configuring Memory and CPUS in virt-manager

5.  Next  you  have  to  configure  the  location  and  size  of  the  VM  that  is  being  created.   You  actually  need  very  little  for TinyCoreLinux, but the GUI will not let you choose less than 0.1 GB(about100 MB.)(From the command line it is easyto configure less space.)
Figure 28.10:Configuring Disk Storage in virt-manager
If you do not click on Select or Create custom storage your image will be placed in /var/lib/libvirt/images.Since images can be quite large,  you might want to configure to put it elsewhere.   Or you can replace the images directory in /var/lib/libvirt with a symbolic link to somewhere else, as in:
$ cd /var/lib/libvirt
$ sudo mv images images_ORIGINAL
$ sudo mkdir /tmp/images
$ sudo ln -s /tmp/images images
(You probably want a different location for the images files than /tmp, but you get the idea.)

6.  You are now ready to begin installation of your own VM from the TinyCoreLinux installation disk:
Figure 28.11:Beginning the VM installation in virt-manager

Please Note
We recommend clicking on Customize configuration before install. While you may want to make other changes,the mouse pointer is configured by default to be a PS2 device; it is better to add a USB tablet input pointer.

Do this by clicking on Add Hardware on the next screen and then:
Figure 28.12:Adding an Input Device to the VM in virt-manager

7.  Finally, we begin the installation:
Figure 28.13:Booting into the Installation Media with virt-manager
You can make other choices for the graphical interface, here we just choose the first one, the default, and hit return.

8.  This will take a while and eventually you will see the following screen:
Figure 28.14:First TinyCoreLinux Screen
It is not obvious what to do here, but you need to see the icons at the bottom so you should resize and make the screentaller:
Figure 28.15:First TinyCoreLinux Screen Resized

9.  Click  on  the  terminal  icon  (or  right  click  on  the  background  and  open  up  a  terminal.   Note  the  font  is  microscopic unfortunately. Then type
tc-install
in the window.
Figure 28.16:Running tc-install

10.  SelectWhole disk and sda and click the forward arrow:
Figure 28.17:Selecting Disk in VM

11.  Things will crank for a while and each step will be reflected in the output window.
Figure 28.18:Finishing Installation in virt-manager
When installation is complete you can go to the File menu and shut down the virtual machine.

12.  Start up virt-manager again (if you have killed it) and you should now see something like:
Figure 28.19:Running the new VM in virt-manager

Right click on the VM andopenandrun. Your new virtual machine should be up and running! (If you get confused and think you are running the original install image, you can verify it is not that by noting there is no tc-install program in the new disk image.


課題 28.3: コマンドラインからVMをインストールする

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 28.3: Extra Credit: Doing from the command line

From the command line:
$ sudo qemu-img create -f qcow2 /var/lib/libvirtd/myimg.qcow2 24M
$ sudo qemu-system-x86_64 -hda /var/lib/libvirtd/myimg.qcow2\
-cdrom /teaching/LFCW/RESOURCES/LFS201/CorePlus-current.iso  -usbdevice tablet


知識チェック

「第28章 - 仮想化概要」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 28.1
ハイパーバイザは次のうちどれですか？ 当てはまるものをすべて選択してください。

A. KVM
B. Oracle VirtualBox
C. Microsoft HyperV
D. Docker

問題 28.2
次のうち、正しいものはどれですか？ 当てはまるものをすべて選択してください。

A. ハードウェア仮想化では、ゲスト システムはVMとして実行されていることを認識しています
B. ハードウェア仮想化では、ゲスト システムはVMとして実行されていることを認識しません
C. 準仮想化の下では、ゲスト システムはVMとして実行されていることを認識しています

問題 28.3
KVMはどのコンポーネントの上で動作する必要がありますか？ 当てはまるものをすべて選択してください。

A. VMware Player
B. libvirt
C. Docker
D. qemu

問題 28.4
VMWareの.vmdkイメージファイルを、KVMのqcow2ファイルに変換するコマンドはどれですか？

A. vboxmanage convert -- output myvm.qcow2 -- input myvm.vmdk
B. qemu-convert myvm.vmdk myvm.qcow2
C. qemu-img convert -O qcow2 myvm.qcow2 myvm.vmdk
D. vmstat translate myvm.vmdk myvm.qcow2

