仮想化

OpenVZとは?

別名: Virtuozzo
定義

OpenVZ is container-based virtualisation in which every instance shares the host kernel, so guests cannot load kernel modules or run a different operating system. OpenVZ is why unusually cheap virtual servers exist: density is much higher and memory is routinely oversold.

OpenVZが重要な理由

OpenVZは、異常に安価な仮想サーバーが存在する理由です。密度がはるかに高く、メモリは日常的にオーバーコミットされます。また、Docker、古いホストでのWireGuard、カスタムカーネルが格安プロバイダーで頻繁に失敗する理由でもあります。

実践でのOpenVZ

OpenVZ VPSを使用する場合、あなたはホストのカーネル内で動作しています。これは`/proc`や、ロードできないモジュールで確認できます:`modprobe wireguard`を試すと、ファイルが見つからないのではなく、権限に関するメッセージで失敗します。カーネルを変更することは不可能なので、ワークロードをホストに合わせる必要がありますが、ホストは変更できません。メモリは共有され、しばしばオーバーセールされるため、隣のインスタンスのスパイクがあなたに影響を与える可能性があります。ここでのミスは高くつきます:カーネル制御を必要とするタスクにOpenVZボックスを選ぶと、KVMで再構築するか、プランを完全に変更する必要に直面します。

OpenVZについて人々が誤解していること

よくある誤りは、OpenVZが単にKVMの古いまたは安い種類であると想定することです。そうではありません。OpenVZコンテナはカーネルモジュールをロードできず、異なるOSを実行できず、古いホストではWireGuardなどの機能を使用できません。修正:OpenVZをサブセットではなく、明確な制約として扱います。カーネルレベルの制御が必要な場合は、最初からKVMプランを選択してください。

OpenVZ — よくある質問

OpenVZでDockerを実行できますか?

多くの場合、直接はできません。OpenVZはホストカーネルを共有し、カーネル機能を制限する可能性があるため、Dockerの通常のコンテナランタイムは、特に古いホストでは失敗する可能性があります。lxcのような回避策やVM内でコンテナを実行することはできますが、保証はありません。Dockerに依存する前に、ホストの機能を確認してください。

OpenVZは何に適していますか?

OpenVZは、1つのホストで多数のインスタンスが実行される高密度環境に適しており、安価です。一般的なWebサーバー、軽量アプリケーション、カーネル変更を必要としないあらゆるワークロードに適しています。カスタムカーネル、ネストされた仮想化、または特別なネットワーク機能を必要とするタスクは避けてください。

OpenVZが登場する箇所

仮想化の詳細

KVM
KVMはLinuxカーネルに組み込まれたフルハードウェア仮想化であり、各ゲストに独自のカーネルと、他のテナントからのハードウェア強制分離を提供します。
LXC
LXCはLinuxネイティブのコンテナ化であり、ホストカーネルを共有しながら、名前空間とcgroupsでプロセスを分離します。
ハイパーバイザー
ハイパーバイザーとは、仮想マシンを作成・実行し、物理CPU、メモリ、I/Oを割り当てるソフトウェアレイヤーです。
嵌套虚拟化
ネスト仮想化により、仮想マシン自体が仮想マシンを実行できるようになり、プロセッサの仮想化拡張機能がゲストに公開されます。
vCPU
vCPUは、ゲストに提示される仮想プロセッサであり、物理コアまたはスレッド上のスケジューリング時間によって支えられています。
cloud-init
cloud-initは、プラットフォームが提供するメタデータを使用して、仮想マシンを初回起動時に構成するための標準的なメカニズムです。