This bump sheepdog to 0.6, with some changes:

Now, we only 1 daemon to manage multiple disks.

default root directory is :

/var/lib/sheepdog/

This is the default if you don't have dedicated disk.
Both metadatastore and objet store are in the root directory.

If you want to use, 1 or more dedicated disk:

simply create mounts in

/var/lib/sheepdog/disc0
/var/lib/sheepdog/disc1
/var/lib/sheepdog/discN

No more limit in number of disk, and no more need of a startup file tricks.

The metadata-store is always in /var/lib/sheepdog/.  (spof, so you need raid)
But the object-storage are in /var/lib/sheepdog/discN. You can hotplug/unplug 
theses disks, have failures,...

https://github.com/collie/sheepdog/wiki/Multi-disk-on-Single-Node-Support

You can also use a journal on separate disk, like ssd, for fast write.
simply create a mount:

/var/lib/sheepdog/journal

Some tunnables variables in /etc/default/sheepdog:

ROOTDIR=/var/lib/sheepdog/
By example,users can change it to /var/lib/vz/sheepdog  if they want (As this 
is the location where we have the more space by default)

JOURNALSIZE=256
User can tune the journal size, 256M by default

Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 Makefile                                   |    2 +-
 debian/changelog                           |    6 ++++
 debian/patches/simplify-log-rotation.patch |   33 +++++++++++------
 debian/pve-sheepdog.sheepdog.default       |    4 ++-
 debian/pve-sheepdog.sheepdog.init.d        |   53 +++++++++++-----------------
 5 files changed, 53 insertions(+), 45 deletions(-)

diff --git a/Makefile b/Makefile
index f78d485..ffeacc1 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ RELEASE=3.0
 
 PACKAGE=pve-sheepdog
 PKGREL=1
-SDVER=0.5.6
+SDVER=0.6.0
 
 DEB=${PACKAGE}_${SDVER}-${PKGREL}_amd64.deb
 
diff --git a/debian/changelog b/debian/changelog
index 54fa4c1..f750a24 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+pve-sheepdog (0.6.0-1) unstable; urgency=low
+
+  * Bump to sheepdog 0.6.0
+
+ -- Proxmox Support Team <supp...@proxmox.com>  Tue, 5 Jun 2013 16:00:00 +0200
+
 pve-sheepdog (0.5.6-1) unstable; urgency=low
 
   * Bump to sheepdog 0.5.6
diff --git a/debian/patches/simplify-log-rotation.patch 
b/debian/patches/simplify-log-rotation.patch
index 95b04db..5f48319 100644
--- a/debian/patches/simplify-log-rotation.patch
+++ b/debian/patches/simplify-log-rotation.patch
@@ -1,23 +1,30 @@
-simplify logfile rotation
+From fefd0589f89fb3948723f7a5cda7f734d13b30a6 Mon Sep 17 00:00:00 2001
+From: Alexandre Derumier <aderum...@odiso.com>
+Date: Thu, 6 Jun 2013 09:17:02 +0200
+Subject: [PATCH] simplify logfile rotation
 
 we simply rename <logfile> to <logfile>.1. That way we do not need
 any logrotate script. max_logfile is set to 256MB.
 
+Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
+---
+ lib/logger.c |   11 ++---------
+ 1 file changed, 2 insertions(+), 9 deletions(-)
 
-Index: new/lib/logger.c
-===================================================================
---- new.orig/lib/logger.c      2013-02-28 07:15:26.000000000 +0100
-+++ new/lib/logger.c   2013-02-28 07:29:55.000000000 +0100
-@@ -75,7 +75,7 @@
+diff --git a/lib/logger.c b/lib/logger.c
+index ba9f5db..23635c2 100644
+--- a/lib/logger.c
++++ b/lib/logger.c
+@@ -113,7 +113,7 @@ static pid_t logger_pid;
  static key_t semkey;
  static char *log_buff;
  
 -static int64_t max_logsize = 500 * 1024 * 1024;  /*500MB*/
-+static int64_t max_logsize = 256 * 1024 * 1024;  /*500MB*/
++static int64_t max_logsize = 256 * 1024 * 1024;  /*256MB*/
  
  static pthread_mutex_t logsize_lock = PTHREAD_MUTEX_INITIALIZER;
  
-@@ -243,13 +243,7 @@
+@@ -405,14 +405,7 @@ static notrace void rotate_log(void)
  
        if (access(log_nowname, R_OK) == 0) {
                char old_logfile[256];
@@ -25,10 +32,14 @@ Index: new/lib/logger.c
 -              struct tm tm;
 -              time(&t);
 -              localtime_r((const time_t *)&t, &tm);
--              sprintf(old_logfile, "%s.%04d-%02d-%02d-%02d-%02d",
--                              log_nowname, tm.tm_year + 1900, tm.tm_mon + 1,
--                              tm.tm_mday, tm.tm_hour, tm.tm_min);
+-              snprintf(old_logfile, sizeof(old_logfile),
+-                       "%s.%04d-%02d-%02d-%02d-%02d",
+-                       log_nowname, tm.tm_year + 1900, tm.tm_mon + 1,
+-                       tm.tm_mday, tm.tm_hour, tm.tm_min);
 +              sprintf(old_logfile, "%s.1", log_nowname);
                rename(log_nowname, old_logfile);
        }
        new_fd = open(log_nowname, O_RDWR | O_CREAT | O_APPEND, 0644);
+-- 
+1.7.10.4
+
diff --git a/debian/pve-sheepdog.sheepdog.default 
b/debian/pve-sheepdog.sheepdog.default
index c66a001..a4bf78a 100644
--- a/debian/pve-sheepdog.sheepdog.default
+++ b/debian/pve-sheepdog.sheepdog.default
@@ -3,4 +3,6 @@
 
 # start sheepdog at boot [yes|no]
 START=yes
-
+#sheepdog root directory
+ROOTDIR=/var/lib/sheepdog/
+JOURNALSIZE=256
diff --git a/debian/pve-sheepdog.sheepdog.init.d 
b/debian/pve-sheepdog.sheepdog.init.d
index 39aa36a..2de8744 100644
--- a/debian/pve-sheepdog.sheepdog.init.d
+++ b/debian/pve-sheepdog.sheepdog.init.d
@@ -17,15 +17,13 @@ DESC="Sheepdog Server"        # Introduce a short 
description here
 NAME=sheepdog                 # Introduce the short server's name here
 DAEMON=/usr/sbin/sheep        # Introduce the server's location here
 SCRIPTNAME=/etc/init.d/$NAME
+PIDFILE="/var/run/sheep.pid"
 
 # Exit if the package is not installed
 [ -x $DAEMON ] || exit 0
 
-DISKLIST=$(echo /var/lib/sheepdog/disc[0123456789])
-RDISKLIST=
-for dir in ${DISKLIST}; do
-    RDISKLIST="${dir} ${RDISKLIST}"
-done
+ROOTDIR="/var/lib/sheepdog/"
+JOURNALSIZE="256"
 
 # Read configuration variable file if it is present
 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
@@ -47,21 +45,25 @@ do_start()
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
-
-       for dir in ${DISKLIST}; do
-           test -f "${dir}/startup" || continue
-           DAEMON_ARGS=$(head -n1 "${dir}/startup");
-           DISKID=${dir##/var/lib/sheepdog/disc}
-           PIDFILE="$dir/sheep.pid"
-           DAEMON_ARGS="${DAEMON_ARGS} --pidfile ${PIDFILE}"
-           if ! test "$(echo ${DAEMON_ARGS}|grep -c '\-p ')" -eq 1 ; then
-               DAEMON_ARGS="${DAEMON_ARGS} -p $((7000 + ${DISKID}))"
+       ulimit -n 1024000 #avoid check_host_env(395) WARN: Allowed open files 
1024 too small, suggested 1024000 warning message
+       ulimit -c unlimited #avoid check_host_env(404) Allowed core file size 
0, suggested unlimited warning message
+       DAEMON_ARGS="--pidfile ${PIDFILE}"
+       DAEMON_ARGS="${DAEMON_ARGS} $ROOTDIR"
+
+       # /path/to/meta-store,/path/to/disk1{,/path/to/disk2,...}
+       for d in $ROOTDIR/disc*
+       do
+           if [ -d "$d" ]; then
+               DAEMON_ARGS="${DAEMON_ARGS},$d"
            fi
+       done
 
-           status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue
+       if [ -d "$ROOTDIR/journal" ]; then
+               DAEMON_ARGS="${DAEMON_ARGS} -j 
dir=$ROOTDIR/journal,size=$JOURNALSIZE"
 
-           start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec 
$DAEMON -- $DAEMON_ARGS ${dir} || return 2
-       done
+       fi
+        status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue
+        start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec $DAEMON 
-- $DAEMON_ARGS || return 2
 
        return 0
 }
@@ -77,14 +79,7 @@ do_stop()
        #   2 if daemon could not be stopped
        #   other if a failure occurred
 
-       RETVAL=0
-       for dir in ${RDISKLIST}; do
-           test -f "${dir}/startup" || continue
-           PIDFILE="$dir/sheep.pid"
-           start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet 
--pidfile ${PIDFILE} --exec $DAEMON || RETVAL=2
-       done
-
-       return "$RETVAL"
+       start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet 
--pidfile ${PIDFILE} --exec $DAEMON || return 2
 }
 
 case "$1" in
@@ -106,13 +101,7 @@ case "$1" in
        
        ;;
     status)
-       RETVAL=0
-       for dir in ${DISKLIST}; do
-           test -f "${dir}/startup" || continue
-           PIDFILE="$dir/sheep.pid"
-           status_of_proc -p ${PIDFILE} $DAEMON "$NAME ${dir}" || RETVAL=1
-       done
-       exit $RETVAL
+           status_of_proc -p ${PIDFILE} $DAEMON "$NAME ${dir}" || exit 1
        ;;
     restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
-- 
1.7.10.4

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to