aboutsummaryrefslogtreecommitdiff
path: root/network/lizardfs
diff options
context:
space:
mode:
authorMarcin Szychowski <szycha@gmail.com>2018-02-27 09:39:29 +0000
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2018-03-03 08:42:07 +0700
commit16e19b7f76eede875e1697468baf618b6ed0b403 (patch)
tree1e662456488bb016a9e93f96982a8dce4dd7dbbc /network/lizardfs
parentda1cfc02cfe67375bc6a10abc55a5030535f0db8 (diff)
network/lizardfs: Added (GPLv3 implementation of GoogleFS).
Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
Diffstat (limited to 'network/lizardfs')
-rw-r--r--network/lizardfs/README55
-rw-r--r--network/lizardfs/doinst.sh31
-rw-r--r--network/lizardfs/lizardfs.SlackBuild149
-rw-r--r--network/lizardfs/lizardfs.info16
-rw-r--r--network/lizardfs/rc.lizardfs-cgiserv.new72
-rw-r--r--network/lizardfs/rc.lizardfs-chunkserver.new76
-rw-r--r--network/lizardfs/rc.lizardfs-master.new70
-rw-r--r--network/lizardfs/rc.lizardfs-metalogger.new70
-rw-r--r--network/lizardfs/rc.lizardfs.new66
-rw-r--r--network/lizardfs/setup.lizardfs-services.new94
-rw-r--r--network/lizardfs/slack-desc19
11 files changed, 718 insertions, 0 deletions
diff --git a/network/lizardfs/README b/network/lizardfs/README
new file mode 100644
index 000000000000..6b6c8d0b1278
--- /dev/null
+++ b/network/lizardfs/README
@@ -0,0 +1,55 @@
+LizardFS is a highly scalable, fault-tolerant, POSIX-compatible, FUSE-based,
+high performance distributed filesystem, licensed under GNU General Public
+License version 3.
+
+LizardFS is an implementation of GoogleFS, and a fork of the earlier project,
+MooseFS. LizardFS supports writable snapshots (instant copies), undeleting
+files, automatic data rebalancing, self-healing, data tiering, periodic data
+patrols and many more.
+
+LizardFS system consists of a master server, one or more metadata logging
+servers (meta loggers), and many chunk servers, that store the data on their
+locally-attached drives. Both meta loggers and chunk servers can be added and
+removed without restarting the master server.
+
+Filesystem metadata is stored on the master server (and constantly replicated
+to meta loggers), whereas filesystem data is divided into chunks and spread as
+files over chunk servers, according to pre-defined 'goals', which can be set
+on file-, directory-, or filesystem level. A goal can be an n-way mirroring
+goal, n+1 xor-ed goal (each chunk divided into n parts and xor-ed to calculate
+one part of redundancy), or more sophisticated, erasure code based n+k
+redundancy, where n parts of each chunk are backed by k parts of redundancy
+data.
+
+A set of administrative commands exists to support querying and setting
+redundancy goals and trash preservation time. LizardFS is admin-friendly since
+any missing chunks can be provided from any sort of backup to any running
+chunk server.
+
+This package contains all binaries needed to run LizardFS system: mfsmaster,
+mfsmetalogger, mfschunkserver, as well as lizardfs-cgiserver (web-based
+monitoring console).
+
+You need an "mfs" user and group prior to building lizardfs. Something like
+this will suffice for most systems:
+ groupadd -g 353 mfs
+ useradd -u 353 -g 353 -d /var/lib/mfs mfs
+Feel free to use a different uid and gid if desired, but 353 is recommended to
+avoid conflicts with other stuff from SlackBuilds.org.
+
+It is also advisable to make name 'mfsmaster' pointing at your Master server
+across your network. It is not strictly required, but it will make things much
+easier. If you are unable to configure your DNS server, adding this line to
+/etc/hosts on each master, metalogger, chunkserver, and client machines will
+do:
+
+a.b.c.d mfsmaster mfsmaster.my-domain.ext
+
+where a.b.c.d is an IP address of your master server.
+
+Then on each node add '/etc/rc.d/rc.lizardfs start' to /etc/rc.d/rc.local (or
+wherever you find appropriate), and use '/etc/rc.d/rc.lizardfs setup' to
+configure which services should run on the server. Since most installations
+consists mostly of chunkservers, rc.lizardfs-chunkserver is marked executable
+by default (but will not run until rc.lizardfs-chunkserver or rc.lizardfs is
+added to rc.local, so no need to worry).
diff --git a/network/lizardfs/doinst.sh b/network/lizardfs/doinst.sh
new file mode 100644
index 000000000000..36cf257bf26f
--- /dev/null
+++ b/network/lizardfs/doinst.sh
@@ -0,0 +1,31 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/mfs/mfschunkserver.cfg.new
+config etc/mfs/mfshdd.cfg.new
+config etc/mfs/mfsmetalogger.cfg.new
+config etc/mfs/mfsmaster.cfg.new
+config etc/mfs/mfsexports.cfg.new
+config etc/mfs/mfstopology.cfg.new
+config etc/mfs/mfsmount.cfg.new
+config etc/mfs/globaliolimits.cfg.new
+config etc/mfs/iolimits.cfg.new
+config etc/mfs/mfsgoals.cfg.new
+
+config etc/rc.d/rc.lizardfs.new
+config etc/rc.d/rc.lizardfs-chunkserver.new
+config etc/rc.d/rc.lizardfs-cgiserv.new
+config etc/rc.d/rc.lizardfs-master.new
+config etc/rc.d/rc.lizardfs-metalogger.new
+
+config var/log/setup/setup.lizardfs-services.new
diff --git a/network/lizardfs/lizardfs.SlackBuild b/network/lizardfs/lizardfs.SlackBuild
new file mode 100644
index 000000000000..a8b291afe2f3
--- /dev/null
+++ b/network/lizardfs/lizardfs.SlackBuild
@@ -0,0 +1,149 @@
+#!/bin/sh
+
+# Slackware build script for LizardFS
+
+# Copyright 2018 Marcin Szychowski <szycha@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=lizardfs
+VERSION=${VERSION:-3.12.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+LIZARDFS_UID=${LIZARDFS_UID:-353}
+LIZARDFS_GID=${LIZARDFS_GID:-353}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+# Bail out if user or group isn't valid on your system
+# For slackbuilds.org, assigned mfs uid/gid are 353/353
+# See http://slackbuilds.org/uid_gid.txt
+if ! getent group mfs 2>&1 > /dev/null; then
+ echo " You must have a mfs group to run this script."
+ echo " # groupadd -g $LIZARDFS_GID mfs"
+ exit 1
+elif ! getent passwd mfs 2>&1 > /dev/null; then
+ echo " You must have a mfs user to run this script."
+ echo " # useradd -u $LIZARDFS_UID -g $LIZARDFS_GID -d /var/lib/pgsql mfs"
+ exit 1
+fi
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+for z in $CWD/*.zip; do
+ unzip $z -d external/
+done
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/ \
+ -DENABLE_DEBIAN_PATHS=YES \
+ -DENABLE_TESTS=NO \
+ -DENABLE_DOCS=YES \
+ -DENABLE_OFFICIAL_BUILD=NO \
+ -DSET_RC_BUILD_NUMBER=NO \
+ -DENABLE_CLIENT_LIB=YES \
+ -DENABLE_NFS_GANESHA=YES \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make install DESTDIR=$PKG
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mv $PKG/usr/share/man $PKG/usr/
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+for d in chunkserver exports goals hdd master metalogger mount topology; do
+ mv $PKG/etc/mfs/mfs$d.cfg.dist $PKG/etc/mfs/mfs$d.cfg.new
+done
+for l in '' global; do
+ mv $PKG/etc/mfs/${l}iolimits.cfg.dist $PKG/etc/mfs/${l}iolimits.cfg.new
+done
+
+mkdir -p $PKG/var/run/mfs $PKG/var/lib/mfs
+chown mfs:mfs $PKG/var/run/mfs $PKG/var/lib/mfs
+
+mkdir -p $PKG/etc/rc.d
+cp -a $CWD/rc.lizardfs-cgiserv.new $CWD/rc.lizardfs-chunkserver.new \
+ $CWD/rc.lizardfs-master.new $CWD/rc.lizardfs-metalogger.new \
+ $CWD/rc.lizardfs.new $PKG/etc/rc.d/
+
+mkdir -p $PKG/var/log/setup
+cp -a $CWD/setup.lizardfs-services.new $PKG/var/log/setup/
+
+chmod +x $PKG/var/log/setup/setup.lizardfs-services.new \
+ $PKG/etc/rc.d/rc.lizardfs-chunkserver.new
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ COPYING INSTALL NEWS README.md UPGRADE ReleaseNotes \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README.SBo
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/network/lizardfs/lizardfs.info b/network/lizardfs/lizardfs.info
new file mode 100644
index 000000000000..a4fe1c0686f2
--- /dev/null
+++ b/network/lizardfs/lizardfs.info
@@ -0,0 +1,16 @@
+PRGNAM="lizardfs"
+VERSION="3.12.0"
+HOMEPAGE="http://lizardfs.org"
+DOWNLOAD="https://github.com/lizardfs/lizardfs/archive/v3.12.0/lizardfs-3.12.0.tar.gz \
+ https://github.com/nfs-ganesha/nfs-ganesha/archive/V2.5-stable/nfs-ganesha-2.5-stable.zip \
+ https://github.com/nfs-ganesha/ntirpc/archive/v1.5/ntirpc-1.5.zip \
+ https://github.com/gabime/spdlog/archive/v0.14.0/spdlog-0.14.0.zip"
+MD5SUM="e584aa9534f900ca04d40a4772e01302 \
+ 2a63aeff51df42fa76e4d40a5672219e \
+ af615a75e656e8cc0b107aee9b2c25ab \
+ f213d83c466aa7044a132e2488d71b11"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Marcin Szychowski"
+EMAIL="szycha@gmail.com"
diff --git a/network/lizardfs/rc.lizardfs-cgiserv.new b/network/lizardfs/rc.lizardfs-cgiserv.new
new file mode 100644
index 000000000000..4ff220f0bd01
--- /dev/null
+++ b/network/lizardfs/rc.lizardfs-cgiserv.new
@@ -0,0 +1,72 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.lizardfs-cgiserv
+#
+# Init file for the LizardFS web console service
+# Adapted for Slackware Linux by Marcin Szychowski <szycha@gmail.com>
+#
+# See mfscgiserv(8) for more information.
+# For general information on LizardFS, see mfs(7) or visit
+# http://lizardfs.org/
+
+# Source function library.
+. /etc/init.d/functions
+
+MFSCGISERV_USER=nobody
+
+RETVAL=0
+prog="lizardfs-cgiserver"
+
+start () {
+ echo -n $"Starting $prog: "
+ /bin/su -s /bin/bash -c "/usr/sbin/$prog > /dev/null 2>&1 &" $MFSCGISERV_USER
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ touch /var/lock/subsys/$prog
+ echo '...done'
+ else
+ echo '...failed!'
+ fi
+ return $RETVAL
+}
+
+stop () {
+ echo -n $"Stopping $prog: "
+ fuser -kn tcp 9425 >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ rm -f /var/lock/subsys/$prog
+ fi
+ echo '...done'
+ return $RETVAL
+}
+
+restart () {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ condrestart)
+ [ -e /var/lock/subsys/$prog ] && restart
+ RETVAL=$?
+ ;;
+ status)
+ status $prog
+ RETVAL=$?
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+ RETVAL=1
+esac
+
+exit $RETVAL
diff --git a/network/lizardfs/rc.lizardfs-chunkserver.new b/network/lizardfs/rc.lizardfs-chunkserver.new
new file mode 100644
index 000000000000..2ec48cc33ceb
--- /dev/null
+++ b/network/lizardfs/rc.lizardfs-chunkserver.new
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.lizardfs-chunkserver
+#
+# Init file for the LizardFS chunkserver service
+# Adapted for Slackware Linux by Marcin Szychowski <szycha@gmail.com>
+#
+# NOTE: This script is executable by default, BUT it will not start
+# unless its' parent script (rc.lizardfs) is enabled first.
+# This is for big sites admin convenience. You are safe with it.
+# See rc.lizardfs and lizardfs(7) for details.
+
+# Source function library.
+. /etc/init.d/functions
+
+RETVAL=0
+prog=mfschunkserver
+
+if [ ! -r "/etc/mfs/mfshdd.cfg" ]; then
+ echo $prog will not run: /etc/mfs/mfshdd.cfg file is missing
+ exit 1
+fi
+
+start () {
+ echo -n $"Starting $prog: "
+ daemon $prog >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ touch /var/lock/subsys/$prog
+ echo '...done'
+ else
+ echo '...failed! (check syslog for details)'
+ fi
+ return $RETVAL
+}
+
+stop () {
+ echo -n $"Stopping $prog: "
+ $prog stop >/dev/null 2>&1 || killproc $prog >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ rm -f /var/lock/subsys/$prog
+ fi
+ echo '...done'
+ return $RETVAL
+}
+
+restart () {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ condrestart)
+ [ -e /var/lock/subsys/$prog ] && restart
+ RETVAL=$?
+ ;;
+ status)
+ status $prog
+ RETVAL=$?
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+ RETVAL=1
+esac
+
+exit $RETVAL
diff --git a/network/lizardfs/rc.lizardfs-master.new b/network/lizardfs/rc.lizardfs-master.new
new file mode 100644
index 000000000000..e3dfba68ead0
--- /dev/null
+++ b/network/lizardfs/rc.lizardfs-master.new
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Init file for the LizardFS master service
+# Adapted for Slackware Linux by Marcin Szychowski <szycha@gmail.com>
+#
+#
+# Source function library.
+. /etc/init.d/functions
+
+RETVAL=0
+prog="mfsmaster"
+
+if [ ! -r "/etc/mfs/mfsexports.cfg" ]; then
+ echo $prog will not run: /etc/mfs/mfsexports.cfg file is missing
+ exit 1
+fi
+
+start () {
+ echo -n $"Starting $prog: "
+ daemon $prog >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ touch /var/lock/subsys/$prog
+ echo '...done'
+ else
+ echo '...failed! (check syslog for details)'
+ fi
+ return $RETVAL
+}
+
+stop () {
+ echo -n $"Stopping $prog: "
+ $prog stop >/dev/null 2>&1 || killproc $prog >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ rm -f /var/lock/subsys/$prog
+ fi
+ echo '...done'
+ return $RETVAL
+}
+
+restart () {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ condrestart)
+ [ -e /var/lock/subsys/$prog ] && restart
+ RETVAL=$?
+ ;;
+ status)
+ status $prog
+ RETVAL=$?
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+ RETVAL=1
+esac
+
+exit $RETVAL
diff --git a/network/lizardfs/rc.lizardfs-metalogger.new b/network/lizardfs/rc.lizardfs-metalogger.new
new file mode 100644
index 000000000000..ade1cad06e3d
--- /dev/null
+++ b/network/lizardfs/rc.lizardfs-metalogger.new
@@ -0,0 +1,70 @@
+#!/bin/bash
+#
+# /etc/rc.d/rc.lizardfs-metalogger
+#
+# Init file for the LizardFS metalogger service
+# Adapted for Slackware Linux by Marcin Szychowski <szycha@gmail.com>
+#
+# See mfsmetalogger(8) for more information.
+# For general information on LizardFS, see /etc/rc.d/rc.lizardfs, lizardfs(7)
+# or visit http://lizardfs.org/
+
+# Source function library.
+. /etc/init.d/functions
+
+RETVAL=0
+prog="mfsmetalogger"
+
+start () {
+ echo -n $"Starting $prog: "
+ daemon $prog >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ touch /var/lock/subsys/$prog
+ echo '...done'
+ else
+ echo '...failed! (check syslog for details)'
+ fi
+ return $RETVAL
+}
+
+stop () {
+ echo -n $"Stopping $prog: "
+ $prog stop >/dev/null 2>&1 || killproc $prog >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ rm -f /var/lock/subsys/$prog
+ fi
+ echo '...done'
+ return $RETVAL
+}
+
+restart () {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ condrestart)
+ [ -e /var/lock/subsys/$prog ] && restart
+ RETVAL=$?
+ ;;
+ status)
+ status $prog
+ RETVAL=$?
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+ RETVAL=1
+esac
+
+exit $RETVAL
diff --git a/network/lizardfs/rc.lizardfs.new b/network/lizardfs/rc.lizardfs.new
new file mode 100644
index 000000000000..fa5b338c78f2
--- /dev/null
+++ b/network/lizardfs/rc.lizardfs.new
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+# Init script file for LizardFS (or MooseFS) system.
+# Written for Slackware Linux by Marcin Szychowski <szycha@gmail.com>
+# This script starts enabled LizardFS services.
+#
+# LizardFS is a distributed, self-healing, self-replicating filesystem,
+# available under GNU GPLv3 License for any FUSE-capable operating system.
+#
+# Typical LizardFS installation consists of one master server, one or
+# more meta-loggers and any number of chunk servers (the more the better).
+# lizardfs Slackware Package contains software to run any of them.
+#
+# Although it is possible to run entire LizardFS system within one host
+# you should not mix their roles across machines in a production
+# environment. Especially you should not run anything along with master
+# server process on the same machine.
+# For more details refer to lizardfs(7) manual page or LizardFS website
+# http://lizardfs.org/
+#
+# Enable this script to start/stop/restart all enabled services in a convenient
+# way rather than run services directly. For your convenience,
+# rc.lizardfs-chunkserver is enabled (executable) by default, since
+# chunkservers are dominant group in average LizardFS installation.
+
+services="master cgiserv metalogger chunkserver"
+
+function everyone() {
+ action="$1"
+
+ if [ "$action" = "stop" ]; then
+ local services="$(echo $services|tr ' ' "\n"|tac)"
+ fi
+
+ for svc in $services; do
+ if [ -x /etc/rc.d/rc.lizardfs-$svc ]; then
+ /etc/rc.d/rc.lizardfs-$svc $action
+ fi
+ done
+}
+
+
+case "$1" in
+ 'start')
+ everyone start
+ ;;
+ 'stop')
+ everyone stop
+ ;;
+ 'restart')
+ everyone stop
+ everyone start
+ ;;
+ 'condrestart')
+ everyone condrestart
+ ;;
+ 'status')
+ everyone status
+ ;;
+ 'setup')
+ /var/log/setup/setup.lizardfs-services
+ ;;
+ *)
+ echo "Usage: $0 {setup|start|stop|restart|reload|condrestart|status}"
+ ;;
+esac
diff --git a/network/lizardfs/setup.lizardfs-services.new b/network/lizardfs/setup.lizardfs-services.new
new file mode 100644
index 000000000000..c9b1e6c2f9af
--- /dev/null
+++ b/network/lizardfs/setup.lizardfs-services.new
@@ -0,0 +1,94 @@
+#!/bin/sh
+#BLURB="Select/deselect LizardFS services"
+#
+# /var/log/setup/setup.lizardfs-services
+#
+# LizardFS configuration script. Lets you choose which of four
+# it's processes will run on this box.
+#
+TMP=/var/log/setup/tmp
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+T_PX="$1"
+cd $T_PX
+rm -f $TMP/tmpscript
+
+cat << EOF > $TMP/tmpscript
+dialog --title "CHOOSE LizardFS SERVICES TO RUN ON THIS BOX" --item-help --checklist \\
+"The selected services will be started by rc.lizardfs init script.\\n\\n
+1. You need exactly ONE master server (run on your best machine)\\n
+2. You should have one, two or more meta loggers\\n
+3. On most machines you will need chunk server process only \\
+(therefore rc.lizardfs-chunkserver is enabled by default.\\n\\n
+Press the ENTER key when you are finished." \\
+19 70 4 \\
+EOF
+
+if [ -r /etc/rc.d/rc.lizardfs-master ]; then
+ if [ -x /etc/rc.d/rc.lizardfs-master ]; then
+ MFS_MASTER=on
+ else
+ MFS_MASTER=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.lizardfs-master" "LizardFS master server" $MFS_MASTER "The Master Server is a central point of LizardFS. You need exactly ONE." \\
+EOF
+fi
+
+if [ -r /etc/rc.d/rc.lizardfs-cgiserv ]; then
+ if [ -x /etc/rc.d/rc.lizardfs-cgiserv ]; then
+ MFS_CGI=on
+ else
+ MFS_CGI=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.lizardfs-cgiserv" "LizardFS Web Console" $MFS_CGI "The CGI server displays information on LizardFS status." \\
+EOF
+fi
+
+if [ -r /etc/rc.d/rc.lizardfs-metalogger ]; then
+ if [ -x /etc/rc.d/rc.lizardfs-metalogger ]; then
+ MFS_METALOGGER=on
+ else
+ MFS_METALOGGER=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.lizardfs-metalogger" "Metalogger process" $MFS_METALOGGER "Metalogger is a backup machine for Master Server. Deploy some in your network." \\
+EOF
+fi
+
+if [ -r /etc/rc.d/rc.lizardfs-chunkserver ]; then
+ if [ -x /etc/rc.d/rc.lizardfs-chunkserver ]; then
+ MFS_CHUNK=on
+ else
+ MFS_CHUNK=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.lizardfs-chunkserver" "Chunk server process" $MFS_CHUNK "The Chunk Server stores actual filesystem data in chunks. All other machines." \\
+EOF
+fi
+
+cat << EOF >> $TMP/tmpscript
+ 2> $TMP/reply
+EOF
+
+. $TMP/tmpscript
+
+if [ ! $? = 0 ]; then
+ rm -f $TMP/reply $TMP/tmpscript
+ exit
+fi
+
+for service in rc.lizardfs-cgiserv rc.lizardfs-chunkserver rc.lizardfs-master rc.lizardfs-metalogger; do
+ if [ -f /etc/rc.d/$service ]; then
+ if grep -w $service $TMP/reply 1> /dev/null ; then
+ chmod 755 /etc/rc.d/$service
+ else
+ chmod 644 /etc/rc.d/$service
+ fi
+ fi
+done
+
+rm -f $TMP/reply $TMP/tmpscript
+
diff --git a/network/lizardfs/slack-desc b/network/lizardfs/slack-desc
new file mode 100644
index 000000000000..9df42c518d71
--- /dev/null
+++ b/network/lizardfs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+lizardfs: lizardfs (GPLv3 implementation of GoogleFS)
+lizardfs:
+lizardfs: GPLv3-licensed implementation of GoogleFS, with snapshots.
+lizardfs:
+lizardfs: LizardFS is FUSE-based, scalable, self-healing, self-replicating
+lizardfs: distributed filesystem that can be deployed on anything. With it's
+lizardfs: torrent-like replication scheme, LizardFS performance grows with the
+lizardfs: number of participating nodes (called chunk nodes). Chunk node can be
+lizardfs: any machine capable of running Linux, *BSD, MacOSX, or Windows.
+lizardfs:
+lizardfs: