特別企画

メモリーのスワップに対応した月額467円のVPS「ServersMan@VPS」を試す

 「ServersMan@VPS」は、ドリーム・トレイン・インターネット(DTI)が提供している仮想専用サーバー(VPS)サービスだ。このServersMan@VPSが、2013年12月にバージョンアップし、メモリーのスワップやUbuntu 12.04 LTSに対応した。

 この新しいServersMan@VPSのアカウントを編集部から借りて試してみた。

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のスワップが設定されていることがわかる。

swaponコマンドでスワップの設定を表示する。1GBのスワップが設定されていることがわかる
freeコマンドでメモリとスワップの利用状況を表示する。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の認証方法を公開鍵認証のみにしておくことをおすすめする。

ログインして、lsb_releaseコマンドでLinuxディストリビューションを確認
unameコマンドでカーネルを確認。CentOS 6系ベースのカーネルと思われる

 初期状態でWebサーバーソフトのApache httpdなどがインストールされているので、あとは必要に応じてセットアップして使おう。

WordPressをセットアップする

デスクトップ環境を動かしてみる

 最後に、やや特殊な例になるが、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を終了して再び起動する。

軽量なデスクトップ環境「LXDE」をインストール
大量のパッケージをインストールする確認
途中でキーボードの配列を尋ねられる。ちゃんと表示できていないが、「PC-98xx」とある上の項目を選んだ
デスクトップ環境のインストールが完了した。続いて「TightVNC server」をインストールする
TightVNC serverのインストールが完了した
最初に起動したときには、VNC接続用パスワードを設定する
TightVNCの設定ファイルをテキストエディタで開き、最終行を書きかえる
TithtVNC serverをいちど終了して、再び起動する

 WindowsのVNCクライアントとして、ここでは「UltraVNC」をインストールして接続してみた。インストーラをダウンロードして実行すると、いくつか設定を聞かれるが、特に希望がなければすべてデフォルトのままでよいだろう。

 UltraVNCを起動すると、接続先を尋ねられるので、サーバーのIPアドレスとVNCのポート番号を指定して接続する。接続までいくと、パスワードを求められるので、TightVNC serverに設定したパスワードを入力する。

 これで、Windows上のUltraVNCにサーバーで動いているデスクトップ環境の画面が表示され、リモート操作できるようになる。「Surface Pro」のようなWindowsタブレットからでも、サーバー上で動作するデスクトップ環境が利用できる。

「窓の杜」からUltraVNCをダウンロード
UltraVNCのインストーラを実行する。設定は特に希望がなければすべてデフォルトのままでよいだろう
UltraVNCを起動すると接続先を尋ねられる。ここでは「VNC Server」に、「<サーバーのIPアドレス>:<VNCのポート番号>」だけを指定した
TightVNC serverで設定したパスワードを入力する
Windowsで動くUltraVNCで、サーバー上のデスクトップ画面が表示された
「Surface Pro」のようなWindowsタブレットからも、サーバー上のデスクトップ画面を利用できる

 AndroidタブレットやiPadからも、VNCでリモートデスクトップを操作できる。ここでは、iPadからVNCクライアントのアプリ「VNC Viewer」で接続した。これもサーバーのIPアドレスとVNCのポート番号を指定し、パスワードを入力すれば、リモートデスクトップが表示される。

App Storeの「VNC Viewer」
VNC Viewerを起動した。右上の「+」をタップして接続先の指定に進む
接続先と、その設定の登録名を入力する
「Connect」で接続する
TightVNC serverで設定したパスワードを入力する
iPadで動くVNC Viewerで、サーバー上のデスクトップ画面が表示された

 以上、ServersMan@VPSでのメモリーのスワップ対応とUbuntu対応を見てきた。低価格を実現するコンテナ仮想化環境でサーバーアプリケーションを動かすときに、スワップ対応は安心材料となる。また、Ubuntu対応によって、サーバーアプリケーションの幅が広がる。一定の制約はあるが、それが気にならない用途であれば、高いコストパフォーマンスを発揮するだろう。

高橋 正和