最新消息:

sheepdog安装和使用管理

kvm admin 4508浏览 0评论

一. 系统架构

Sheepdog的架构是完全对称的,没有中心控制节点,不存在单点问题,具有以下几点特性:

Ÿ   性能和容量的现行扩展:当需要更大的容量时,sheepdog可以以线性增长方式简单的将新节点加入到集群中。

Ÿ   无单点故障:当有机器出问题时,数据还是可以通过其他机器传输。

Ÿ   容易管理:集群中的节点没有配置文件,当有新机器加入时,sheepdog进程会自动检测并将新机器加入到集群中。

系统架构图:

 

15131908_YLdd

Sheepdog是一个分布式存储系统,并具有对象存储功能(哈希算法),其主要模块有:

Object storage:Sheepdog不是一个普通的文件系统,它可以为QEMU组建一个分布式的对象存储系统,并将对象存储在这个系统中。一个对象是指大小灵活可变,并具有全局的唯一标识符。可以通过指定标识符对该对象进行读/写/创建/删除等操作,该对象存储系统由gateway和object manager组成。

Gateway:Gateway从QEMU的块设备驱动上接收I/O请求(对象ID,偏移量,长度,操作类型等),通过哈希算法计算出目标节点,并且将该I/O请求发到目标节点上。

Object manager:对象管理器接收网关发来的I/O请求,并根据该请求对本地磁盘执行读写操作。

Cluster manager:集群管理器管理集群中节点之间的关系,检测集群中节点的变更并进行通知,同步节点之间的信息,如VDI,快照等。目前使用corosync作为集群管理器。

QEMU设备驱动程序:该程序将VM镜像分割成一个固定大小的对象(默认为4M),并通过网关将其存储到对象存储系统中。这些对象存储在/var/lib/sheepdog/objs/下面。

二.安装

1. 环境:

  • One or more x86-64 machines.
  • Linux kernel 2.6.27 or later
  • glibc 2.9 or later
  • The corosync and corosync lib package.
  • QEMU 0.13 or later

2. 依赖包:

  • GNU Autotools
  • pkg-config
  • corosync devel package
  • git (when compiling from source repo)
  • liburcu
  • optional:fuse-devel (for sheepfs)

3. 安装集群管理器-corosync

yum install corosync corosynclib corosynclib-devel

配置/etc/corosync/corosync.conf:

# Please read the corosync.conf.5 manual pagecompatibility: whitetank

 

totem {

version: 2

secauth: off

threads: 0

interface {

ringnumber: 0

bindnetaddr: 1.1.1.0

mcastaddr: 226.94.1.1

mcastport: 5405

ttl: 1

}

}

logging {

fileline: off

to_stderr: no

to_logfile: yes

to_syslog: yes

logfile: /var/log/cluster/corosync.log

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

主要需要修改bindnetaddr,该参数是指节点所在的网络。

corosync是一个简单的集群管理器,其基本原理是通过组播的方式来进行通信,达到信息管理的目的。根据淘宝的调研,corosync最多只支持50个节点的集群,推荐使用zookeeper进行集群管理。

下载userspace-rcu-0.7.4.tar.bz2

tar -xvf userspace-rcu-0.7.4.tar.bz2

cd userspace-rcu-0.7.4

./configure

make && make install

 

下载collie-sheepdog-v0.4.0-309-ga313bd0.zip

unzip collie-sheepdog-v0.4.0-309-ga313bd0.zip

cd collie-sheepdog-a313bd0

./autogen.sh

./configure

make && make install

 

配置iptables规则

iptables -A INPUT -p igmp -j ACCEPT

iptables -A INPUT -m addrtype –dst-type MULTICAST -j ACCEPT

iptables -A INPUT -p udp -m state –state NEW -m multiport –dport 5404,5405 -j ACCEPT

iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 7000 -j ACCEPT

 

启动服务

/etc/init.d/corosync restart

service iptables restart

/etc/init.d/sheepdog restart

 

日志:

/var/log/cluster/corosync.log

/var/lib/sheepdog/sheep.log

三.使用

格式化集群,并设置farm模式(提供高级特性:如集群快照,快速修复,数据压缩存储(未实现)),冗余设置为3:

collie cluster format -b farm –copies=3

查看集群节点:

collie node list

查看已经创建的img镜像文件:

collie vdi list

如果报错:Failed to read object 800316b400000000 IO has halted as there are too few living nodes

Failed to read inode header

解决:则停掉其他集群node:

对该单一节点执行recover操作:

collie cluster recover force

但是这个操作会删除所有已有镜像

以网关形式启动服务:

sheep -g /var/lib/sheepdog

 

创建一个空的vdi:

qemu-img create sheepdog:Alice 256G

把一个已有镜像转换到sheepdog中去:

qemu-img convert -t writethrough ~/amd64.raw sheepdog:Bob

 

通过sheepdog启动一个虚拟机

qemu-system-x86_64  -curses  sheepdog:192.168.10.2:7000:Alice

在sheepdog中安装一个虚拟机

通过iso安装:

qemu-kvm -m 1024 -cdrom CentOS-6.2-x86_64-minimal.iso -drive file=sheepdog:Alice,index=0 -boot d -net nic -net user -nographic  -vnc :2

通过硬盘启动

qemu-kvm -m 1024 -drive file=sheepdog:Bob,index=0,boot=on -boot c -net nic -net user -nographic -vnc :3

挂载硬盘到虚拟机中:

修改virsh中虚拟机的xml文件:

<disk type=”network” device=”disk”>

<driver name=”qemu” type=”raw” />

<source protocol=’sheepdog’ name=”Alice”>

<host name=”1.1.1.93″ port=”7000″/>

<host name=”1.1.1.89″ port=”7000″/>

</source>

<target dev=”vdb” bus=”virtio” />

</disk>

进入到虚拟机中格式化磁盘:

mkfs.ext4 /dev/vdb

挂载:

mount /dev/vdb /mnt

这样虚拟机中的vdb就使用了远程sheepdog集群中的vdi文件。

四.结论

sheepdog 基本没有配置文件,使用起来很简单方便,使用 zookeeper 作为集群管理器能扩展更多的 sheepdog 节点。 sheepdog 的 vdi 在使用时会被分割成 4M 的 obj ,在试验过程中,这个分割过程导致写数据时非常慢,需要优化及进一步调研。与淘宝 sheepdog 项目成员子团沟通该问题,得到的答复是最好用作慢存储。因此, sheepdog 就目前情况来说不适合用来做 openstack的base目录 及磁盘的网络存储系统。

 

转载请注明:爱开源 » sheepdog安装和使用管理

您必须 登录 才能发表评论!