您的位置:首页 > 其它

qemu 启动虚拟机 sheepdog

2015-06-17 16:28 323 查看

前言

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[/code] 

安装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


查看节点状态

collie node list


至此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里的镜像

collie vdi list


将现有的镜像转换到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集群

collie cluster shutdown


此命令会关闭所有节点的进程

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: