前言
sheepdog是一个专门为qemu设计的虚拟机分布式文件系统,采用完全对称的结构,没有元数据服务的中心节点,因此免除了单点故障的隐患.本文基于最新的0.7.0版本测试,介绍sheepdog的安装配置和使用.
sheepdog的后端集群管理
sheepdog的后端集群管理用于管理节点间的成员关系和消息通讯.目前可使用四种模式,分别是local driver(用于单机测试),corosync (默认), zookeeper and Accord.
分为两种模型:
– 全对称 (依赖 Corosync ,运行于 Sheepdog 的地址空间)
● 缺点:规模小 [<100]
● 优点:无需配置
– 单独的控制集群 (依赖 Accord* 或者 Zookeeper ,运行于独立地址空间)
● 缺点:需要配置控制集群
● 优点:规模大 [>1000]
本测试使用的就是默认的Corosync模式.
安装前准备:
先做一些系统设置
echo
"
* soft nofile 65533
"
>>
/
etc
/
security
/
limits
.
conf
echo
"
* hard nofile 65533
"
>>
/
etc
/
security
/
limits
.
conf yum install -y make automake autoconf gcc nss-devel wget git glib2
安装epel源
rpm -ivh http:
//
dl
.
fedoraproject
.
org
/
pub
/
epel
/
6
/
x86_64
/
epel-release-
6
-
8
.
noarch
.
rpm
安装sheepdog
1).安装corosync
centos6自带的版本过旧,我们需要安装新版
yum remove corosync corosynclib corosynclib-devel -y git clone git:
//
github
.
com
/
corosync
/
corosync
.
git
cd
corosync git checkout -b flatiron origin
/
flatiron
./
autogen
.
sh
./
configure --enable-nss make install
2).安装sheepdog
cd
/
home2
/
install git clone git:
//
github
.
com
/
collie
/
sheepdog
.
git
cd
sheepdog
./
autogen
.
sh
./
configure make install
配置corosync和sheepdog
cd
/
etc
/
corosync cp corosync
.
conf
.
example corosync
.
conf
编辑corosync.conf修改bindnetaddr成你的网段如192.168.1.0
#
Please read the corosync
.
conf
5
manual page compatibility: whitetank totem { version:
2
secauth:
off
threads
:
0
#
Note
,
fail_recv_const is only needed
if
you're
#
having problems with corosync crashing under
#
heavy sheepdog traffic
.
This crash is due to
#
delayed
/
resent
/
misordered multicast packets
.
#
fail_recv_const:
5000
interface { ringnumber:
0
bindnetaddr:
192.168
.
1.0
mcastaddr:
226.94
.
1.1
mcastport:
5405
} } logging { fileline:
off
to_stderr: no to_logfile: yes to_syslog: yes
#
the pathname of the log file logfile:
/
var
/
log
/
cluster
/
corosync
.
log
debug
:
off
timestamp:
on
logger_subsys { subsys: AMF
debug
:
off
} } amf {
mode
: disabled }
启动服务
/
etc
/
init
.
d
/
corosync
start
#
或通过命令启动
(/
var
/
lib
/
sheepdog是sheepdog使用的数据目录
,
你可以更改到其他
)
#
sheep
/
var
/
lib
/
sheepdog
sheepdog要求/var/lib/sheepdog目录所在的分区支持xattr
mount -o remount
,
user_xattr
/
以上操作需要在每一台sheepdog节点执行
格式化sheepdog集群并设置3个副本,只需要在其中一台节点执行
collie cluster
format
--copies
=
3
查看节点状态
至此sheepdog集群已经配置完毕
使用qemu-img创建sheepdog磁盘镜像
由于centos6自带的qemu1.2版本并不支持sheepdog,这里要编译新版的qemu.
安装依赖的包
yum install zlib-devel glib2-devel -y
编译qemu
wget http:
//
wiki
.
qemu-project
.
org
/
download
/
qemu-
1.5
.
2
.
tar
.
bz2 tar jxvf qemu-
1.5
.
2
.
tar
.
bz2
cd
qemu-
1.5
.
2
./
configure make
;
make install
创建磁盘
/
usr
/
local
/
bin
/
qemu-img create -f qcow2 sheepdog
:MyFirstDisk
10G
如果sheepdog运行在其他机器上,需要指定IP和端口
/
usr
/
local
/
bin
/
qemu-img create -f qcow2 sheepdog:
192.168
.
1.100
:
7000
:MyFirstDisk
10G
列出sheepdog里的镜像
将现有的镜像转换到sheepdog里
qemu-img convert
./
mysystem
.
raw sheepdog
:mysystem
启动虚拟机
qemu-system-x86_64 --enable-kvm -m
1024
-drive file
=
sheepdog
:MyFirstDisk
,
cache
=
writeback -vnc :
15
-cdrom
/
data
/
CentOS-
6.4
-i386-minimal
.
iso
其他用法
1)创建快照
qemu-img snapshot -c name sheepdog
:MyFirstDisk
快照创建后查看镜像列表
collie vdi list name id size used shared creation
time
object id -------------------------------------------------------------------- Bob
0
2.0
GB
1.6
GB
0.0
MB
2010
-
03
-
23
16
:
16
80000
MyFirstDisk
0
256
GB
0.0
MB
0.0
MB
2010
-
03
-
23
16
:
21
c0000 s MyFirstDisk
1
256
GB
0.0
MB
0.0
MB
2010
-
03
-
23
16
:
16
40000
用快照启动虚拟机
qemu-system-x86_64 sheepdog
:MyFirstDisk
:
1
2)磁盘克隆
qemu-img create -b sheepdog
:MyFirstDisk
sheepdog
:Disk2
3)关闭sheepdog集群
此命令会关闭所有节点的进程
4)使用fuse挂载sheepdog
首先建立一个名为my_volume的卷
echo
my_volume
>
/
var
/
lib
/
sheepdog
/
vdi
/
mount
格式化为ext4并挂载
mkfs
.
ext4
/
var
/
lib
/
sheepdog
/
volume
/
my_volume mount -o loop
/
var
/
lib
/
sheepdog
/
volume
/
my_volume
/
mnt
当连接的sheepdog机器宕机我们可以在线切换到另一台sheepdog
echo
ip
:port
>
/
var
/
lib
/
sheepdog
/
config
/
sheep_info