2008年12月15日月曜日

vserver hashify

vserver には複数の仮想環境のファイルをハードリンクする機能がある.むかしはunifyと呼ばれる機能があった.多分これはファイル名をキーにして同じかどうかを判別していたのだと思われる.その後追加されたのがこのhashifyでこちらは,ファイルのハッシュ値を使って同一性を判別するようだ.

こちらのFAQを参照して,vserver2とvserver3をunifyしてみる.

まず準備として,hashifyが利用するディレクトリを作る.

> mkdir /etc/vservers/.defaults/apps/vunify/hash /vservers/.hash
> ln -s /vservers/.hash /etc/vservers/.defaults/apps/vunify/hash/root
ただし,私の環境では,1行目で作っているディレクトリはすでに存在した.

次に,各仮想サーバのほうにもディレクトリを作る.

> mkdir /etc/vservers/vserver2/apps/vunify
> mkdir /etc/vservers/vserver3/apps/vunify
で,仮想サーバを起動しておいて,順次hashifyする.動作中のをいじるのは怖いような気もするが,逆に停止中だとhashifyできない.
> vserver vserver2 hashify
Duplicate hash-dir entry 'root' found
> vserver vserver3 hashify
Duplicate hash-dir entry 'root' found

効果は?

duの値を比べてみる.
hashify 前
  vserver2: 260736 
  vserver3: 254308 
hashify 後
  vserver2: 257304 
  vserver3: 199300 
vserver3は大きく減っている.といっても20%程度だが.そもそもvserver3はvserver2をクローンしたものなのに,これだけしか減らないというのも不思議な話だ.

0 件のコメント: