1. 程式人生 > >qemu 啟動虛擬機器 sheepdog

qemu 啟動虛擬機器 sheepdog

前言

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: offthreads: 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 02.0 GB 1.6 GB 0.0 MB 2010-03-2316:1680000 MyFirstDisk 0256 GB 0.0 MB 0.0 MB 2010-03-2316:21 c0000 s MyFirstDisk 1256 GB 0.0 MB 0.0 MB 2010-03-2316:1640000

用快照啟動虛擬機器

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