]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
Remove ramdisks for RRD databases
authorAlexander Marx <alexander.marx@ipfire.org>
Thu, 3 Dec 2015 13:14:23 +0000 (13:14 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 3 Dec 2015 13:14:23 +0000 (13:14 +0000)
Ramdisks are very limited in space and as new graphs
are generated for OpenVPN N2N connections, etc. more
space is necessary.

This patch will enable ramdisks for all systems with more
than 490M of memory and allows the user to force using
a ramdisk on systems with less memory.

Signed-off-by: Alexander Marx <alexander.marx@ipfire.org>
Acked-by: Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/rootfiles/common/armv5tel/initscripts
config/rootfiles/common/i586/initscripts
config/rootfiles/common/stage2
lfs/initscripts
lfs/vnstat
src/initscripts/init.d/cleanfs
src/initscripts/init.d/collectd
src/initscripts/init.d/functions
src/initscripts/init.d/tmpfs [deleted file]
src/initscripts/init.d/vnstat [new file with mode: 0755]

index a174c5b45051ad7acbf601032937aed8b5dff949..e37a905c3ca6fdd869e2e345b24c6c9bc740a4f5 100644 (file)
@@ -125,12 +125,13 @@ etc/rc.d/init.d/sysctl
 etc/rc.d/init.d/sysklogd
 etc/rc.d/init.d/template
 #etc/rc.d/init.d/tftpd
-etc/rc.d/init.d/tmpfs
+#etc/rc.d/init.d/tmpfs
 #etc/rc.d/init.d/tor
 etc/rc.d/init.d/udev
 etc/rc.d/init.d/udev_retry
 etc/rc.d/init.d/upnpd
 #etc/rc.d/init.d/vdr
+etc/rc.d/init.d/vnstat
 #etc/rc.d/init.d/vdradmin
 #etc/rc.d/init.d/vsftpd
 #etc/rc.d/init.d/watchdog
@@ -149,13 +150,14 @@ etc/rc.d/rc0.d/K30sshd
 etc/rc.d/rc0.d/K45random
 etc/rc.d/rc0.d/K47setclock
 etc/rc.d/rc0.d/K49cyrus-sasl
+etc/rc.d/rc0.d/K51vnstat
 etc/rc.d/rc0.d/K78snort
 etc/rc.d/rc0.d/K79leds
 etc/rc.d/rc0.d/K80network
 etc/rc.d/rc0.d/K82wlanclient
 #etc/rc.d/rc0.d/K84bluetooth
 #etc/rc.d/rc0.d/K85messagebus
-etc/rc.d/rc0.d/K85tmpfs
+#etc/rc.d/rc0.d/K85tmpfs
 etc/rc.d/rc0.d/K90sysklogd
 etc/rc.d/rc0.d/S60sendsignals
 etc/rc.d/rc0.d/S70localnet
@@ -163,7 +165,8 @@ etc/rc.d/rc0.d/S80mountfs
 etc/rc.d/rc0.d/S90swap
 etc/rc.d/rc0.d/S99halt
 #etc/rc.d/rc3.d
-etc/rc.d/rc3.d/S01tmpfs
+#etc/rc.d/rc3.d/S01tmpfs
+etc/rc.d/rc3.d/S01vnstat
 etc/rc.d/rc3.d/S10sysklogd
 #etc/rc.d/rc3.d/S15messagebus
 #etc/rc.d/rc3.d/S16bluetooth
@@ -197,13 +200,14 @@ etc/rc.d/rc6.d/K30sshd
 etc/rc.d/rc6.d/K45random
 etc/rc.d/rc6.d/K47setclock
 etc/rc.d/rc6.d/K49cyrus-sasl
+etc/rc.d/rc6.d/K51vnstat
 etc/rc.d/rc6.d/K78snort
 etc/rc.d/rc6.d/K79leds
 etc/rc.d/rc6.d/K80network
 etc/rc.d/rc6.d/K82wlanclient
 #etc/rc.d/rc6.d/K84bluetooth
 #etc/rc.d/rc6.d/K85messagebus
-etc/rc.d/rc6.d/K85tmpfs
+#etc/rc.d/rc6.d/K85tmpfs
 etc/rc.d/rc6.d/K90sysklogd
 etc/rc.d/rc6.d/S60sendsignals
 etc/rc.d/rc6.d/S70mountfs
index 84c432a055303b881dc24f642ea39f372ccf16ba..d5c8f1d4b06b638900b1df2a997611b42b93302d 100644 (file)
@@ -126,13 +126,14 @@ etc/rc.d/init.d/sysctl
 etc/rc.d/init.d/sysklogd
 etc/rc.d/init.d/template
 #etc/rc.d/init.d/tftpd
-etc/rc.d/init.d/tmpfs
+#etc/rc.d/init.d/tmpfs
 #etc/rc.d/init.d/tor
 #etc/rc.d/init.d/transmission
 etc/rc.d/init.d/udev
 etc/rc.d/init.d/udev_retry
 etc/rc.d/init.d/upnpd
 #etc/rc.d/init.d/vdr
+etc/rc.d/init.d/vnstat
 #etc/rc.d/init.d/vdradmin
 #etc/rc.d/init.d/vsftpd
 #etc/rc.d/init.d/watchdog
@@ -151,13 +152,14 @@ etc/rc.d/rc0.d/K30sshd
 etc/rc.d/rc0.d/K45random
 etc/rc.d/rc0.d/K47setclock
 etc/rc.d/rc0.d/K49cyrus-sasl
+etc/rc.d/rc0.d/K51vnstat
 etc/rc.d/rc0.d/K78snort
 etc/rc.d/rc0.d/K79leds
 etc/rc.d/rc0.d/K80network
 etc/rc.d/rc0.d/K82wlanclient
 #etc/rc.d/rc0.d/K84bluetooth
 #etc/rc.d/rc0.d/K85messagebus
-etc/rc.d/rc0.d/K85tmpfs
+#etc/rc.d/rc0.d/K85tmpfs
 etc/rc.d/rc0.d/K87acpid
 etc/rc.d/rc0.d/K90sysklogd
 etc/rc.d/rc0.d/S60sendsignals
@@ -166,7 +168,8 @@ etc/rc.d/rc0.d/S80mountfs
 etc/rc.d/rc0.d/S90swap
 etc/rc.d/rc0.d/S99halt
 #etc/rc.d/rc3.d
-etc/rc.d/rc3.d/S01tmpfs
+#etc/rc.d/rc3.d/S01tmpfs
+etc/rc.d/rc3.d/S01vnstat
 etc/rc.d/rc3.d/S10sysklogd
 etc/rc.d/rc3.d/S12acpid
 #etc/rc.d/rc3.d/S15messagebus
@@ -201,13 +204,14 @@ etc/rc.d/rc6.d/K30sshd
 etc/rc.d/rc6.d/K45random
 etc/rc.d/rc6.d/K47setclock
 etc/rc.d/rc6.d/K49cyrus-sasl
+etc/rc.d/rc6.d/K51vnstat
 etc/rc.d/rc6.d/K78snort
 etc/rc.d/rc6.d/K79leds
 etc/rc.d/rc6.d/K80network
 etc/rc.d/rc6.d/K82wlanclient
 #etc/rc.d/rc6.d/K84bluetooth
 #etc/rc.d/rc6.d/K85messagebus
-etc/rc.d/rc6.d/K85tmpfs
+#etc/rc.d/rc6.d/K85tmpfs
 etc/rc.d/rc6.d/K87acpid
 etc/rc.d/rc6.d/K90sysklogd
 etc/rc.d/rc6.d/S60sendsignals
index 4021cafad68643d9ea6bf089d0d7e1452e622cb2..5b763fd874749b6f5c04e57f5f1b59d1cc8f3ad3 100644 (file)
@@ -40,6 +40,7 @@ etc/profile.d/term256.sh
 etc/profile.d/umask.sh
 etc/resolv.conf
 etc/securetty
+etc/sysconfig/ramdisk
 etc/sysctl.conf
 etc/syslog.conf
 etc/system-release
index 141fd66d8dd2caf9bd81b82a7397e0adcdb605b1..c4e3492215c51ea05541634d53bb260bb9d9c57c 100755 (executable)
@@ -61,6 +61,9 @@ $(TARGET) :
        -rm -rf /etc/init.d
        ln -svf rc.d/init.d /etc/init.d
 
+       #create ramdiskfile to force ramdiskcreation if FORCE=1
+       echo "FORCE=0" > /etc/sysconfig/ramdisk
+
        for i in $(DIR_SRC)/src/initscripts/init.d/*; do \
                install -v -m 754 $$i /etc/rc.d/init.d/; \
        done
@@ -128,9 +131,6 @@ $(TARGET) :
        ln -sf ../init.d/random      /etc/rc.d/rc3.d/S25random
        ln -sf ../init.d/random      /etc/rc.d/rc6.d/K45random
        ln -sf ../../sysconfig/rc.local /etc/rc.d/rc3.d/S98rc.local
-       ln -sf ../init.d/tmpfs       /etc/rc.d/rc0.d/K85tmpfs
-       ln -sf ../init.d/tmpfs       /etc/rc.d/rc3.d/S01tmpfs
-       ln -sf ../init.d/tmpfs       /etc/rc.d/rc6.d/K85tmpfs
        ln -sf ../init.d/mediatomb   /etc/rc.d/rc3.d/S98mediatomb
        ln -sf ../init.d/mediatomb   /etc/rc.d/rc0.d/K02mediatomb
        ln -sf ../init.d/mediatomb   /etc/rc.d/rc6.d/K02mediatomb
@@ -178,6 +178,9 @@ $(TARGET) :
        ln -sf ../init.d/firewall    /etc/rc.d/rcsysinit.d/S85firewall
        ln -sf ../init.d/network-trigger /etc/rc.d/rcsysinit.d/S90network-trigger
        ln -sf ../init.d/rngd        /etc/rc.d/rcsysinit.d/S92rngd
+       ln -sf ../init.d/vnstat      /etc/rc.d/rc3.d/S01vnstat
+       ln -sf ../init.d/vnstat      /etc/rc.d/rc0.d/K51vnstat
+       ln -sf ../init.d/vnstat      /etc/rc.d/rc6.d/K51vnstat
        ln -sf ../init.d/wlanclient  /etc/rc.d/rc0.d/K82wlanclient
        ln -sf ../init.d/wlanclient  /etc/rc.d/rc3.d/S19wlanclient
        ln -sf ../init.d/wlanclient  /etc/rc.d/rc6.d/K82wlanclient
index b8c8b2759fa30433100304611ec58f6512a2a0dd..1c1333b536edc1ba35b3af0761028d987b37a92d 100644 (file)
@@ -76,6 +76,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && make all $(MAKETUNING)                                                                         LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
        cd $(DIR_APP) && make install
        sed -i 's|eth0|green0|g' /etc/vnstat.conf
-       sed -i 's|/var/lib/vnstat|/var/log/rrd/vnstat|g' /etc/vnstat.conf
+       sed -i 's|/var/lib/vnstat|/var/log/vnstat|g' /etc/vnstat.conf
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index e8c8c8bb0869a0f646ec1050f8408d450703cbea..2d5778df938102b0381fa63e6a1d9e1ddec34fec 100644 (file)
@@ -77,7 +77,36 @@ case "${1}" in
                        rm -rf /var/run
                        ln -s ../run /var/run
                fi
-
+               #
+               # create some folders
+               #
+               if [ ! -e /var/lock/subsys ]; then
+                       mkdir -p /var/lock/subsys
+               fi
+               if [ ! -e /var/lock/time ]; then
+                       mkdir -p /var/lock/time
+                       chown nobody.root /var/lock/time
+               fi
+               if [ ! -e /var/run/clamav ]; then
+                       mkdir -p /var/run/clamav
+                       chown clamav:clamav /var/run/clamav
+               fi
+               if [ ! -e /var/run/cups ]; then
+                       mkdir -p /var/run/cups
+               fi
+               if [ ! -e /var/run/dbus ]; then
+                       mkdir -p /var/run/dbus
+               fi
+               if [ ! -e /var/run/mysql ]; then
+                       mkdir -p /var/run/mysql
+                       chown mysql:mysql /var/run/mysql
+               fi
+               if [ ! -e /var/run/saslauthd ]; then
+                       mkdir -p /var/run/saslauthd
+               fi
+               if [ ! -e /var/log/vnstat ]; then
+                       mkdir -p /var/log/vnstat
+               fi
                boot_mesg -n "Cleaning file systems:" ${INFO}
 
                boot_mesg -n " /tmp" ${NORMAL}
index 96bd12676cec3e0aed41344556a4249bdd720e91..69dc94c6faa966674bc518be9b0ef1a9b0c04c34 100644 (file)
@@ -6,6 +6,7 @@
 . $rc_functions
 
 eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
+eval $(/usr/local/bin/readhash /etc/sysconfig/ramdisk)
 
 if [ "$RRDLOG" = '' ]; then
        RRDLOG=/var/log/rrd
@@ -13,6 +14,35 @@ fi
 
 case "$1" in
        start)
+               if [ "$FORCE" == '1' ] || [ "$(mem_amount)" -gt "490" ];then
+                       #mount ramdisk
+                       if ! mountpoint $RRDLOG &>/dev/null; then
+                               boot_mesg "Mount rrd Ramdisk..."
+                               if [ $(find "$RRDLOG" | wc -l) -ne 1 ]; then
+                                       backup_ramdisk "$RRDLOG"
+                               fi
+                               mount_ramdisk "$RRDLOG"
+                               evaluate_retval
+                               #cleanup cron
+                               if [ -e $RRDLOG.bak/cron/new.root ]; then
+                                       if [ -e $RRDLOG.bak/cron/root ]; then
+                                               rm -f $RRDLOG.bak/cron/new.root
+                                       fi
+                               fi
+                               #restore old values to ramdisk if exist
+                               restore_ramdisk "$RRDLOG"
+                       fi
+               else
+                       restore_ramdisk "$RRDLOG"
+               fi
+                       #
+                       # Move /var/spool/cron to ramdisk and make a symlink
+                       #
+                       if [ ! -L /var/spool/cron ]; then
+                               mv /var/spool/cron /var/log/rrd/cron
+                               ln -s /var/log/rrd/cron /var/spool/cron
+                       fi
+
                # If run from init and collectd alrady started then exit silent
                if [ "$(basename $0)" != "collectd" ]; then
                        if [ "$(ps -A | grep " collectd$")" != "" ]; then
@@ -106,10 +136,8 @@ case "$1" in
                boot_mesg "Stopping Collection daemon..."
                killproc /usr/sbin/collectd
                evaluate_retval
-               # Save the ramdisk at manual stop but not at shutdown
-               if [ "$(basename $0)" == "collectd" ]; then
-                   /etc/init.d/tmpfs backup
-               fi
+               backup_ramdisk "$RRDLOG"
+               umount_ramdisk "$RRDLOG"
                # sync after backup...
                sync
                ;;
index e2e058d38b9d081aea1519d91e8a3832a4b9b02c..ec3e512ec74434e60a6768f8511201101567f4d1 100644 (file)
@@ -702,4 +702,35 @@ run_subdir() {
        done
 }
 
+mem_amount() {
+        local pagesize="$(getconf PAGESIZE)"
+        local pages="$(getconf _PHYS_PAGES)"
+
+        echo "$(( ${pagesize} * ${pages} / 1024 / 1024 ))"
+}
+
+mount_ramdisk() {
+       mount -t tmpfs none $1
+}
+
+umount_ramdisk() {
+       if mountpoint $1 &>/dev/null; then
+                       umount $1
+       fi
+}
+
+backup_ramdisk() {
+               if [ ! -e $1.bak ]; then
+                       mkdir -p $1.bak
+               fi
+               cp -pR $1/* $1.bak/
+               rm -rf $1/*
+}
+
+restore_ramdisk() {
+       if [ -e $1.bak ];then
+               cp -pR $1.bak/* $1/
+               rm -rf $1.bak/*
+       fi
+}
 # End $rc_base/init.d/functions
diff --git a/src/initscripts/init.d/tmpfs b/src/initscripts/init.d/tmpfs
deleted file mode 100644 (file)
index 2ee2ffb..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/sh
-# Begin $rc_base/init.d/tmpfs
-
-. /etc/sysconfig/rc
-. $rc_functions
-
-eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
-
-if [ "$RRDLOG" = '' ]; then
-       RRDLOG=/var/log/rrd
-fi
-
-case "$1" in
-       start)
-               $0 restore
-               if [ ! -e $RRDLOG.bak/vnstat ]; then
-                       mkdir -p $RRDLOG.bak/vnstat
-               fi
-               if [ ! -e $RRDLOG/vnstat ]; then
-                       mkdir -p $RRDLOG/vnstat
-               fi
-               #
-               # create some folders
-               #
-               if [ ! -e /var/lock/subsys ]; then
-                       mkdir -p /var/lock/subsys
-               fi
-               if [ ! -e /var/lock/time ]; then
-                       mkdir -p /var/lock/time
-                       chown nobody.root /var/lock/time
-               fi
-               if [ ! -e /var/run/clamav ]; then
-                       mkdir -p /var/run/clamav
-                       chown clamav:clamav /var/run/clamav
-               fi
-               if [ ! -e /var/run/cups ]; then
-                       mkdir -p /var/run/cups
-               fi
-               if [ ! -e /var/run/dbus ]; then
-                       mkdir -p /var/run/dbus
-               fi
-               if [ ! -e /var/run/mysql ]; then
-                       mkdir -p /var/run/mysql
-                       chown mysql:mysql /var/run/mysql
-               fi
-               if [ ! -e /var/run/saslauthd ]; then
-                       mkdir -p /var/run/saslauthd
-               fi
-
-               #
-               # Move /var/spool/cron to ramdisk and make a symlink
-               #
-               if [ ! -L /var/spool/cron ]; then
-                       cp -pR /var/spool/cron /var/log/rrd.bak/cron
-                       mv /var/spool/cron /var/log/rrd/cron
-                       ln -s /var/log/rrd/cron /var/spool/cron
-               fi
-
-               echo_ok
-               ;;
-       stop)
-               $0 backup
-               ;;
-
-       backup)
-               boot_mesg "Save ramdisk..."
-               cp -pR $RRDLOG/* $RRDLOG.bak/
-               evaluate_retval
-               ;;
-       restore)
-               if ! mountpoint $RRDLOG &>/dev/null; then
-                       mount -t tmpfs -o size=64M none "$RRDLOG"
-               fi
-
-               if [ -e $RRDLOG.bak/cron/new.root ]; then
-                       if [ -e $RRDLOG.bak/cron/root ]; then
-                               rm -f $RRDLOG.bak/cron/new.root
-                       fi
-               fi
-               if [ -e $RRDLOG.bak ];then
-                       boot_mesg "Restore ramdisk..."
-                       cp -pR $RRDLOG.bak/* $RRDLOG/
-               fi
-               ;;
-
-
-       *)
-               echo "Usage: $0 {start|stop|backup}"
-               exit 1
-               ;;
-esac
-
-# End $rc_base/init.d/tmpfs
diff --git a/src/initscripts/init.d/vnstat b/src/initscripts/init.d/vnstat
new file mode 100755 (executable)
index 0000000..2e4a878
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+# Begin $rc_base/init.d/vnstat
+
+. /etc/sysconfig/rc
+. $rc_functions
+
+eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
+
+if [ "$VNSTATLOG" = '' ]; then
+       VNSTATLOG=/var/log/vnstat
+fi
+
+case "$1" in
+       start)
+               if [ "$FORCE" == '1' ] || [ "$(mem_amount)" -gt "490" ];then
+                       if ! mountpoint $VNSTATLOG &>/dev/null; then
+                               boot_mesg "Mount vnstat ramdisk..."
+                               if [ $(find "$VNSTATLOG" | wc -l) -ne 1 ]; then
+                                       backup_ramdisk "$VNSTATLOG"
+                               fi
+                               mount_ramdisk "$VNSTATLOG"
+                               evaluate_retval
+                               $0 restore
+                       fi
+               else
+                       restore_ramdisk "$VNSTATLOG"
+               fi
+               ;;
+       stop)
+               $0 backup
+               umount_ramdisk "$VNSTATLOG"
+               ;;
+       backup)
+               backup_ramdisk "$VNSTATLOG"
+               ;;
+       restore)
+               restore_ramdisk "$VNSTATLOG"
+               ;;
+       *)
+               echo "Usage: $0 {start|stop|backup}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/vnstat