kvmからlxcに移行

自鯖仮想マシンkvmからlxcに移行しました。

いいですねこれ。

LXCではホストOSでゲスト側含めてすべてのプロセスを実行するため
ゲスト側でもオーバーヘッドがほとんどありませんし、

さらにKVMと比較してメモリやHDDの割り当ても気楽です。

空きメモリは全てのゲストとホストで共有できますし、
ゲスト群を置いているパーティションのHDDの空き領域もすべて共有できます。

OS仮想化バンザイ!

総評

10分でインストール完了する仮想化アプライアンスです。
仮想化の面倒な多くの部分を簡単にしてくれます。


Web画面上で設定済みのサーバーがダウンロードから配備できるため、
サーバーの設定も不要になるんじゃないかと期待させてくれますが、
実際には直接ログインしての作業が多く必要でした。
これは配布されているサーバーの出来がよくなり次第解決していくと思います。


現状でも KVM と OpenVZ の管理ツールとしてだけなら良い物なのは間違いなさそうです。

OpenVZについて

  • 設定済みのサーバーが"テンプレート"として配布されている
  • そのOpenVZのテンプレートには難あり
    • Ubuntu10.04とdebian6のテンプレートではNIC設定がないため手動で設定した
      • 追記: NIC設定を"ルーティング"とすればコンテナ作成時にGUIから設定できる
      • この時は"ブリッジ"にしたためゲストOS側で設定が必要だった
    • turnkey Linuxredmineパッケージではredmineのパスワード設定画面などが無いため、こちらも手動で再設定した。
    • tun/tapはデフォルトで無効のためOpenvpnは動作しない
      • ゲスト毎に利用許可を出し手動で tun/tap を作成すると利用できるはず
      • KVMを利用する場合はもちろん設定不要ですぐ利用可能
  • OS仮想化なのでオーバーヘッドはほぼなし
    • CPUにIntel-Vなどの仮想化支援機能がなくても性能が出る
  • メモリ量、HDD容量は後から変更可能

本体について

  • debian 6 がベース
  • kernel は 2.6.32
  • raid構築はWeb画面からできない
    • 手動で構築しマウントした後にWeb画面から登録できた
  • ストレージはディレクトリ単位で追加できる
    • 格納する物もImage,ISO,template,container,backupから選べる
    • LVMグループも追加できるがこれはImage専用(KVMvmイメージ用)
    • LVMも手動で構築

紹介ページ

最近 Proxmox VE というソフトを試してます。
http://pve.proxmox.com/wiki/Main_Page
http://svpf.ws/fujish_blog/2010/02/proxmox-ve.html

紹介ページを見るととても魅力的なソフトです

特徴は、
●OpenVZとKVMを搭載し、両VMを同時に管理・稼動させることができる
Debianベースで、コンソールやSSHからホストの管理ができる
●もちろんオープンソースだし無償で利用可能
アプライアンスになっておりインストールが簡単
●WebGUIを搭載し、ゲストを管理・操作できる
 ・日本語対応
 ・クラスタを組んだホストを統括して管理できる
●ホストをオンラインバックアップ
●ゲストをライブマイグレーション
●32bitと64bitのゲストに対応

KVMに対応した管理ツールが少ない中、よくできたWeb管理ツールを
搭載しており、日本語にも対応しています。
でも、日本では全然流行ってないのは残念。


以下に使ってみてわかったことを箇条書きしてみます。

cpiのCloudCore VPSについて

http://www.cloudcore.jp/vps/
MEM 2GB! HDD100GB!

契約から1ヶ月ほどたったのでメモ

パフォーマンスについて

大まかに説明すると

  • HDDは速い
  • cpuは普通
  • memは普通
  • TCPは超速い
  • UDPは激遅い

普段使いには全く問題ないのですが、

TCPは80Mbps程度は出るのに
UDPは4Mbps程度しかでないのは
ちょっと納得いきません

VPN使うなって事なんでしょうね

lessfs+pdumpfs でバックアップ始めました

前回ファイルサーバーでlessfsをそのまま使うと問題があることがわかりましたが、
引き続き使い道を模索してみます

pdumpfsと組み合わせる

今回はpdumpfsの弱点補強に使ってみます

pdumpfsとはフォルダのフルバックアップを取るためのツールで
日付ごとのスナップショットを簡単に作ることができます
使い方もとても簡単

 $ pdumpfs /home/iyokan /backup/

しかも単純にフルコピーするのではなく
("ファイルパス" "ファイルサイズ" "タイムスタンプ") が同じなら
ハードリンクを使って無駄なコピーを抑制してくれるすぐれものです

しかし完璧ではなくて
仕様上"ファイル移動"は追跡できません
たとえばフォルダを移動したらそれ以下のファイルすべてがフルコピーされます

また容量が大きいファイルの扱いも苦手です
変更するとファイル全体をコピーしてしまいます

こういった弱点をlessfsで重複排除してあげることで解決してみます

組み合わせる

組み合わせは何も特別な事はなく
lessfsでマウントした場所にpdumpfsでファイルを置くだけです

lessfsとpdumpfsはインストール済みとして
バックアップ用の設定をします

/etc/lessfs.cfg

lessfsの設定ファイル
"/usr/share/doc/lessfs/examples/lessfs.cfg"あたりからひな形を持ってこれる
データの格納パスだけ変更すれば基本的に大丈夫

DEBUG = 5
HASHNAME=MHASH_TIGER192
HASHLEN = 24
BLOCKDATA_IO_TYPE=file_io
BLOCKDATA_PATH=/lessfs-data/dta/blockdata.dta
BLOCKUSAGE_PATH=/lessfs-data/mta
BLOCKUSAGE_BS=1048576
DIRENT_PATH=/lessfs-data/mta
DIRENT_BS=1048576
FILEBLOCK_PATH=/lessfs-data/mta
FILEBLOCK_BS=1048576
META_PATH=/lessfs-data/mta
META_BS=1048576
HARDLINK_PATH=/lessfs-data/mta
HARDLINK_BS=1048576
SYMLINK_PATH=/lessfs-data/mta
SYMLINK_BS=1048576
FREELIST_PATH=/lessfs-data/mta
FREELIST_BS=1048576
CACHESIZE=512
COMMIT_INTERVAL=10
LISTEN_IP=127.0.0.1
LISTEN_PORT=100
MAX_THREADS=8
DYNAMIC_DEFRAGMENTATION=on
COREDUMPSIZE=2560000000
SYNC_RELAX=0
BACKGROUND_DELETE=off
ENCRYPT_DATA=off
ENCRYPT_META=on
ENABLE_TRANSACTIONS=on
BLKSIZE=131072
COMPRESSION=lzo
/etc/default/lessfs

このファイルを設定すると /etc/init.d/lessfs を通じてマウントできるようになる

#mountpoint
MOUNTPOINT=/media/lessfs

#config file
LESSFS_CONFIG=/etc/lessfs.cfg
/media/lessfs/dump.sh

一連のバックアップ作業を書いたシェルスクリプト

#!/bin/bash

DUMPFS=/usr/local/bin/pdumpfs
DUMPDIR=/media/lessfs/dumpfs/cont
LOGDIR=/media/lessfs/dumpfs/log

function dump1 {
  mkdir -p $DUMPDIR/$2
  $DUMPFS $1 $DUMPDIR/$2
  find $DUMPDIR/$2 -type d -print0 | xargs -0 chmod 755
}

#バックアップするフォルダをここに書く
function dumpall {
  dump1 /etc/ etc/
  dump1 /home/iyokan home-iyokan/
  dump1 /var/www/ www/
}

dumpall >$LOGDIR/`date +%y%m%d%H%M`.log 2>&1
sudo crontab -e

毎日朝5時に自動でバックアップするための設定

0 5 * * * /media/lessfs/dump.sh

以上で基本的な設定は終了

読み取り専用のWebDAV

以下ように設定すると読み取り専用になる

<Location /davfs-log>
  DAV     on

  <LimitExcept GET HEAD OPTIONS PROPFIND>
      Deny from all
  </LimitExcept>
</Location>

とりあえずこの設定でしばらく運用してみます

追記

このまま運用すると、700MBほどメモリを消費してしまいます。
さすがに無駄なのでキャッシュサイズを調整しました。
以下の設定でメモリ消費量が80M程度になるようです。

/etc/lessfs.cfg
...
#CACHESIZE=512
CACHESIZE=32
...