Virt Tools として知られる仮想化ツールは、仮想化の世界をより良くするためにさまざまな貢献者によって作られた 6 つのオープンソース仮想化ツールのコレクションです。
1_virttools.jpg
(Bryant Son, CC BY-SA 4.0).0)
KVM や QEMU など、いくつかのツールは Linux ファンにはおなじみかもしれませんが、libvirt や libguestfs といったツールは、おそらくそれほどでもないでしょう。
読むよりもビデオを見て学びたいという方のために、この記事のビデオ版を作成し、YouTube でアクセスできます。
ツールを見ていく前に、重要な仮想化用語をいくつか知っておくとよいでしょう。 これらの定義の多くは Wikipedia から引用し、表中のページにリンクしています。
用語 |
定義 |
仮想化 |
コンピューターでは、仮想化は、仮想コンピューター ハードウェア プラットフォーム、ストレージ デバイス、コンピューター ネットワーク リソースなどの何かの(物理ではなく)仮想バージョンを作成する行為を指します。 |
エミュレータ |
エミュレータとは、あるコンピューター システム (ホストと呼ばれます) が別のコンピューター システム (ゲストと呼ばれます) のように動作できるようにするハードウェアまたはソフトウェアのことです。 |
ホスト |
ハードウェア仮想化では、ハイパーバイザーが 1 つまたは複数の VM を実行するコンピュータ。 |
ハイパーバイザー |
これは VM を作成および実行するコンピュータ ソフトウェア、ファームウェア、またはハードウェアです。 |
カーネル |
これは、システム内のすべてを完全に制御するコンピュータのオペレーティング システムの中核にあるコンピュータ プログラムです。 |
Daemon |
これは、対話型ユーザーの直接制御下ではなく、バックグラウンド プロセスとして実行されるコンピューター プログラムです。 この情報の多くは、Virt Tools Web サイトおよび各ツールのサイトからのものです。
名前 |
内容 |
ライセンス |
ソース コード |
Kernel->Virtual Studio は、Virtual Studio と同じ機能を備えています。ベース仮想マシン (KVM) |
カーネルをハイパーバイザーとして機能させる Linux カーネルの仮想化モジュール |
GNU GPL または LGPL |
ソースコード |
クイック (Quick) |
Linux カーネルの仮想化モジュール。 Emulator (QEMU) |
A generic and open source machine emulator and virtualizer |
GPLv2 |
Source code |
Libvirt |
A library and daemon providing stable.Libvirt (QEMU) |
A generic and open source machine emulator and virtualizer |
GPLv2 |
A library and daemon provides a stable, 仮想化ホスト管理のためのオープンソース API |
GNU |
ソースコード |
Libguestfs |
VM ディスクイメージへのアクセスおよび修正用ツール群 |
LGPL, GPL |
ソースコード |
バーチャルmanager |
libvirt |
を通して VM を管理するためのデスクトップ ユーザー インターフェイス
GPLv2+ |
ソース コード |
Libosinfo |
Provides of a database of a VMs… VM を展開する際にハードウェアを最適に構成するためのオペレーティング システムのリリースに関する情報 |
LGPLv2+ |
ソース コード |
Kernel->LGPLv2+
|
LGPLv2+ |
LGPLv2+ Kernel->LGPLv2ベースの仮想マネージャ (KVM)
2_kvm.jpg
(Bryant Son, CC BY-SA 4.0)
KVM は仮想化拡張を含むハードウェア上の Linux 用に完全な仮想化ソリューションです。 KVM は、Linux、Windows、macOS、ReactOS、および Haiku など、さまざまなゲスト OS 用のハードウェア仮想化を提供します。 KVM を使用すると、修正されていない Linux や Windows のイメージで複数の VM を実行できます。 各 VM は、ネットワーク カード、ディスク、グラフィック アダプターなど、プライベートな仮想化ハードウェアを持ちます。
ほとんどの場合、KVM と直接対話することはありません。 代わりに、QEMU、virt-manager、または他の仮想化管理ツールを使用して KVM を活用する必要があります。
KVM Web サイトでは、そのソース コードにアクセスできるだけでなく、完全なドキュメントを見つけることができます。jpg
(Bryant Son, CC BY-SA 4.0)
QEMU は汎用、オープンソースのマシンエミュレーションおよび仮想化ツールであります。 エミュレーターとして使用する場合、QEMU はあるマシン (例: ARM ボード) 用に作られたオペレーティング システムとプログラムを別のマシン (例: 自分の x86_64 PC) で実行できます。 仮想化装置として使用する場合、QEMU は KVM を使用してホスト CPU 上でゲスト・コードを直接実行することにより、ネイティブに近いパフォーマンスを達成します。
QEMU は複数の OS でサポートされており、そのインストール手順はいくつかの簡単なコマンドの実行と同じくらいに簡単です。
3_1_qemuinstall.jpg
(Bryant Son, CC BY-SA 4.0).0)
インストールしたら、ドキュメントを読んで使い方を学び、ソースコードにアクセスすることもできます。jpg
(Bryant Son, CC BY-SA 4.0)
Libvirt はライブラリおよびデーモンで、仮想化ホストの管理用にオープンソース API を安定的に提供するものです。 QEMU、KVM、LXC、Xen、OpenVZ、VMWare ESX、VirtualBox など、複数のハイパーバイザーを対象としています。
libvirt に関するもうひとつの興味深いことは、Kubernetes プラットフォーム内で VM を作成および管理するオープンソース プロジェクトである KubeVirt が、ほとんど Libvirt を利用していることです。 (KubeVirt については、今後の記事で取り上げます。) Libvirt は興味深いプロジェクトであり、その公式サイトで多くの情報を得ることができ、また、ソース コードもダウンロードできます。jpg
(Bryant Son, CC BY-SA 4.0)
Libguestfs は VM ディスクイメージにアクセスし変更するためのツール群です。 ゲスト内のファイルの表示と編集、VM への変更のスクリプト作成、ディスク使用/使用済み統計の監視、ゲスト、物理から仮想 (P2V) または仮想から仮想 (V2V) へのマシン作成、バックアップの実行、VM の複製、VM の構築、ディスクのフォーマット、ディスクのサイズ変更、その他多くの目的で使用可能です。 私は最近、OpenShift Virtualization という KubeVirt ベースのプロジェクトに取り組んでいるときにこれを使用しています。
Virt-manager
6_virtualmanager.jpg
(Bryant Son, CC BY-SA 4.0).0)
Virt-manager は libvirt を通して VM を管理するためのデスクトップ ユーザー インターフェイスです。 主に KVM VM を対象としていますが、Xen や LXC も管理できます。 また、コマンドラインのプロビジョニングツールである virt-install も含まれています。 virt-manager は VM のための使いやすい管理ツールだと考えてください。 たとえば、Linux ワークステーション上で Microsoft Windows 環境を実行するため、またはその逆のために virt-manager を使用できます。
Virt-manager のソースコードは GitHub で利用でき、ドキュメントはその Web サイトにあります。 現時点では、virt-manager は Linux プラットフォームでのみ利用可能です。
Libosinfo
7_libosinfo.jpg
(Bryant Son, CC BY-SA 4.0).0)
Libosinfo は、VM をデプロイする際のハードウェアの設定を支援するために、オペレーティングシステムのリリースに関する情報のデータベースを提供します。 データベース内の情報を照会するための C ライブラリを含んでおり、 GObject introspection でサポートされているどの言語からでもアクセスできます。 ご想像のとおり、libosinfo はオペレーティングシステムの機能を有効にするためのビルディングブロックというより、非常に重要なものです。
Libosinfo のソースコードは GitLab で入手でき、そのドキュメントはその Web サイトで見つけることができます。