KVM仮想マシンを操作します。 はじめに

約束どおりKVMに基づいて専用サーバーをリースする方法についての一連の記事を始めています。



この入門記事では、サービスの開発プロセスで使用されるすべてのソフトウェアツールについて簡単に説明します。 これらについては、次の記事で詳しく説明します。







Debian





Debian



なぜDebianなのか? このオペレーティングシステムは私にとって身近で理解しやすいものなので、配布キットを選択する際の苦痛、苦痛、投げ方はテストされていません。 Red Hat Enterprise Linuxに対する特別な利点はありませんが、使い慣れたシステムで動作することが決定されました。



同様のテクノロジーを使用してインフラストラクチャを独立して展開する予定がある場合は、RHELを使用することをお勧めします。優れたドキュメントと適切に作成されたアプリケーションプログラムのおかげで、これは桁違いではないにしても、確かに2倍簡単になり、開発された認証システムのおかげで、簡単にできますこのOSの適切なレベルで精通している専門家の数を見つけるでしょう。



再度、 Sid / ExperimentalのパッケージセットでDebian Squeezeを使用し、いくつかのパッケージをバックポートしてパッチでコンパイルすることにしました。

計画には、パッケージを含むリポジトリの公開が含まれます。



Kvm





Kvm



仮想化テクノロジーを選択する際、XenとKVMの2つのオプションが検討されました。



個人的には、Xen、そのアーキテクチャ、さらにはマイナーな機能をよく知らないことに注意してください。基本的にゲストとして彼に会いました。 Xenが何らかの形で悪いと言う理由はありません(Xenがまだカーネルに完全に入っていないか、パフォーマンスに問題があるか、またはその他の理由で)。 パフォーマンスに関して明確なことは何も言えません。一部のテストでは、KVMはあらゆる点でXenよりも10〜20%先行していますが、どこかでXenに勝っています。 実際、現時点では、機能、パフォーマンス、信頼性はほぼ同等です。 そして、原則として、Xenもコアに入る日はそう遠くありません 。 すでに事実上 -a-machine.blogspot.com/2011/06/xen-support-in-mainline-linux-kernel.htmlカーネルに含まれています。



また、Xenに基づいた膨大な数の開発者、ホスティング業者、および商用ソリューションが存在するという事実も考慮されました。KVMに基づいたソリューションを実装することはより興味深いことでした。



KVMを使用することに決めた主な理由は、FreeBSDおよび長期的にはMS Windowsで仮想マシンを実行する必要があるためです。



libvirt



libvirt



libvirtを使用し仮想マシンを管理し、API virshvirt-managervirt-installなどを使用する製品を管理するのに非常に便利であることが判明しました。



libvirtは、仮想マシンの設定を保存し、それらを管理し、それらの統計を保持し、仮想マシンの開始時にインターフェースが立ち上がることを保証し、デバイスをマシンに接続するシステムです-一般に、それは多くの有用な作業を行います。



もちろん、解決策は完璧ではありません。 マイナスのlibvirtを呼び出す必要があります。







cgroups





cgroups



当初のサービスの実装における主な問題は、仮想マシンのリソースの制限でした。 Xenでは、この問題は、仮想マシン間でリソースを分散する内部シェダラーの助けを借りて解決されました。最も美しく、ディスク操作を制限する機能が実装されました。



cgroupsコアリソース割り当てメカニズムが登場するまで、KVMにはこのようなものはありませんでした。 通常のLinuxでは、これらの関数へのアクセスは特別なcgroupファイルシステムを介して実現されました。通常のwrite()システムコールを使用して、プロセスをグループに追加し、その重みをオウムに割り当て、それが動作するカーネルを指定し、プロセスが使用できる帯域幅を指定するか、再びプロセスに重みを割り当てます。



利益は、これらすべてがカーネル内に実装され、サーバーだけでなくデスクトップ(有名な「 驚異を起こす〜200 Line Linux Kernel Patch 」で使用された)にも使用できることです。 私の意見では、これは2.6ブランチの最も重要な変更の1つであり、 お気に入り#12309をカウントせず、次のファイルシステムをファイリングしません。 まあ、多分、POHMELFSを除いて(しかし、純粋に名前のため)。



libguestfs





libguestfs



このユーティリティライブラリに対する私の態度は非常に曖昧です。



一方では、次のようになります。



libguestfsはスイスナイフです








そして、このことはソースからコンパイルすること、さらにはパッケージにコンパイルすることは非常に困難です:時々、Linux From Scratchはゼロから構築するのが少し簡単だと思われます。



一方で、仮想マシンのイメージの作成、変更、圧縮、grubの設定、パーティションテーブルの変更、構成ファイルの管理、「鉄」マシンの仮想環境への転送、仮想マシンのイメージ間の移動、仮想マシンをイメージからハードウェアに転送します。率直に言って、ここで私の想像力は少し失敗します。 そう、Linux仮想マシン内でデーモンを実行し、ライブで仮想マシンデータにアクセスし、シェル、Python、perl、java、ocamlでこれらすべてを実行できます。 これはlibguestfsでできることの完全なリストとはほど遠いものです



興味深いことに、 libguestfsのほとんどのコードは、プロジェクトのドキュメントと同様に、アセンブリ時に生成されます。 非常に広く使用されているのは、ocaml、perlです。 コード自体はCで記述され、その後OCamlでラップされ、コードの繰り返し部分が自動的に生成されます。 イメージの操作は、特別なサービスイメージ(superminアプライアンス)を起動することで実行され、コマンドはその中のチャネルを通じて送信されます。 この画像の中には、parted、mkfs、および家庭で役立つその他のシステム管理者などのユーティリティのレスキューセットがあります。



最近、私は、必要なデータをナンドロイド画像から取り出したときに、自宅で使用し始めました。 ただし、これにはyaffsをサポートするカーネルが必要です。



その他





以下は、使用するソフトウェアツールの説明への興味深いリンクです。興味がある場合は、自分で読んで勉強することができます。 たとえば、構成ファイルを使用した大量作業用のユーティリティについては 、IBMの同僚によるKVMベストプラクティスです。 お勧めです!



  1. Daniel BerrangeによるKVMおよびLXCでのcgroupの使用に関する投稿。
  2. リチャードジョーンズは、libguestfsを使用して小さな「基本」仮想マシンイメージを取得する方法について投稿しています。
  3. bugzilla.kernel.orgのBKL#12309




次の部分で





次のパートでは、必要なプログラムのインストールとその基本設定について説明します。



All Articles