Skip to content
MORITA Kazutaka edited this page May 26, 2011 · 17 revisions

Getting Started

Requirements

  • One or more x86-64 machines.
  • Linux kernel 2.6.27 or later
  • glibc 2.9 or later
  • The corosync and corosync lib package.
  • QEMU 0.13 or later

Compile-time dependencies

  • GNU Autotools
  • pkg-config
  • corosync devel package
  • git (when compiling from source repo)
  • svn (when compiling from source repo)
  • nss devel packages (when compiling corosync from source)

Install

Compiling and installing from source

Compile or install the Corosync packages

Nearly every modern Linux distribution has x86_64 corosync binaries pre-built available via their repositories. We recommend you use these packages if they are available on your distribution.

For debian package based systems:

$ sudo aptitude install corosync libcorosync-dev

For RPM package based systems:

$ sudo yum install corosynclib-devel

If your distribution doesn't provide the corosync packages, or you prefer to compile from source:

$ svn co http://svn.fedorahosted.org/svn/corosync/branches/flatiron
$ cd flatiron
$ ./autogen.sh
$ ./configure
$ sudo make install
$ cd ..

See also: [wiki:'Corosync Config']

Download, build and install QEMU with Sheepdog support

QEMU 0.13 provides built-in support for sheepdog devices. Some distributions provide pre-built versions of this newer version of QEMU. If your distribution has an older version of QEMU or you prefer to compile from source, retrieve the latest QEMU and compile:

$ git clone git://git.sv.gnu.org/qemu.git
$ cd qemu
$ ./configure
$ sudo make install
$ cd ..

Download, build and install the Sheepdog server and command line tools

$ git clone git://sheepdog.git.sf.net/gitroot/sheepdog/sheepdog
$ cd sheepdog
$ ./autogen.sh
$ ./configure
$ sudo make install
$ cd ..

Please note, sheepdog supports a "make rpm" target which will generate an rpm package that can be installed on the local machine. To use this installation method, use the following instructions:

$ git clone git://sheepdog.git.sf.net/gitroot/sheepdog/sheepdog
$ cd sheepdog
$ ./autogen.sh
$ ./configure
$ make rpm
$ sudo rpm -ivh x86_64/sheepdog-0.*
$ cd ..

Usage

Setup Sheepdog

  • Launch the sheepdog daemon on each machines of the cluster.
$ sheep /store_dir

/store_dir is a directory to store objects. The directory must be on the filesystem with an xattr support. In case of ext3, you need to add 'user_xattr' to the mount options.

$ sudo mount -o remount,user_xattr /store_device
  • Format sheepdog cluster
$ collie cluster format --copies=3

"--copies" specifies the number of default data redundancy. In this case, the replicated data will be stored on three machines.

  • Check cluster state

Following list shows that Sheepdog is running on 32 nodes.

$ collie node list
  Idx	  Node id (FNV-1a) - Host:Port
------------------------------------------------
  0	0308164db75cff7e - 10.68.13.15:7000
* 1	03104d8b4315c8e4 - 10.68.13.1:7000
  2	0ab18c565bc14aea - 10.68.13.3:7000
  3	0c0d27f0ac395f5d - 10.68.13.16:7000
  4	127ee4802991f308 - 10.68.13.13:7000
  5	135ff2beab2a9809 - 10.68.14.5:7000
  6	17bd6240eab65870 - 10.68.14.4:7000
  7	1cf35757cbf47d7b - 10.68.13.10:7000
  8	1df9580b8960a992 - 10.68.13.11:7000
  9	29307d3fa5a04f78 - 10.68.14.12:7000
  10	29dcb3474e31d4f3 - 10.68.14.15:7000
  11	29e089c98dd2a144 - 10.68.14.16:7000
  12	2a118b7e2738f479 - 10.68.13.4:7000
  13	3d6aea26ba79d75f - 10.68.13.6:7000
  14	42f9444ead801767 - 10.68.14.11:7000
  15	562c6f38283d09fe - 10.68.14.2:7000
  16	5dd5e540cca1556a - 10.68.14.6:7000
  17	6c12a5d10f10e291 - 10.68.14.13:7000
  18	6dae1d955ca72d96 - 10.68.13.7:7000
  19	711db0f5fa40b412 - 10.68.14.14:7000
  20	7c6b95212ee7c085 - 10.68.14.9:7000
  21	7d010c31bf11df73 - 10.68.13.2:7000
  22	82c43e908b1f3f01 - 10.68.13.12:7000
  23	931d2de0aaf61cf5 - 10.68.13.8:7000
  24	961d9d391e6021e7 - 10.68.13.14:7000
  25	9a3ef6fa1081026c - 10.68.13.9:7000
  26	b0b3d300fed8bc26 - 10.68.14.10:7000
  27	b0f08fb98c8f5edc - 10.68.14.8:7000
  28	b9cc316dc5aba880 - 10.68.13.5:7000
  29	d9eda1ec29c2eeeb - 10.68.14.7:7000
  30	e53cebb2617c86fd - 10.68.14.1:7000
  31	ea46913c4999ccdf - 10.68.14.3:7000

Create a VM image

  • Create a 256 GB virtual machine image of Alice.
$ qemu-img create sheepdog:Alice 256G
  • You can also convert from existing KVM images to Sheepdog ones.
$ qemu-img convert ~/amd64.raw sheepdog:Bob
  • See Sheepdog images by the following command.
$ 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:16      40000

Boot the VM

  • Boot the virtual machine.
$ qemu-system-x86_64 sheepdog:Alice

Snapshot

  • Snapshot
$ qemu-img snapshot -c name sheepdog:Alice
  • After getting snapshot, a new virtual machine images are added as a not-current image.
$ 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
  • You can boot from the snapshot image by specifying snapshot id
$ qemu-system-x86_64 sheepdog:Alice:1

Cloning from the snapshot

  • Create a Charlie's image as a clone of Alice's image.
$ qemu-img create -b sheepdog:Alice:1 sheepdog:Charlie
  • Charlie's image is added to the virtual machine list.
$ 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

Shutdown Sheepdog

  • Run the shutdown command on the one of the cluster machines.
$ collie cluster shutdown

This command stops all the sheep processes on the cluster.

Test Environment

  • Debian squeeze amd64

Clone this wiki locally