• [^] # Re: tmpfs

    Posté par . En réponse au journal Améliorer vos ordinateurs avec zRam !. Évalué à 1.

    En fait il n’y a quasiment aucun gain de place avec la base de donnée Nepomuk. L’algorithme utilisé dans Zram et celui de Lzop ne doivent pas être identiques, ou alors paramétrés différemment.

    Pour voir quels sont les fichiers à placer en Zram, cela va dépendre de ton usage.

    En attendant, voici un script inspiré de celui de Chimrod. Il est perfectible, mais j’ai l’habitude d’améliorer mes scripts par petits à coups au fil des jours/mois/années...

    Utilisation : faire une sauvegarde.

    Utilisation_bis : faire une sauvegarde.

    Ensuite on peut faire en root

    zram-cache start list
    
    

    list doit être une liste de répertoires, il faut impérativement qu’il y ait le chemin complet, pas de '.', de '..', ni de '~', sinon je ne sais pas comment le script va se comporter.

    Puis faire régulièrement un

    zram-cache sync
    
    

    pour sauvegarder les changements en Zram sur le disque.

    J’ai commenté l’action stop (qui n’est qu’un sync avec 2/3 commandes supplémentaires) parce que ça déconne si des programmes utilisent toujours des fichiers dans les points de montage. Ce qui veut dire qu’il faut redémarrer l’ordi. (et supprimer /tmp/zram.dat) pour le désactiver. On peut ajouter d’autres répertoires après le start initial grâce à add qui s’utilise comme start. Attention toutefois à ne pas ajouter un répertoire déjà présent en Zram et à veiller à avoir l’espace suffisant dans la Zram, en cas de mauvaise manip. le comportement sera indéterminé... et très probablement très plantogène.

    zram-cache, WTFPL, il faut régler la variable ramsize :

    #!/bin/sh
    # 2^32 = 4294967296 = 4 Go
    # 2^31 = 2147483648 = 2 Go
    # 2^30 = 1073741824 = 1 Go
    # 2^29 = 536870912 = .5 Go
    ramsize=2147483648
    # start/sync/add
    action=1ドル
    shift
    case "$action" in
     add)
     if [ ! -f /tmp/zram.dat ]
     then
    echo '/tmp/zram.dat not found, exit'
     exit 1
     fi
     for dir in $*
     do
     if [ -d $dir ]
     then
    echo $dir>>/tmp/zram.dat
     mkdir -p `dirname /mnt/zram/$dir`
     cp -ar $dir /mnt/zram/$dir
     mount -B /mnt/zram/$dir $dir
     fi
     done
     ;;
     start)
     if [ -f /tmp/zram.dat ]
     then 
    echo '/tmp/zram.dat found, exit'
     exit 1
     fi
    modprobe zram
     [ -d /mnt/zram ] || mkdir /mnt/zram
     echo $ramsize > /sys/block/zram0/disksize
     mkfs.ext2 -m0 /dev/zram0 > /dev/null
     mount -t ext2 /dev/zram0 /mnt/zram
     echo -n '' > /tmp/zram.dat
     for dir in $*
     do
     if [ -d $dir ]
     then 
    echo $dir>>/tmp/zram.dat
     mkdir -p `dirname /mnt/zram/$dir`
     cp -ar $dir /mnt/zram/$dir
     mount -B /mnt/zram/$dir $dir
     fi
     done
     ;;
     sync)
    # stop)
     tmpdir=`mktemp -dp /mnt/zram`
     for dir in `cat /tmp/zram.dat`
     do
    mount -B `dirname $dir`/ $tmpdir
     rsync -r --delete /mnt/zram/$dir $tmpdir
     umount $tmpdir
    # umount $dir
     done
    rm -r $tmpdir
    # umount /mnt/zram
    # rmmod zram
     ;;
     *)
     echo "Usage: in2zram (start|sync)"
     exit 1
     ;;
    esac
    exit 0
    
    

    Pour l’instant je ne sais pas moi-même ce que je vais mettre en Zram...