Sheepdog[1]是开源的分布式块存储项目,具有零配置、Thin-Provision、高可靠、智能节点管理、容量线性扩展、虚拟机感知(底层支持冷热迁移和快照、克隆等)、支持计算与存储混合架构的特点等,可扩展到上千级别的物理节点。

Openstack[2]是亚马逊的S3(Simple Storage Service),弹性计算EC2(Elastic Computing),弹性块服务EBS(Elastic Block Service)等服务平台的开源实现。目前Openstack的弹性块服务由iSCSI设备、Ceph中的Rados Block Device以及Sheepdog提供。

本文尝试在单机上运行Sheepdog和Openstack,并且假设读者没有Sheepdog和Openstack的部署经验。推荐的操作系统平台为Ubuntu 12.04和Fedora 16。本文的操作系统为12.04,假设GIT、GCC、Autoconf以及Make等常见的编译环境已经配置好了。

首先建立一个3节点的Sheepdog集群[3]:

 # 编译一个最新的Sheepdog执行文件
 $ sudo apt-get install liburcu-dev
 $ git clone git://github.com/collie/sheepdog.git
 $ cd sheepdog
 $ ./autogen.sh; ./configure --disable-corosync
 $ make; sudo make install
 # 建立一个3节点的Sheepdog集群
 $ for i in 0 1 2; do sheep -c local -d /tmp/store$i -z $i -p 700$i;sleep 1;done
 $ collie cluster format
 # 可以通过以下等命令查看Sheepdog集群的信息
 $ collie node info # 查看各节点的信息
 $ collie cluster info # 查看集群信息

通过Devstack[4]自动配置Openstack环境:

 # 这个耗时比较久,大概好几个小时
 $ git clone git://github.com/openstack-dev/devstack.git
 $ cd devstack; CINDER_DRIVER=sheepdog ./stack.sh
 # stack.sh启动后,开始的时候需要点几下回车,然后就会自动安装配置了
 

当以上两步完成后,通过在浏览器里面输入localhost页面,登陆Openstack的管理页面,开始我们的体验之旅。你可以创建具有持久化性质的卷(块设备),然后挂载到你创建的实例(instance)上去。你可以对改卷做快照等操作。你也可以通过ISO光盘,把操作系统安装到卷上,然后选择从卷启动实例,而不是平常那样从镜像启动。对于安装在卷上的系统,你可以随意快照(做模版)和克隆,达到快速部署的目的。值得一提的是,Sheepdog的快照和克隆操作非常的廉价和快速(只需要创建4M大小的索引对象方便以后的Copy-On-Write操作),支持并行操作。

1. http://www.osrg.net/sheepdog/
2. 更多资料 http://docs.openstack.org/trunk/openstack-compute/admin/content/
3. 如果要想得到更好的IO性能,需要开启Object cache和External journal device. 具体见https://github.com/collie/sheepdog/wiki
4. http://devstack.org/