sheepdog 與KVM

clip_image002

Sheepdog是爲kvm虛擬化量身定作的分佈式文件系統,針對kvm系統作了深刻的優化,是kvm虛擬化分佈式文件系統的終極解決方案,目前版本0.4,若是要在生產環境中使用,還有不少工做要作,須要等待更成熟的版本發佈。 node

說明: python

設計目的: git

1. 集羣設計虛擬機容量70-100臺,佔用1個機櫃,所有由1U服務器組成,每臺服務器6臺,300G*8; github

sheepdog集羣架構: 算法

1. 組成,存儲服務器經過哈希算法,能夠彈性增長或者減小,並實現冗餘; centos

2. 存儲服務器每臺機器至少須要4塊網卡,若是機器只有板載的2塊網卡,須要在加1塊雙口網卡,作4塊網卡的綁定,這樣能夠提升網絡帶寬; 緩存

3. 每臺服務器是存儲節點也是計算節點; 服務器

sheepdog集羣搭建: 網絡

注意事項:本文介紹在centos 6.3的安裝,若是要使用libvirt須要在在fedora17上安裝。 架構

1 安裝

安裝epel源

rpm -Uvh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-7.noarch.rpm

yum install corosynclib-devel

若是是centos6.x 須要先卸載corosync,由於系統攜帶的版本過舊

yum remove corosync corosynclib corosynclib-devel

須要源代碼安裝

yum install nss-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

修改corosync配置文檔

# Please read the corosync.conf 5 manual page

cat <&lt; EOF >/etc/corosync/corosync.conf

compatibility: whitetank

aisexec {

user: root

group: root

}

service {

name: pacemaker

ver: 0

}

totem {

version: 2

secauth: off

threads: 0

interface {

ringnumber: 0

bindnetaddr: 你的ip網段,好比192.168.1.0

mcastaddr: 226.94.1.1

mcastport: 5405

ttl: 64

}

}

logging {

fileline: off

to_stderr: no

to_logfile: yes

to_syslog: no

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

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

EOF

service corosync restart

安裝最新的qemu

git clone git://git.sv.gnu.org/qemu.git

cd qemu

./configure

make install

cd ..

安裝sheepdog

源代碼安裝

rpm -Uvh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-7.noarch.rpm

yum install userspace-rcu-devel -y

cd /root

git clone git://github.com/collie/sheepdog.git

cd sheepdog

./autogen.sh

./configure

make install

cd ..

安裝最新的libvirt(須要比較新的內核支持)

yum install device-mapper-devel -y

yum install python-devel -y

yum install libnl-devel -y

yum install lib-xml2 -y

yum install -y gnutls-devel

git clone git://libvirt.org/libvirt.git

cd libvirt

./autogen.sh

make

make install

2 使用

mkdir -p /var/lib/sheepdog

須要有個塊設備或者分區供sheepdog使用,這裏是一個lv

mount /dev/vg_datap/lv_for_sheep /var/lib/sheepdog

啓動服務

/etc/init.d/sheepdog start

或者

sheep /var/lib/sheepdog

/var/lib/sheepdog是sheepdog的存儲位置,這個目錄必須是xattr ext3 ext4格式之一

增長一個用戶給sheepdog使用

從新掛載sheepdog存儲位置

格式化sheepdog集羣

collie cluster format --copies=3

copies是鏡像冗餘數

也能夠後臺格式化

collie cluster format -b farm --copies=3

重用操做

1) 查看集羣狀態

collie node list

[root@dell3 ~]# collie node list

M Id Host:Port V-Nodes Zone

- 0 10.10.11.100:7000 64 2030766602

- 1 10.10.11.101:7000 64 -720696822

- 2 10.10.11.102:7000 64 -167048694

- 3 10.10.11.103:7000 64 -133494262

2) 產生一個鏡像

qemu-img create sheepdog:Alice 256G

3) 將一個現有的鏡像轉化到sheepdog中

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

4) 查看鏡像

collie vdi list

5) 虛擬機啓動

qemu-system-x86_64 sheepdog:Alice

6) 修改緩存方式

qemu-system-x86_64 -drive file=sheepdog:Alice,cache=writeback

7) 建立虛擬機快照

qemu-img snapshot -c name sheepdog:Alice

8) 快照查看

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

Alice 0 256 GB 0.0 MB 0.0 MB 2010-03-23 16:21 c0000

Alice 1 256 GB 0.0 MB 0.0 MB 2010-03-23 16:16 40000

9) 從指定的快照啓動

qemu-system-x86_64 sheepdog:Alice:1

10) 從快照克隆

qemu-img create -b sheepdog:Alice:1 sheepdog:Charlie

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

Alice 0 256 GB 0.0 MB 0.0 MB 2010-03-23 16:21 c0000

s Alice 1 256 GB 0.0 MB 0.0 MB 2010-03-23 16:16 40000

Charlie 0 256 GB 0.0 MB 0.0 MB 2010-03-23 16:23 100000

11) 中止集羣

collie cluster shutdown

12) libvirt支持

<disk type='network'>

<driver name="qemu" type="raw" io="threads" ioeventfd="on" event_idx="off"/>

<source protocol="sheepdog" name="image_name">

<host name="hostname" port="7000"/>

</source>

<target dev="hdb" bus="ide"/>

<boot order='1'/>

<transient/>

<address type='drive' controller='0' bus='1' unit='0'/>

</disk>

13) 啓動一個虛擬機,vnc端口是5902,網卡是e1000

qemu-system-x86_64 --enable-kvm -m 2048 -drive file=sheepdog:w2k3 -drive file=sheepdog:w2k3d -net nic,model=e1000 -vnc :2

相關文章
相關標籤/搜索