Re: /var/lock jako jakis tmpfs

Bartłomiej Zimoń uzi18 w o2.pl
Pią, 25 Cze 2010, 20:59:34 CEST


Dnia 20 czerwca 2010 22:09 Jacek Konieczny <jajcus w jajcus.net> napisał(a):
> On Sun, Jun 20, 2010 at 05:12:51PM +0200, Bartłomiej Zimoń wrote:
> > Dnia 20 czerwca 2010 13:43 Pawel Kwiatkowski <qwiat w o2.pl> napisał(a):
> > > Dnia 2010-06-18, pią o godzinie 09:05 +0200, Bartłomiej Zimoń pisze:
> > > > Witam!
> > > > Mala propozycja: /var/lock jako tmpfs lub podobny
> > > > Pozdrawiam
> > > 
> > > Zgaduję, że dotyczy to pozostawiania śmieci po przemontowaniu systemu
> > > plików w RO lub po nagłym padzie systemu. Ten sam problem mamy
> > > z /var/run i plikami z PID-ami. Tyle że tam też są rzeczy należące do
> > > pakietów.
> > > 
> > Tez ale glownie chodzi o mozliwosc startu serwisu zanim / filesystem bedzie mial dostep rw
> > Co znaczaco przyspiesza uruchamianie systemu zwlaszcza w systemd.
> 
> I potem będzie debugowanie tysiąca problemów wynikłych z tego, że w imię
> najszybszego uruchomienia serwisy są startowane zanim mają to czego
> potrzebują (u niektórych oczywiście będzie działać u innych nie)… 
>
> No i czy z nowoczesnym initem (a zakładam, że takim systemd jest), który
> wie co w systemie uruchomił, wciąż potrzeba tego /var/lock/subsys/cośtam?
> 

Cos spłodziłem w wolnej chwili, a wynik poniżej
(fragment z systemd wrzuce oddzielnie do svn)
Co o tym sadzicie, moge wrzucac?

Pozdrawiam
Bartłomiej Zimoń

http://starowa.one.pl/~uzi/pld/rc-scripts-tmpfs.patch

Index: rc.sysinit
===================================================================
--- rc.sysinit  (wersja 11564)
+++ rc.sysinit  (kopia robocza)
@@ -117,10 +117,22 @@
 if ! is_yes "$VSERVER" ; then
        # we need /proc mounted before everything
        is_fsmounted proc /proc || mount -n -o gid=17 -t proc /proc /proc
+
+       if is_yes "$SUBSYS_AS_TMPFS" ; then
+               mount -n -o mode=755,nosuid,nodev,noexec -t tmpfs none /var/lock/subsys
+       fi

+       if is_yes "$VAR_RUN_AS_TMPFS" ; then
+               mkdir /tmp/.copy_of_run
+               cp -aRf /var/run/* /tmp/.copy_of_run
+               mount -n -o mode=755,nosuid,nodev,noexec -t tmpfs none /var/run
+               cp -aRf /tmp/.copy_of_run/* /var/run
+               rm -rf /tmp/.copy_of_run
+       fi
+
        # Only read this once.
        cmdline=$(cat /proc/cmdline)
-       if strstr "$cmdline" "pld.no-upstart" ; then
+       if strstr "$cmdline" "pld.no-upstart" || grep -q systemd /proc/1/cmdline 2>/dev/null ; then
                USE_UPSTART="no"
        fi

Index: rc.shutdown
===================================================================
--- rc.shutdown (wersja 11565)
+++ rc.shutdown (kopia robocza)
@@ -110,6 +110,14 @@
                force="-f"
        done

+       if is_yes "$VAR_RUN_AS_TMPFS" ; then
+               mkdir /tmp/.copy_of_run
+               cp -aRf /var/run/* /tmp/.copy_of_run
+               umount /var/run
+               cp -aRf /tmp/.copy_of_run/* /var/run
+               rm -rf /tmp/.copy_of_run
+       fi
+
        run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro /

        if [ -x /sbin/vgchange ]; then



Więcej informacji o liście dyskusyjnej pld-devel-pl