BLOG

KVM+RAMDISKで爆速な仮想環境を構築してみました。

kvmbanner-logo2

 

今回はKVMを使ってRAMディスク上に仮想環境を構築するお話です。

 

RAMディスクとはパソコン上に積まれたメモリをハードディスクに見せかける技術ですが、
CentOSでは標準サポートされており、/dev/shmにRAMディスクが割り当てられています。

 

大きな特徴に「SSDよりも高速」というメリットがある反面、
「端末を再起動・停止してしまうと中身が消えてしまう」デメリットもありますが、
今回はKVMを使ってRAMディスク上にOSをインストールしてみたいと思います。

 

RAMディスク上にインストールするためOSを含めて非常に高速な環境になりますが、
仮想ホストを再起動するとイメージごとOSの中身が消えてしまう点には注意ください。

 

■ RAMディスクを割り当ててみる
ramdisk
通常のRAMディスクは/dev/shmにメモリ容量の50%がマウントされていますが、
今回は/memというディレクトリを作成し、RAMディスクを16GBでマウントしてみたいと思います。

・コマンドでマウントする方法

mkdir /mem
mount -t tmpfs ramdisk -o size=16g /mem

・/etc/fstabを修正してマウントする方法
こちらは再起動後も有効になります。

・/etc/fstab 変更前
--------------------------------------------------
tmpfs                   /dev/shm                tmpfs   defaults        0 0

・/etc/fstab変更後
--------------------------------------------------
tmpfs                   /mem                tmpfs   defaults,size=16g        0 0

・手動でマウント (再起動しない場合)
mount /mem

上記により/memに16GBのRAMディスクがマウントされました。
続いてvirt-managerよりOSを構築してみたいと思います。

 

■ virt-managerでOSをインストールする
続いてOSのインストールです。OSのインストールはvirt-manager上で行いました。
Windowsから全ての操作を行う場合、puttyでx11を有効にしてssh接続し、
xmingでXwindowアプリケーションを実行できるようにすると便利です。

・仮想サーバーの名前を設定
WS000279
今回はramdiskという名前でインストールしました。

・インストールメディアの選択
WS000280
isoがサーバー上にある場合、上記のようにisoファイルのパスを選択して進めます。
もし無い場合にはダウンロードするか、ドライブにマウントしてください。

・仮想ゲストのCPU数、メモリ容量を指定
WS000281
たくさん割り当てる事で仮想サーバーへたくさんのリソースが割り当てられます。
今回はCPU数12個、メモリ4GBで設定しました。

・仮想ゲストのイメージ保存先を指定
WS000287
上記のように/mem/ramdisk.imgと指定する事で、
RAMディスク上に仮想ゲストのイメージが作成されます。

・仮想ゲスト設定の確認、カスタマイズ
WS000288
このままではインストールが正常に終わりませんので、
設定のカスタマイズを行うボックスにチェックを入れ完了ボタンを押下します。

・仮想ゲスト設定のカスタマイズ
WS000289
設定のカスタマイズを行う箇所は仮想ゲストのハードディスク設定になります。
ハードディスク以外のディレクトリへ仮想ゲストのイメージを保存する場合、
CentOS6.2/RHEL6.2以降では利用できないオプションがあるとエラーが発生してしまいます。
そこでキャッシュモデルをdefault→writethroughに変更し、適用ボタンを押して反映後、
インストールの開始ボタンを押下します。

・OSのインストール
WS000290
あとは通常通りにOSのインストールを行います。
インストール完了後にddコマンド等でハードディスクの速度を測定してみてください。
きっと高速なパフォーマンスが出ている事と思います。

 

今回はKVMを用いてRAMディスク上にOSをインストールしてみました。
R515というデルの2Uサーバー上に構築し、ddコマンドによる計測結果ですが、
テストした仮想環境では書き込み600MB、読み込み2GB/sという速度を叩きだしました。

仮想ホストの停止や再起動でRAMディスク上のデータが飛んでしまうため、
使い道は限られてしまうかもしれませんが、
インメモリDBを構築したい、Fusion-ioは高額すぎて手が届かない環境で何とか構築したい、
たくさんのメモリを積み過ぎて容量が余ってるので有効活用(?)したいなど、
様々な用途に利用できると思います。是非お試しください。

Tweet about this on TwitterShare on FacebookShare on Google+