仮想化
Hypervisorとは?
A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.
Hypervisorが重要な理由
タイプ1ハイパーバイザーはハードウェア上で直接実行されます。KVMは、Linuxカーネルモジュールとして実装されたタイプ1ハイパーバイザーという点で特異であり、Linuxのドライバエコシステム全体を利用できます。
実践でのHypervisor
KVMハイパーバイザー上でサーバーを運用する場合、実際のハードウェア割り当てvCPU、RAM、ディスクI/Oを確認する。これらをパネルから調整し、多くの場合、再起動せずにメモリを追加できる。ホストを過剰コミットして間違えると、隣のノイズの多いワークロードがインスタンスのCPUやIOを枯渇させ、完璧に構成されたゲストが遅くなる。ネスト仮想化により、ハイパーバイザー内でハイパーバイザーを実行でき、テストには便利だが、パフォーマンスが犠牲になり、リソース数の数え方が混乱する可能性がある。
Hypervisorについて人々が誤解していること
よくある誤解は、ハイパーバイザーをコンテナの境界だと思うことです。そうではありません。ハイパーバイザーは完全な仮想マシンを提供し、独自のカーネル、独自の/proc、共有ネームスペースのない環境を実現します。人々は隣人のプロセスが見えないとか、カスタムカーネルは不可能だと思い込み、制限にぶつかります。正しい理解は、KVMでは真の分離と制御が得られ、手作りのイメージで起動したり、ネストされた仮想化を実行したりできるということです。これらはコンテナではできません。
Hypervisor — よくある質問
タイプ1ハイパーバイザーとはどういう意味ですか?
タイプ1ハイパーバイザーは、オペレーティングシステムの上ではなく、ホストハードウェア上で直接実行されます。KVMは特別で、Linuxカーネルモジュールとして実装されたタイプ1ハイパーバイザーであり、ハードウェア管理にLinuxのドライバーエコシステム全体を使用できます。これにより、ベアメタル仮想化のパフォーマンスとLinuxの柔軟性が両立します。
KVMはOpenVZのようなコンテナとどう違うのですか?
KVMは真の仮想化を提供します。各ゲストは独自のカーネル、独自の/procを持ち、共有ネームスペースがないため、完全なrootアクセスとカスタムカーネルの実行が可能です。コンテナはホストのカーネルとネームスペースを共有するため、できることに制限があります。KVMでは、分離と制御、さらにネストされた仮想化やカスタムISOでの起動が可能です。
Hypervisorが登場する箇所
- VPSでフルディスク暗号化は役に立ちますか? 電源オフのディスクの物理的押収に対しては、決定的に役立ちます。ボリュームはパスフレーズがなければ暗号文だからです。実行中のハイパーバイザーにアクセスできる攻撃者に対しては、役に立ちません。キーはホストが読めるメモリ内にあるからです。それ以外を主張するプロバイダーは過大広告であり、その区別がすべてです。…
- アップタイムSLAは? インスタンスごとに99.99%(ネットワークおよびハイパーバイザーの可用性で毎月測定)。違反は公開スケールで自動サービスアワードが発生します:99.99%未満で10%、99.9%未満で25%、99.5%未満で50%、99%未満で100%。過去12か月間のフリート全体の観測された稼働率は99.993%でした。…
- ホスティングプロバイダーはVPS上のファイルを見ることができますか? 技術的にははい: ハイパーバイザーアクセスを持つプロバイダーは、暗号化されていないゲストディスクとそのメモリを読むことができます。これはすべての仮想化プラットフォームに当てはまります。異なるのは、彼らが実際にそうするかどうか、ポリシーがそれを禁止しているかどうか、そしてあなたがキーを握るフルディスク暗号化がイ…
- CPUスチールタイムとは何か、なぜ重要なのか? スチールタイムとは、仮想CPUが実行可能な状態でも、ハイパーバイザーが物理コアを他のユーザーに割り当てた時間の割合です。topの"st"列に表示されます。2〜3%を超えると、コアを競合していることを意味し、共有vCPUインスタンスで説明できないレイテンシスパイクの一般的な原因です。…
- VPSは安全ですか? 分離は強力です。KVMはハードウェアで分離を強制し、そこから脱出するのは深刻な研究レベルのエクスプロイトです。現実的なリスクはハイパーバイザーではなく、お客様の設定です。パスワードSSH、未パッチのソフトウェア、忘れ去られた公開サービスが、実際の侵害のほぼすべてを占めています。…
- マネージドVPSとアンマネージドVPS:サーバーのパッチ適用は誰が行う? アンマネージドVPSでは、プロバイダーがハードウェア、ネットワーク、ハイパーバイザーを保証します。カーネルより上はすべてあなたの管理下にあり、アップデート、ファイアウォール、バックアップも含まれます。マネージドVPSは管理作業を追加し、価格は2〜5倍になります。ターミナルに慣れているならアンマネージドが標準的…
仮想化の詳細
- KVM
- KVMはLinuxカーネルに組み込まれたフルハードウェア仮想化であり、各ゲストに独自のカーネルと、他のテナントからのハードウェア強制分離を提供します。
- OpenVZ
- OpenVZはコンテナベースの仮想化であり、すべてのインスタンスがホストカーネルを共有するため、ゲストはカーネルモジュールをロードしたり、異なるオペレーティングシステムを実行したりできません。
- LXC
- LXCはLinuxネイティブのコンテナ化であり、ホストカーネルを共有しながら、名前空間とcgroupsでプロセスを分離します。
- 嵌套虚拟化
- ネスト仮想化により、仮想マシン自体が仮想マシンを実行できるようになり、プロセッサの仮想化拡張機能がゲストに公開されます。
- vCPU
- vCPUは、ゲストに提示される仮想プロセッサであり、物理コアまたはスレッド上のスケジューリング時間によって支えられています。
- cloud-init
- cloud-initは、プラットフォームが提供するメタデータを使用して、仮想マシンを初回起動時に構成するための標準的なメカニズムです。