特別企画
メモリーのスワップに対応した月額467円のVPS「ServersMan@VPS」を試す
(2014/3/31 06:00)
「ServersMan@VPS」は、ドリーム・トレイン・インターネット(DTI)が提供している仮想専用サーバー(VPS)サービスだ。このServersMan@VPSが、2013年12月にバージョンアップし、メモリーのスワップやUbuntu 12.04 LTSに対応した。
この新しいServersMan@VPSのアカウントを編集部から借りて試してみた。
低コストなコンテナ型でメモリーのスワップに対応
ServersMan@VPSの特徴は、ざっくばらんに言うと「安い」ことだ。いちばん低価格のEntryプランで、月額467円(税別、初期費用無料)で保証メモリー1GB、ディスク容量50GB。なお、このメモリーやディスク容量は、同じ価格でサービス開始時から増えている。
この価格を実現するための大きな要素が、コンテナ型のサーバー仮想化ソフトウェア「OpenVZ」だ。OpenVZはコンテナ型の仮想化ソフトウェアの一つで、ホスティング事業者などで広く使われている。Parallels社が開発する「Virtuozzo」のオープンソース版にあたる。なお、OpenVZを使うには、独自の修正を加えたLinuxカーネルが必要になる。
VPSでは、1台のサーバーをユーザーに専有させるために、1台の物理サーバー上で複数の仮想サーバーを動かし、その仮想サーバーをユーザーに提供する。このサーバー仮想化の仕組みは大きく分けて、OSの下に仮想化ソフトウェアが入り物理サーバーをまるまるエミュレートする「ハイパーバイザー型」と、OSのカーネルは仮想サーバー間で共有しそれより上の部分を分離する「コンテナ型」の2種類がある。
コンテナ型の仮想化は、物理サーバーをエミュレートする必要がないぶん、オーバーヘッドが小さく、1台の物理サーバーにより多くの仮想サーバー(コンテナと呼ぶ)を収容できる。それにより、1ユーザーあたりのコストを下げられるわけだ。
コンテナ型では、グラフィック画面などのデバイスや、OSを再インストールするなど物理サーバーに近い操作、カーネルに近いシステム機能などは利用できない。そうした要素が必要であればハイパーバイザー型が必須になるだろうし、Webサーバーやデータベースなどのアプリケーション層を自由に構築できればいいということであればコンテナ型も選択肢に入るだろう。
ただし、アプリケーション層だけをいじる用途でも問題になっていたのが、メモリーのスワップの問題だ。サーバーやPCで使われているOSでは、メモリー空間をページという単位に区切り、メモリーがいっぱいになってくると優先度の低いページをディスクに書き出してメモリーを空ける。この処理をスワップという。さらに現代のOSでは、メモリーがいっぱいになっていなくても、あまり使わなそうなページをスワップでディスクに書き出し、空いたメモリーをディスクキャッシュなどに利用するようになっている。
Linuxでは、メモリがいっぱいになると、カーネルのOOM Killerという仕組みが動作する。OOM Killerは、重要度の低そうなプログラムから強制終了してメモリを空ける。スワップが使えないと、ふとしたことからメモリを多く使う処理が実行されたときに、プログラムがどんどん強制終了されてしまう危険がある。
スワップを含めたメモリ管理は、カーネルの役割だ。しかしコンテナ型の仮想化では、1つのカーネルのメモリー空間を容量制限を付けて各コンテナに割り当てている。そのため、コンテナごとにスワップの動作をさせるのが難しかった。
このことはOpenVZでも問題となっていた。そこで最近のバージョンのOpenVZでは、Red Hat Enterprise(RHEL)6系やCentOS 6系のカーネルの機能を利用して、コンテナ単位でのスワップを実現する「VSwap」という機能を実現している。
今回ServersMan@VPSがメモリーのスワップに対応したというのは、詳細は明らかにされていないが、このVSwapに対応したものと思われる。サーバーにログインし、スワップの情報を見てみると、1GBのメモリに対して1GBのスワップが設定されていることがわかる。
OSとしてUbuntu 12.04 LTSに対応
もう一つの新機能に、OSの種類としてUbuntu 12.04 LTSに対応したことがある。ServersMan@VPSでは、OSとしてCentOS 6系(64bit版/32bit版)やCentOS 5系(64bit版/32bit版)、Debian GNU/Linux(64bit版)が利用でき、Ubuntuについては以前はUbuntu 10での対応となっていたが、2013年12月のバージョンアップで最新版のUbuntu 12.04 LTS(64bit版)になった。
Ubuntuは2004年に登場した比較的新しいLinuxディストリビューションだ。半年のサイクルで最新版がリリースされ、そのうち2年に1度のバージョンがLTS(長期サポート版)となる。実運用のサーバーではLTS版が利用されることが多い。ServersMan@VPSで利用できるUbuntu 12.04 LTSは、執筆時点での最新のLTSだ。
Ubuntuはもともとデスクトップ版の使いやすさで人気を博した。最近ではそれにとどまらず、サーバー版でもシェアを増やしている。特に、Web系やクラウド系での利用例が多いのが特徴だ。IaaS基盤ソフトウェア「OpenStack」や、Linuxカーネル標準の機能を使ったコンテナ型仮想化ソフトウェア「LXC」などの開発プロジェクトでも、Ubuntuをホスト環境のメインターゲットとして開発が進んでいる。ゲスト環境のOSとしても、採用ソフトウェアの新しさとサポート期間とのバランスから、Web系サーバーで人気がある。
さっそくServersMan@VPSのUbuntuに、SSHクライアントからインターネット経由でログインしてみる。初期状態ではrootアカウントでパスワード認証によりログインするようになっている。そのため、なるべく早く一般ユーザーを作成し、そちらでログインするようにして、SSHの認証方法を公開鍵認証のみにしておくことをおすすめする。
初期状態でWebサーバーソフトのApache httpdなどがインストールされているので、あとは必要に応じてセットアップして使おう。
デスクトップ環境を動かしてみる
最後に、やや特殊な例になるが、ServersMan@VPS上のUbuntuにGUI環境をインストールして、リモートデスクトップ環境を実験してみよう。
コンテナ型の仮想化の特徴でも解説したように、OpenVZの仮想サーバー(コンテナ)にはグラフィックデバイスがない。そこで、ここではリモートデスクトップ技術の一種である「VNC」(Virtual Network Computing)を利用し、サーバーの画面を操作用マシンにインターネット越しで転送して操作する。VNCのクライアントは、WindowsやMac、iOS、Android、Linuxなど、さまざまなプラットフォームのものが開発されているので、PCからタブレットまで異なるマシンからリモート接続できるのが特徴だ。
まず、デスクトップ環境のソフトウェア群をインストールする。ここでは軽量なデスクトップ環境「LXDE」をインストールした。そのほか、VNCサーバーのソフトである「TightVNC server」をインストールする。
コマンドラインからTight VNC serverを起動すると、初回はVNCで接続するパスワードの設定となる。さらに、表示専用のパスワードを設定するかどうか尋ねられるが、これは必要がなければ設定しなくてよいだろう。
そのほか、VNCで接続したときにLXDEの画面を起動するには、設定ファイルを1箇所変更する。「~/.vnc/xtartup」というファイルをテキストエディタで開き、最終行を「/usr/bin/startlubuntu」に書き換えて保存する。設定を変更したら、いちどTightVNC serverを終了して再び起動する。
WindowsのVNCクライアントとして、ここでは「UltraVNC」をインストールして接続してみた。インストーラをダウンロードして実行すると、いくつか設定を聞かれるが、特に希望がなければすべてデフォルトのままでよいだろう。
UltraVNCを起動すると、接続先を尋ねられるので、サーバーのIPアドレスとVNCのポート番号を指定して接続する。接続までいくと、パスワードを求められるので、TightVNC serverに設定したパスワードを入力する。
これで、Windows上のUltraVNCにサーバーで動いているデスクトップ環境の画面が表示され、リモート操作できるようになる。「Surface Pro」のようなWindowsタブレットからでも、サーバー上で動作するデスクトップ環境が利用できる。
AndroidタブレットやiPadからも、VNCでリモートデスクトップを操作できる。ここでは、iPadからVNCクライアントのアプリ「VNC Viewer」で接続した。これもサーバーのIPアドレスとVNCのポート番号を指定し、パスワードを入力すれば、リモートデスクトップが表示される。
以上、ServersMan@VPSでのメモリーのスワップ対応とUbuntu対応を見てきた。低価格を実現するコンテナ仮想化環境でサーバーアプリケーションを動かすときに、スワップ対応は安心材料となる。また、Ubuntu対応によって、サーバーアプリケーションの幅が広がる。一定の制約はあるが、それが気にならない用途であれば、高いコストパフォーマンスを発揮するだろう。