Sheepdog

インストール ( CentOS 6.0 )

CentOS は epel リポジトリから

# yum --enablerepo=epel install sheepdog 

インストール ( Fedora 15 )

yumでインストール
# yum install sheepdog 
git からインストール
# yum -y install corosync
# yum -y install git autoconf automake make gcc corosynclib-devel rpm-build

# cd /usr/local/src
# git clone git://github.com/collie/sheepdog.git
# cd sheepdog
# ./autogen.sh
# ./configure

バージョンに '-' が入っている場合
rpmbuild の Illegal char 回避のため '-' を '_' に修正
error: line 3: Illegal char '-' in: Version: 0.2.3-88-g20bb9a7

# vi Makefile
 ====
VERSION = 0.2.3-88-g20bb9a7
↓
VERSION = 0.2.3_88_g20bb9a7
 ====

# make rpm
# rpm -ivh x86_64/sheepdog-0.*

corosync

bindnetaddr は ネットワークアドレスも可

http://www.corosync.org/doku.php?id=faq:configure_openais

The bindnetaddr is the network address to bind to. For the purpose of sharing configuration files across the cluster, openais uses network interface netmask to mask only the address bits that are used for routing the network.

http://manpages.ubuntu.com/manpages/jaunty/man5/corosync.conf.5.html

bindnetaddr
This specifies the address which the corosync executive should
bind. This address should always end in zero. If the totem
traffic should be routed over 192.168.5.92, set bindnetaddr to
192.168.5.0.

Fedora

Gmane Loom

http://www.sawanoboly.net/wp/2011/03/15/229.html
libvirt: Domain XML format

その他

sheepdog -D, --directio use direct IO
Re: [Sheepdog] Sheepdog performance

collie vm コマンドはなくなった
Re: [Sheepdog] Collie vm command

削除
Sheepdog Design · sheepdog/sheepdog Wiki · GitHub

TODO: currently, reclaiming of unused data objects is not invoked until all relevant VDI objects (all relative snapshot VDIs and cloned VDIs) are deleted.

After all relevant VDIs are deleted, Sheepdog deletes all data objects of the VDIs, and set the null string to the name of the vdi objects.

ライブマイグレーション

対応している

インターフェース

ポート 7000 を使用

http://www.mail-archive.com/sheepdog@lists.wpkg.org/msg01025.html

But sheep still binds to `0.0.0.0:7000` and accessible from my
external interface.

sheep/lib/net.c

int create_listen_ports(int port, int (*callback)(int fd, void *), void *data)
{
...
       ret = getaddrinfo(NULL, servname, &hints, &res0);
...

NULL なので 0.0.0.0

→ 外部インターフェースからのアクセス拒否は iptables で行う

log level

デフォルトはINFO

http://www.mail-archive.com/sheepdog@lists.wpkg.org/msg00246.html

SDOG_EMERG 0
SDOG_ALERT 1
SDOG_CRIT 2
SDOG_ERR 3
SDOG_WARNING 4
SDOG_NOTICE 5
SDOG_INFO 6
SDOG_DEBUG 7
...
By default, collie prints messages that are more important than
INFO. You can change the default log level with "loglevel" boot
option.
...

$ collie cluster format --help
cluster format - create a Sheepdog storage

Usage:
collie cluster format [-c copies] [-H] [-a address] [-p port] [-h]

Command parameters:
-c, --copies set the number of data redundancy
-H, --nohalt serve the IO rquests even lack of enough redundant nodes
-a, --address specify the daemon address (default: localhost)
-p, --port specify the daemon port
-h, --help display this help and exit