OpenVZ

OpenVZとは



OpenVZ(オープンブイジー)は、Linuxカーネルをベースにしたオペレーティングシステムレベルのサーバ仮想化ソフトウェアです。Red Hat Enterprise Linux (RHEL) 環境での利用を主眼に開発され、Parallels Virtuozzo Containers for Linuxのオープンソース版として知られています。

概要



OpenVZは、一つの物理サーバー上に複数の独立したLinuxインスタンス(コンテナ)を効率的に作成することを可能にします。ただし、全てのコンテナでLinuxカーネルを共有するため、Linux以外のオペレーティングシステム(Windowsなど)を動作させることはできません。

特徴



軽量性と高密度性



ハイパーバイザー型の仮想化ソフトウェアVMwareやXenなど)と比較して、OpenVZはオーバーヘッドが少ないという利点があります。これにより、より多くの仮想環境を一つの物理サーバー上で稼働させることができ、特にバーチャル・プライベート・サーバー (VPS) 環境でのコスト削減に貢献します。

チェックポイントとライブマイグレーション



OpenVZは、チェックポイント機能とライブマイグレーション機能をサポートしています。これにより、稼働中のゲストOS(コンテナ)を別の物理サーバーへ中断することなく移動させることができます。ファイルシステムにploopを使用した場合、スナップショット機能によりファイルシステムの復元や変更差分の管理も可能です。

メモリ管理の柔軟性



RHEL 5版では仮想メモリ単位でのみメモリ制限が可能でしたが、RHEL 6およびそれ以降では、cgroupsの進化により、物理メモリやスワップメモリに対しても制限を設定できるようになりました。これにより、コンテナ内の物理メモリが枯渇した場合でも、ホスト側の物理メモリが余っている間はディスクへの書き出しを遅らせることで、より柔軟なメモリ管理が実現できます。

対応OS



OpenVZは、公式にはRHELのみをサポートしていますが、RHELクローンのCentOSでも動作します。Parallels Virtuozzo ContainersではCentOSも公式にサポートされています。カーネルの改造が行われているため、ディストリビューションやバージョンへの依存度が高い点に注意が必要です。

その他のOS



UbuntuやDebianなど、他のLinuxディストリビューションでもOpenVZを利用することは可能です。ただし、インストールにはRPMファイルをdeb形式に変換するなどの追加の手順が必要です。

カーネル



OpenVZで使用されるカーネルは、LinuxカーネルにOpenVZコンテナのサポートを追加したものです。この修正されたカーネルは、仮想化、コンテナの隔離、リソース管理、チェックポイント機能などを提供します。

仮想化と隔離



OpenVZでは、各コンテナは独立した物理サーバーのように動作し、以下の要素が隔離されています。

  • - ファイルシステム:システムライブラリ、アプリケーション、仮想化された/procや/sysなど。
  • - ユーザーとグループ:各コンテナは独自のrootユーザーを持ち、ユーザーやグループは独立。
  • - プロセスツリー:独立したプロセスを持ち、プロセスID (PID) が仮想化されています。
  • - ネットワーク仮想化されたネットワークデバイスを持ち、固有のIPアドレスやルーティング設定が可能。
  • - デバイス:必要に応じて、ネットワークインターフェース、シリアルポート、ディスクパーティションなどのデバイスへのアクセスが可能。
  • - IPCオブジェクト:共有メモリ、セマフォ、メッセージパッシングなども独立。

リソース管理



OpenVZのリソース管理は、ディスククォータ、CPUスケジューラー、I/Oスケジューラー、ユーザービーンカウンタで構成されます。これらのリソースは、コンテナの実行中でも再起動せずに変更可能です。

ディスククォータ



各コンテナにはディスクブロック数とinode数(ファイル数)で管理される個別のディスククォータが設定できます。

CPUスケジューラー



OpenVZのCPUスケジューラーは2段階の公平なスケジューリング戦略を採用しています。

  • - 第1段階:コンテナごとのcpuunit値に基づいて、CPUタイムスライスを割り当て。
  • - 第2段階:標準のLinuxスケジューラーがコンテナ内のどのプロセスを実行するか決定。

I/Oスケジューラー



I/Oスケジューラーも同様に2段階で処理を行います。CFQ I/Oスケジューラーを採用し、各コンテナのI/O優先度に基づいて利用可能なI/O帯域を分配します。

ユーザービーンカウンタ



ユーザービーンカウンタは、コンテナごとのリソース制限を設定するためのものです。21項目があり、各コンテナがシステムリソースを使い果たすことを防ぎます。

主要なパラメータ


  • - numproc (プロセス数)
  • - numtcpsock (TCPソケット数)
  • - numothersock (TCP以外のソケット数)
  • - vmguarpages (保証される仮想メモリページ数)

二次的なパラメータ


  • - kmemsize (カーネル内のスワップ不可メモリサイズ)
  • - tcpsndbuf (TCP送信バッファ)
  • - tcprcvbuf (TCP受信バッファ)
  • - othersockbuf (他のソケットのバッファ)
  • - dgramrcvbuf (データグラム受信バッファ)
  • - oomguarpages (OOM時の保証仮想メモリページ数)
  • - privvmpages (プライベート仮想メモリページ数)

補助的なパラメータ


  • - lockedpages (スワップされないメモリ)
  • - shmpages (共有メモリ)
  • - physpages (物理メモリサイズ)
  • - numfile (オープンファイル数)
  • - numflock (ファイルロック数)
  • - numpty (pty数)
  • - numsiginfo (siginfo数)
  • - dcachesize (dキャッシュサイズ)
  • - numiptent (NETFILTERのエントリー数)
  • - swappages (スワップメモリサイズ)

ライセンス



OpenVZは、GPLバージョン2に基づいて配布されています。関連する商用ソフトウェアとして、パラレルスが提供するParallels Virtuozzo Containers for Linuxがあります。

関連項目



  • - Parallels Virtuozzo Containers
  • - Parallels Workstation, Parallels Desktop
  • - Xen
  • - libvirt
  • - LXC
  • - Linux-VServer

外部リンク



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。