Jimmy 的文档: sheepdog安装使用

前言

sheepdog是一个专门为qemu设计的虚拟机分布式文件系统,采用完全对称的结构,没有元数据服务的中心节点,因此免除了单点故障的隐患.本文基于最新的0.8.2版本测试,介绍sheepdog的安装配置和使用,测试过的,应该是可以使用的,有什么问题,随时联系[email protected]

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个副本,只需要在其中一台节点执行,看看使用几个节点,如果只有一个节点的话,就将--copies=1,否则会出错。

   
   
   
   
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,最好用最新的,make的时间可能比较长。

  
  
  
  
    
    
    
    
git clone git://git.qemu.org/qemu.git cd qemu ./ 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.102 : 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) 在libvirt文件中使用

提供一个完成的配置文件,qxl,spice,virtio的:

我的有两个node 分别是: 10.1.82.113 和10.1.82.119

有一个vdi文件是:MyFirstDisk3(虚拟机镜像)

通过下面的配置文件即可运行。

<domain type='kvm'>
	<name>win7-32</name>
	<vcpu>2</vcpu>
	<cpu>
		<topology sockets='1' cores='2' threads='1'/>
	</cpu>
	<clock offset='localtime'/>
	<on_poweroff>destroy</on_poweroff>
	<on_reboot>restart</on_reboot>
	<on_crash>restart</on_crash>
	<memory>2048576</memory>
	<os>
		<smbios mode='sysinfo'/>
		<type arch='x86_64'>hvm</type>
		<boot dev='hd'/>
	</os>
	<sysinfo type='smbios'>
		<bios>
			<entry name='vendor'>XXXX</entry>
			<entry name='version'>6.2</entry>
			<entry name='date'>2011-12</entry>
			<entry name='release'>10</entry>
		</bios>
		<system>
			<entry name='manufacturer'>XXXX</entry>
			<entry name='version'>6.2</entry>
			<entry name='product'>NKVS</entry>
			<entry name='family'>NKSCLOUD</entry>
		</system>
	</sysinfo>
	<devices>
		<emulator>/usr/libexec/qemu-kvm</emulator>
<span style="color:#FF0000;">                   
      <disk type="network" device="disk">
          <driver name="qemu" type="raw" />
          <source protocol='sheepdog' name="MyFirstDisk3">
              <host name="10.1.82.113" port="7000"/>
              <host name="10.1.82.119" port="7000"/>
          </source>
          <target dev="vdb" bus="virtio" />
      </disk> </span>

	       <interface type='bridge'>
			<source bridge='virbr0'/>
			<mac address='02:00:0a:01:53:a9'/>
			<model type='virtio'/>
		</interface>
		<graphics type='spice' listen='0.0.0.0' port='30006'>
			<mouse mode='server'/>
		</graphics>
		<video>
			<model type='qxl' vram='65536' heads='1'/>
		</video>
		<controller type='virtio-serial' index='0'/>
		<channel type='spicevmc'>
			<target type='virtio' name='com.redhat.spice.0'/>
		</channel>
		<sound model='ich6'/>
		<input type='tablet' bus='usb'/>
	</devices>
	<features>
		<pae/>
		<acpi/>
		<apic/>
	</features>
</domain>


a. 因为qemu-kvm 的关系可能会造成下面的错误:

  qemu-kvm: -drive file=sheepdog:10.1.82.113:7000:myFirstDisk3,if=none,id=drive-virtio-disk1,format=qcow2: could not open disk image sheepdog:10.1.82.113:7000:myFirstDisk3: No such file or directory

可以通过下面步骤来修复,直接运行ln -s /usr/local/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm 大家可以尝试下能不能成功。

   
   
   
   
wget http://sourceforge.net/projects/kvm/files/qemu-kvm/1.0/qemu-kvm-1.0.tar.gz/download tar zxvf qemu-kvm-1.0.tar.gz cd qemu-kvm-1.0 ./configure --enable-spice make&&make install modprobe kvm-intel modinfo kvm ln -s /usr/local/bin/qemu-img /usr/bin/qemu-img ln -s /usr/local/bin/qemu-io /usr/bin/qemu-io ln -s /usr/local/bin/qemu-nbd /usr/bin/qemu-nbd ln -s /usr/local/bin/qemu-system-x86_64 /usr/bin/qemu ln -s /usr/local/bin/qemu-system-x86_64 /usr/bin/kvm ln -s /usr/local/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm

b. 有的系统还会出现如下错误:

libvir:  error : cannot execute binary /usr/libexec/qemu-kvm: Permission denied

这是selinux捣的鬼,运行setenforce = 0即可。

c. <driver name="qemu" type="qcow2" /> 

qcow2 出现如下错误:

qemu-kvm: -drive file=sheepdog:10.1.82.113:7000:MyFirstDisk3,if=none,id=drive-virtio-disk1,format=qcow2: could not open disk image sheepdog:10.1.82.113:7000:MyFirstDisk3: Invalid argument

暂时发现在配置文件中只能用raw,还在研究中。








你可能感兴趣的:(Jimmy 的文档: sheepdog安装使用)