# [gelöst] /var/ auf NFS

## Gunter

Hallo!

Das Root Filesys meines HTPCs liegt auf einer CF-Karte, um die Kiste so leise wie möglich zu halten. Leider vertragen CF Karten ja nicht allzuviele Schreibzugriffe, desshalb möchte ich /var via NFS einklinken. Leider ist das nicht so einfach, weil /var schon benutzt wird, bevor das Netz hochgefahren wird.

Hat hier jemand eine Idee? Ich möchte möglichst wenig am standard Gentoo System (init skripte & so) ändern, damit ich das Gentoo später ohne große Kunststücke aktuell halten kann.

Grüße,

GunterLast edited by Gunter on Sat May 10, 2008 1:07 pm; edited 1 time in total

----------

## AmonAmarth

wenn du genügend arbeitsspeicher zur verfügung hast kannst du var (oder auch noch mehr) auch auf eine ram disk legen. das schont deine flash karte merklich. irgendwo gab es auch mal ein howto wie man das am besten macht, finds aber gerade nciht auf anhieb, aber google ist dein freund denk ich.

mfg

----------

## Max Steel

Ein initskript:

```
#! /bin/runscript

depend () {

before localmount

need checkroot net.lo net.eth0

}

start () {

mount -t nfs host:/var/ /netvar/

cp -r /var/* /netvar/

mount --bind /netvar/ /var

}

stop () {

umount --bind /var

umount /netvar/

}
```

Oder die Variante für tmpfs auf dem RAM

```
#! /bin/runscript

depend () {

before localmount

need checkroot net.lo net.eth0

}

start () {

mount -t tmpfs /tmpvar/

cp -r /var/* /tmpvar/

mount --bind /tmpvar/ /var

}

stop () {

umount --bind /var

umount /tmpvar/

}
```

Und dann noch hoffen das net.eth0 nicht zuviele Abhängigkeiten hinterherzieht.

----------

## Necoro

/var in eine ramdisk zu packen ist glaube ich nicht so die sinnvollste lösung...

unter anderem liegt dort die vdb, die alle portage-informationen über installierte pakete enthält ... außerdem noch die world-datei und einige andere tolle sachen (zB alles was init skripte angeht)

daher ist es denke ich auch eine denkbar schlechte idee, das nachträglich mit einem mount zu "überschreiben" ... da wird sich dein system nämlich nicht gerade freuen und der init-vorgang wird sich wohl verabschieden

----------

## Gunter

Danke @Max Steel für die Vorlage. Habe sie etwas angepasst.

Habe es seit einiger Zeit in dieser dieser Form am Laufen und es funzt prima:

```

#! /sbin/runscript

depend () {

    need nfsmount checkroot net.lo net.eth0

}

start () {

        ebegin "Mounting netvar"

    mount -t nfs netstore:/storage/ono-sendai/var/ /mnt/netvar/

    if [ ! -d /mnt/netvar/tmp ]

        then mkdir /mnt/netvar/tmp

    fi

    mount -t tmpfs tmpfs /mnt/netvar/tmp

    if [ ! -d /mnt/netvar/lock ]

        then mkdir /mnt/netvar/lock

    fi

    mount -t tmpfs tmpfs /mnt/netvar/lock

    if [ ! -d /mnt/netvar/run ]

        then mkdir /mnt/netvar/run

    fi

    mount -t tmpfs tmpfs /mnt/netvar/run

    rsync -aH --progress /var/* /mnt/netvar/

    mount --bind /mnt/netvar/ /var

        eend $?

}

stop () {

    ebegin "Unmounting netvar"

    umount /var || (

        mkdir /tmp/netvar_root

        mount --bind / /tmp/netvar_root

        mount --bind /tmp/netvar_root/var /var

    )

    rsync -aH --exclude=/var/tmp/* --progress /mnt/netvar/* /var/

    rm -r /mnt/netvar/tmp/*

    umount /mnt/netvar/tmp

    umount /mnt/netvar/lock

    umount /mnt/netvar/run

    umount /mnt/netvar

        eend $?

}

```

ebegin/eend sind nur Fake hier und werten nicht wirklich was aus, es sieht so aber schöner aus. :-) Beim Runterfahren wird der aktuelle Inhalt nach /var zurückgeschrieben; wenn man nicht allzuoft neu bootet, ist das imho für CF ok.

/var/tmp in tmpfs bringt einen merklichen Geschwindigkeitsboost bein emergen, macht aber evtl Probleme beim Installieren von wirklich großen Paketen -- z.B. Doom3 ;-).

Wenn beim Shutdown ein Unmounten nicht klappt - z.B. weil noch Dateien unter /var offne sind - wird das orig. /var nochmal drübergemountet, damit geänderte Daten zurückgeschrieben werden können.

----------

