sheep man page

sheep — Distributed Block Storage System for QEMU


sheep [options] [Path]


sheep - Sheepdog is a distributed storage system for QEMU. It provides highly available block level storage volumes to virtual machines. Sheepdog supports advanced volume management features such as snapshot, cloning, and thin provisioning. The architecture of Sheepdog is fully symmetric; there is no central node such as a meta-data server.

The server daemon is called sheep(8).  A command line utility is available via dog(8).  QEMU virtual machines use the sheep daemon via a block driver available in qemu(1).


-b, --bindaddr

specify IP address of interface to listen on


 $ sheep -b ...

This tries to teach sheep listen to NIC of


 $ sheep -b ...

This tries to teach sheep listen to all the NICs available. It can be useful when you want sheep to response dog without specified address and port.

-c, --cluster

specify the cluster driver (default: corosync)

Available arguments:
 local: use local driver
 corosync: use corosync driver
 zookeeper: use zookeeper driver, need extra arguments

 zookeeper arguments: connection-string,timeout=value (default as 3000)


 $ sheep -c zookeeper:IP1:PORT1,IP2:PORT2,IP3:PORT3[/cluster_id][,timeout=1000] ...

This tries to use 3 node zookeeper cluster, which can be reached by IP1:PORT1, IP2:PORT2, IP3:PORT3 to manage membership and broadcast message and set the timeout of node heartbeat as 1000 milliseconds. cluster_id is used to identify which cluster it belongs to, if not set, /sheepdog is used internally as default.

-D, --directio

use direct IO for backend store

-f, --foreground

make the program run in foreground

-g, --gateway

make the program run as a gateway mode

-h, --help

display this help and exit

-i, --ioaddr

use separate network card to handle IO requests (default: disabled)


 $ sheep -i host=,port=7002 ...

This tries to add a dedicated IO NIC of to transfer data. If IO NIC is down, sheep will fallback to non IO NIC to transfer data.

-j, --journal

use journal file to log all the write operations. (default: disabled)

Available arguments:
 size=: size of the journal in megabyes
 dir=: path to the location of the journal (default: $STORE)
 skip: if specified, skip the recovery at startup


 $ sheep -j dir=/journal,size=1G

This tries to use /journal as the journal storage of the size 1G

-l, --log

specify the log level, the log directory and the log format(log level default: 6 [SDOG_INFO])


 $ sheep -l dir=/var/log/,level=debug,format=server ...

Available arguments:
 dir=: path to the location of sheep.log
 level=: log level of sheep.log
 format=: log format type
 dst=: log destination type

if dir is not specified, use metastore directory

Available log levels:
 Level      Description
 emerg      system has failed and is unusable
 alert      action must be taken immediately
 crit       critical conditions
 err        error conditions
 warning    warning conditions
 notice     normal but significant conditions
 info       informational notices
 debug      debugging messages default log level is info

Available log format:
 FormatType      Description
 default         raw format
 server          raw format with timestamp
 json            json format

Available log destination:
 DestinationType    Description
 default            dedicated file in a directory used by sheep
 syslog             syslog of the system
 stdout             standard output

-n, --nosync

drop O_SYNC for write of backend

-p, --port

specify the TCP port on which to listen (default: 7000)

-P, --pidfile

create a pid file

-R, --recovery

specify the recovery speed throttling

Available arguments:
 max=: object recovery process maximum count of each interval
 interval=: object recovery interval time (millisec) Example:

 $ sheep -R max=50,interval=1000 ...

-u, --upgrade

upgrade to the latest data layout

-v, --version

show the version

Sheepdog daemon version 1.0.1

-V, --vnodes

set number of vnodes


 $ sheep -V 128

 set number of vnodes

-w, --wq-threads

specify a number of threads for workqueue

-W, --wildcard-recovery

wildcard recovery for first time

-y, --myaddr

specify the address advertised to other sheep


 $ sheep -y ...

This tries to tell other nodes through what address they can talk to this sheep.

-z, --zone

specify the zone id (default: determined by listen address)


 $ sheep -z 1 ...

This tries to set the zone ID of this sheep to 1 and sheepdog won't store more than one copy of any object into this same zone


Proper LSB systems will store sheepdog files in /var/lib/sheepdog.  The init script uses this directory by default.  The directory must be on a filesystem with xattr support.  In the case of ext3, user_xattr should be added to the mount options.

mount -o remount,user_xattr /var/lib/sheepdog


sheepdog requires QEMU 0.13.z or later and Corosync 1.y.z.


/var/lib/sheepdog - Directory containing block storage information

See Also

dog(8), qemu(1), sheepfs(8), corosync_overview(8)


This software is developed by the sheepdog community which may be reached via mailing list at <>.

Referenced By

dog(8), sheepfs(8).