I've gotten some requests to give some idea of how to setup CloudStack
with GlusterFS and what kind of numbers can be expected. I'm working
on a more complete writeup, but thought I'd send something to the
maillinglist so I can get an understanding of what questions people
have.

Since I'm adding another (small) cluster to my zone I wanted to get
some hardware numbers out there and disk access speeds.

Hardware consists of two servers with the following config:
1 6-core E5-1650 @ 3.2Ghz (looks like 12 in /proc/cpuinfo)
64GB RAM
Raid-10, 4 sas disks @ 3TB each
Infiniband Mellanox MT26428 @ 40GB/sec

I get ~300MB/sec disk write speeds on the raw xfs-backed filesystem.
command used: dd if=/dev/zero of=/gluster/qcow/temp.$SIZE count=$SIZE
bs=1M oflag=sync
SIZE is usually 20000 to 40000 when I run my tests
My xfs filesystem was build with these options:
mkfs.xfs -i size=512 /dev/vg_kvm/glust0

I mount xfs volume with these options:
/dev/vg_kvm/glust0 /gluster/0 xfs defaults,inode64 0 0

Here is the output of my gluster volume:
Volume Name: custqcow
Type: Replicate
Volume ID: d8d8570c-73ba-4b06-811e-2030d601cfaa
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 172.16.2.13:/gluster/0
Brick2: 172.16.2.14:/gluster/0
Options Reconfigured:
performance.io-thread-count: 64
nfs.disable: on
performance.least-prio-threads: 8
performance.normal-prio-threads: 32
performance.high-prio-threads: 64

here is my mount entry in /etc/fstab:
172.16.2.13:custqcow /gluster/qcow2 glusterfs defaults,_netdev 0 0

After adding a gluster layer (fuse mount) write speeds per process are
at ~150MB/sec.
If I run the above dd command simultaneously X3 I get ~100MB/sec per
dd. Adding more will proportionally reduce the rate evenly as dd's
compete for IO over the glusterfs fuse mountpoint. This means while 1
process with 1 filehandle cannot max out the underlying disks maximum
speed - collectively many processes will give me the same speed from
the gluster layer to the filesystem. I easily can get full IO out of
my underlying disks with many VM's running.

here is output from mount on 1 of the boxes:
/dev/mapper/system-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/vg_kvm-glust0 on /gluster/0 type xfs (rw,inode64)
172.16.2.13:custqcow on /gluster/qcow2 type fuse.glusterfs
(rw,default_permissions,allow_other,max_read=131072)

here is a df:
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/system-root
                       81G  1.6G   76G   3% /
tmpfs                  32G     0   32G   0% /dev/shm
/dev/sda1             485M   52M  408M  12% /boot
/dev/mapper/vg_kvm-glust0
                      4.0T   33M  4.0T   1% /gluster/0
172.16.2.13:custqcow  4.0T   33M  4.0T   1% /gluster/qcow2

NOTES: I have larger cloudstack clusters in production with similar
setups but it is a Distributed-Replicate (6 bricks with replication
2). Native Infiniband/RDMA is currently extremely crappy in gluster -
at best I've been able to get 45MB/sec per process and higher load.
Everything above is IPoIB. GlusterFS version 3.3.1.

I run the cloud-agent and qemu-kvm with CentOS6.3 (old cluster). This
cluster is qemu-kvm on CentOS6.4. Primary storage is sharedmountpoint
to /gluster/qcow2/images.

-Bryan

Reply via email to