diff options
author | Veniamin Gvozdikov <vg@FreeBSD.org> | 2014-01-03 17:49:34 +0000 |
---|---|---|
committer | Veniamin Gvozdikov <vg@FreeBSD.org> | 2014-01-03 17:49:34 +0000 |
commit | 16767a8f6e9dee499e73236ee139e751cf50ce25 (patch) | |
tree | 31c2465428f8ccb105019c6306d9dae990f09b49 /sysutils | |
parent | Add CONFLICTS for incoming net-mgmt/unifi2 (diff) |
Zrep is an enterprise-grade, single-program solution for handling asynchronous,
continuous replication of a zfs filesystem, to another filesystem.
That filesystem can be on another machine, or on the same machine.
It also handles 'failover', as simply as "zrep failover datapool/yourfs".
This will conveniently handle all the details of
- Making 'yourfs' be a data destination, rather than a source
- Making 'yourfs' be read-only
- Making the destination fs be "live", and ready to transfer data to yourfs
WWW: http://www.bolthole.com/solaris/zrep/
PR: ports/184086
Submitted by: Oleg Ginzburg <olevole@olevole.ru>
Notes
Notes:
svn path=/head/; revision=338565
Diffstat (limited to 'sysutils')
-rw-r--r-- | sysutils/Makefile | 1 | ||||
-rw-r--r-- | sysutils/zrep/Makefile | 36 | ||||
-rw-r--r-- | sysutils/zrep/distinfo | 2 | ||||
-rw-r--r-- | sysutils/zrep/files/patch-zrep | 94 | ||||
-rw-r--r-- | sysutils/zrep/pkg-descr | 12 |
5 files changed, 145 insertions, 0 deletions
diff --git a/sysutils/Makefile b/sysutils/Makefile index f34fc3e89074..3e271c229db0 100644 --- a/sysutils/Makefile +++ b/sysutils/Makefile @@ -1069,6 +1069,7 @@ SUBDIR += zidrav SUBDIR += zisofs-tools SUBDIR += zogftw + SUBDIR += zrep SUBDIR += zxfer .include <bsd.port.subdir.mk> diff --git a/sysutils/zrep/Makefile b/sysutils/zrep/Makefile new file mode 100644 index 000000000000..4f5eb0588aca --- /dev/null +++ b/sysutils/zrep/Makefile @@ -0,0 +1,36 @@ +# $FreeBSD$ + +PORTNAME= zrep +PORTVERSION= 1.0.1 +CATEGORIES= sysutils +MASTER_SITES= http://www.bolthole.com/solaris/zrep/ \ + http://www.bsdstore.ru/downloads/ +DISTNAME= ${PORTNAME} +EXTRACT_SUFX= + +MAINTAINER= olevole@olevole.ru +COMMENT= ZFS based replication and failover solution + +RUN_DEPENDS= ksh93:${PORTSDIR}/shells/ksh93 + +PLIST_FILES= bin/zrep + +NO_INSTALL_MANPAGES= yes + +NO_BUILD= yes +NO_INSTALL= yes +NO_EXTRACT= yes + +.include <bsd.port.options.mk> + +post-patch: + @${REINPLACE_CMD} -e 's|#!/bin/ksh -p|#!${PREFIX}/bin/ksh93 -p|' ${WRKSRC}/zrep + +do-extract: + @${MKDIR} ${WRKSRC} + @${CP} -p ${DISTDIR}/${PORTNAME} ${WRKSRC} + +do-install: + ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}/${PREFIX}/bin + +.include <bsd.port.mk> diff --git a/sysutils/zrep/distinfo b/sysutils/zrep/distinfo new file mode 100644 index 000000000000..883f316d43f2 --- /dev/null +++ b/sysutils/zrep/distinfo @@ -0,0 +1,2 @@ +SHA256 (zrep) = 2156852bfe0e9ed3a220cbb459ffb2b423488de023b03f8f9c8e1af876a44b75 +SIZE (zrep) = 45158 diff --git a/sysutils/zrep/files/patch-zrep b/sysutils/zrep/files/patch-zrep new file mode 100644 index 000000000000..608be8ba7d3b --- /dev/null +++ b/sysutils/zrep/files/patch-zrep @@ -0,0 +1,94 @@ +--- zrep.orig 2013-05-13 22:01:15.000000000 +0400 ++++ zrep 2013-11-19 18:37:52.921978370 +0400 +@@ -15,7 +15,6 @@ + ZREP_PATH=${ZREP_PATH:-zrep} #Set to /path/to/zrep, if needed, for remote + #ZREP_CREATE_FLAGS="-o whatever" #Set for extra options on remote zfs create + +- + ######################################################################### + # Everyting else below here, should not be touched. First we have autodetect + # routines, and then internal utilities such as locking functions. +@@ -35,8 +34,8 @@ + + # dump the usage message, and check for capabilities + # make sure we dont spew for non-root, so that "zrep status" works +-case `id` in +- *\(root\)) ++case `whoami` in ++ root) + zrep_checkfile=/var/run/zrep.check.$$ + ;; + *) +@@ -109,7 +108,8 @@ + # Note that we check for "us, OR our global parent", if different + # + zrep_has_global_lock(){ +- lockpid=`ls -l $Z_GLOBAL_LOCKFILE 2>/dev/null |awk -F/ '{print $NF}'` ++ [ ! -f "${Z_GLOBAL_LOCKFILE}" ] && return 1 ++ lockpid=`cat ${Z_GLOBAL_LOCKFILE}` + if [[ "$lockpid" == "" ]] ; then return 1 ; fi + if [[ "$lockpid" != "$Z_GLOBAL_PID" ]] ; then + if [[ "$lockpid" != "$$" ]] ; then +@@ -127,7 +127,10 @@ + zrep_get_global_lock(){ + typeset retry_count=$Z_LOCK_RETRY + +- ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0 ++ if [ ! -f "${Z_GLOBAL_LOCKFILE}" ] ; then ++ echo $Z_GLOBAL_PID > $Z_GLOBAL_LOCKFILE ++ return 0 ++ fi + + # otherwise, deal with fail + # Check for dead old holder first. +@@ -135,7 +138,10 @@ + + while (( retry_count > 0 )); do + sleep 1 +- ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0 ++ if [ ! -f "${Z_GLOBAL_LOCKFILE}" ] ; then ++ echo $Z_GLOBAL_PID > $Z_GLOBAL_LOCKFILE ++ return 0 ++ fi + retry_count=$((retry_count-1)) + done + +@@ -178,7 +184,9 @@ + typeset check=`zrep_fs_lock_pid $1` newcheck + if [[ "$check" != "-" ]] ; then + # validate fs lock before giving up +- ls -d /proc/$check >/dev/null 2>&1 && return 1 ++ if [ "${check}" != "-" ] ; then ++ [ -f "${Z_GLOBAL_LOCKFILE}" ] && return 1 ++ fi + fi + + zrep_get_global_lock || return 1 +@@ -257,8 +265,7 @@ + + zrep_gettimeinseconds(){ + # unfortunately, solaris date doesnt do '%s', so need to use perl +- typeset PATH=$PERL_BIN:$PATH +- perl -e 'print int(time);' ++ date +%s + } + ###### zrep_status + +@@ -713,7 +720,7 @@ + READONLYPROP="-o readonly=on" + else + READONLYPROP="" +- print Ancient local version of ZFS detected. ++# print Ancient local version of ZFS detected. + print Creating destination filesystem as separate step + zrep_ssh $desthost zfs create $ZREP_CREATE_FLAGS -o readonly=on $destfs || zrep_errquit "Cannot create $desthost:$destfs" + fi +@@ -757,7 +764,7 @@ + # Successful initial sync! Woo! okay record that, etc. + # ... after stupid old-zfs-compat junk, that is + if (( ! Z_HAS_X )) ; then +- print Debug: Because you have old zfs support, setting remote properties by hand ++# print Debug: Because you have old zfs support, setting remote properties by hand + zrep_ssh $desthost zfs set readonly=on $destfs || + clearquit Could not set readonly for $desthost:$destfs + diff --git a/sysutils/zrep/pkg-descr b/sysutils/zrep/pkg-descr new file mode 100644 index 000000000000..86a7f87a9434 --- /dev/null +++ b/sysutils/zrep/pkg-descr @@ -0,0 +1,12 @@ +Zrep is an enterprise-grade, single-program solution for handling asynchronous, +continuous replication of a zfs filesystem, to another filesystem. +That filesystem can be on another machine, or on the same machine. + +It also handles 'failover', as simply as "zrep failover datapool/yourfs". +This will conveniently handle all the details of + + - Making 'yourfs' be a data destination, rather than a source + - Making 'yourfs' be read-only + - Making the destination fs be "live", and ready to transfer data to yourfs + +WWW: http://www.bolthole.com/solaris/zrep/ |