sheepdog是一个分布式存储系统,能够为QEMU提供块存储服务,也能够为支持ISCSI协议的客户端提供存储服务,同时支持restful接口的对象存储服务(兼容swift和S3)。
0.sheepdog使用集群管理软件进行集群管理,例如节点的进入/离开集群等。目前支持Corosync、zookeeper和local。local就是使用IPC通信模拟集群通信,这时所有sheepdog节点都运行在一个物理PC上。
zookeeper是比较成熟的集群管理软件,以后均使用zookeeper作为默认的集群管理软件。
在github上下载最新的源代码(https://github.com/sheepdog-ng/sheepdog-ng或者https://github.com/sheepdog/sheepdog这2个版本略有区别,以后再说)
1,安装
1.1 编译安装zookeeper并安装zookeeper C库
$ tar -zxvf zookeeper-3.4.6.tar.gz
$ cdzookeeper-3.4.6/src/c
$ ./configure–prefix=/usr
$ make
$ sudomake install
1.2 编译安装sheepdog
$ cd sheepdog/
$ ./configure–enable-zookeeper –disable-corosync
$ make
$ sudo make install
第二步中,使sheepdog使用zookeeper而不使用corosync。
2、启动sheepdog集群
2.1 启动zookeeper
测试环境zookeeper使用单节点模式(standalone)即可,实际使用时一般使用3个或者5个节点作为集群,提高可靠性。
2.2 启动sheepdog:
$sudo sheep /mnt/sheep -czookeeper:host:2181
上述命令使用/mnt/sheep这个目录为sheep提供物理存储,并使用zookeeper集群:host:2181.
此时可以使用dog命令检查集群状态,例如dog node list/dog clustet info/dog vdi list等
3、进行集群操作
主要是dog命令,例如集群格式化,卷的创建,删除,克隆/快照,读写等。
3.1、格式化 dog cluster format
3.2、创建卷 dog vdi create vol-name 2G
3.3、读写卷 dog vdi read v1 offset length dog vdi write v1 offset len < content dog vdi read v1 1024 55 echo test | dog vdi write v1 1024 5
4、sheepdog和QEMU
QEMU是一款虚拟化软件,支持sheepdog,sheepdog块存储可以直接提供给QEMU使用,但是也可以通过其他方式使用。这两款软件可以配合使用(虚机+存储),也可以完全独立,QEMU使用其他存储,sheepdog为物理机提供存储服务等。
目前我们的使用方式为:通过iscsi,将sheepdog集群的存储服务提供给物理机使用,
集群中分为2种节点:存储节点和计算节点,存储节点为sheep存储节点,每个节点挂在10块左右的普通STAT磁盘,每块盘容量为3T,每个节点30T,45个节点的容量就是1350TB;计算节点就是使用存储的节点,上面也跑sheep,但是使用gateway模式(sheep启动参数有-g或者–gateway),计算节点上同时安装iscsi的initiator和target(tgtd)。
iscsi的常规使用方式是,存储节点上安装target,需要使用存储的节点上安装initiator,IO通过ISCSI协议传输在以太网上。
但是我们的环境中,target也安装在计算节点上,同时计算节点作为gateway模式,加入到集群中。