LinuxVPSを選ぶときに、「KVM」「OpenVZ」という2つの言葉をよく目にすることがあります。僕は、はじめてVPSを借りるときに価格性能比だけを重視してカゴヤのVPS(OpenVZのほう)を選んだのですが、後になって色々後悔しました。CLOUD/2のVPSについても軽く触れつつ、書いていこうと思います。?KVM、OpenVZは、サーバ仮想化技術のひとつ。これらの詳しい解説はググれば腐るほど出てくるので割愛します。重要なのは、KVMは「ハイパーバイザ型のハードウェア仮想化」であるのに対し、「コンテナ型のOS仮想化」であるということです。KVMはOpenVZと比べてより深いレベルで仮想化を実現しています。OpenVZは各ゲスト間でカーネルを共有するので、一部機能は制限されますが、仮想化のレベルはKVMと比較して浅いので、仮想化によるオーバーヘッドは少ない(らしい)です。できなかったこと(デメリット)実際にOpenVZのインスタンスを使ってみて、できなかったことや、つまづいたポイントを挙げていきます。KVM、OpenVZ両方のインスタンスを作成することができます。CLOUD/2では使えるようになっていますhashlimitとは、iptablesの拡張モジュールのひとつで、これを使うと送信元IPアドレス、ポート番号などの単位でアクセス頻度の制限をすることができます。よるとhashlimitが使えるのはカーネルバージョン2.6.18以降であり、2018年1月時点で、カゴヤのOpenVZで動いていたのは2.6.18未満であったため、hashlimitが使えませんでした。-r2.6.32-042stab123.9でした。このバージョンだとDockerとかは動かなそう。くどいようですがOpenVZは各ゲスト間でカーネルを共有するので各インスタンスからカーネルをアップデートすることはできません。VPSの場合、サーバーを管理している業者によってアップデートされるのを待つしかありません。これはhashlimitだけの問題ではなく、新しいカーネルバージョンを要求する機能は使えない可能性があるというのが真の問題となります。IPマスカレード(NAPT)が使えないOpenVPNのサーバーとして機能するように、NATの設定をしようとしてハマりました。各クライアントからのインターネットアクセスを全てサーバー経由で行う(redirect-gateway)ためには、一般的にはIPマスカレードが使われると思いますが、どうやらOpneVZのインスタンスからは使えないようです。これはOpenVZそのものに原因があるので、どの業者のVPSを使っても同じです。この場合、ソースNAT(SNAT)で代用することができます。10.8.0.0/24からのインターネットアクセスを、venet0というネットワークインターフェースを経由して外部ネットワークへ流す場合、以下のように設定します。<サーバー側のグローバルIPアドレス>一部のリソース制限がきついVPSを使う以上、CPU、メモリ、ディスクなどのリソースが制限されるのは当然ですが、それ以外のリソースも制限されています。OpenVZのリソース制限は、以下のファイルに記述されています。個人的に一番きつかったのは、iptablesに登録できるパケットフィルターのエントリ数制限です。カゴヤのOpenVZでは、200~400が上限に設定されています。ブラックリスト的な使い方をしていたり、複数のサービスを公開していたりすると全然足りないかもしれません。増やせないの?と思ったのですが、OpenVZの仕様上、エントリ数が200~300を超えるとパケットの処理が目に見えて低速化するので、仕方ないようです。読み方catで中身を見ればOK値をインスタンス側から変更することはできません。limitとなるようである。説明privvmpagesメモリ割り当ての上限。4KB)heldがbarrierに達した時点で、メモリの割り当ては「優先度が高い」と判断されたもの(プロセスのスタック等)のみに制限される。limit以上にメモリを確保することはできない。heldの値は割り当てが行われた量であって、実際に使用中とは限らない。vmguarpagesメモリ割り当ての最低保証値。(単位:ページ)heldがbarrierに達するまでは、メモリ割り当ては常に成功する。それ以降のメモリの割り当ての可否は、ホスト及び他のコンテナのメモリ使用状況による。limitの値は現バージョンでは無視される(特に意味は持たない)。プロセス+カーネルスレッドの上限数。barrierには特に意味がなく、limitと同じ値が推奨される。Killerに関する設定。Killerによってプロセスが強制的に殺されることはない。barrierを超えると、最も使用量が大きいアプリケーションが強制的に終了させられる。Killerが行われたという証拠。TCPソケットの上限数。擬似端末(SSHでのログイン等に使用される)の上限数。オープンできるファイルの上限数。numiptentiptablesのパケットフィルタのエントリ数の上限。Wikiを和訳しただけなので、表に載っていないパラメータはそちらを参照。まとめここまでOpenVZのVPSのマイナス面ばかり挙げてしまいましたが、コスパではKVMと比較して高いレベルを誇っていると思います。税込み1000円以下で仮想3コアを使うことができる国内VPSは現状カゴヤのOpenVZ以外にはないと思います。OpenVZの特徴を理解し、それが許容される用途であれば、かなり有効な選択肢になるのではないでしょうか。コメントをキャンセル質問・感想などお気軽にどうぞ。*が付いている項目は入力必須です。メールアドレス以外の項目が公開されます。スパム防止のため、コメント反映まで少々時間がかかります。”抜かりのない”自作例外クラスの作り方リンクGitHubアカウントを開設しました!当ブログ内で取り上げたコードなどを上げています。