View previous topic :: View next topic |
Author |
Message |
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Nov 05, 2005 6:46 pm Post subject: [TIP] Mettiamo a dieta la cache di portage |
|
|
Ispirato dal tip sul portage ristretto di darkimage, mi son detto: perchè non fare lo stesso trattamento alla cache ?
La cache di portage si trova in /var/cache/edb, è utilizzata da emerge e viene rigenerata ogni volta che si fa un sync.
La situazione su una partizione ext3:
Code: | du -sh /var/cache/edb
89M /var/cache/edb |
cosa si può fare a riguardo ?
comprimendo il tutto con squashfs, si ottiene
Code: | ls -lh edb.squashfs
-rwx------ 1 root root 2,4M 5 nov 18:33 edb.squashfs
|
circa 86Mb di spazio risparmiato, bello no ?
dove sta la fregatura ?
squashfs è readonly ma emerge deve poter accedere in scrittura a /var/cache/edb, anche quando si installa e/o aggiorna un singolo pacchetto.
Come risolvere ?
Possiamo utilizzare unionfs
Unionfs può "unificare" più directory, anche su partizioni diverse, e farcele utilizzare come un unico filesystem.
E' possibile fare il merge di rami readonly con rami readwrite, in maniera del tutto trasparente.
L'installazione di squashfs è spiegata in dettaglio nel tip del portage ristretto
Unionfs non è ancora stabile, per cui dobbiamo smascherarlo
Code: | echo "sys-fs/unionfs ~x86" >> /etc/portage/package.keywords
emerge =unionfs-1.0.13
|
ho installato la 1.0.13 perchè la 1.0.14 mi ha dato qualche problema su un sistema hardened; non escludo che possa funzionare tranquillamente su un sistema "normale".
L'ebuild crea un modulo ma prima di poterlo utilizzare, va aggiornato modules.dep
Fatto ?
ok, ora andiamo a creare il fs compresso con squashfs
Code: | cd /var/cache
mksquashfs edb edb.squashfs
|
radiamo al suolo gli 89Mb di cache e creiamo qualche directory che ci servirà per montare squashfs e unionfs
Code: | rm -rf edb/*
cp -a edb edb.sqfs
cp -a edb edb.hdfs
mount -o loop edb.squashfs edb.sqfs
|
a questo punto, squashfs è montato readonly su /var/cache/edb.sqfs mentre /var/cache/edb e /var/cache/edb.hdfs sono vuote.
ora un pò di voodoo con unionfs
Code: | mount -t unionfs -o dirs=/var/cache/edb.hdfs=rw:/var/cache/edb.sqfs=ro unionfs /var/cache/edb |
/var/cache/edb è ora l'unione di due rami: uno readonly ( squashfs su /var/cache/edb.sqfs ), l'altro rw (la directory /var/cache/edb.hdfs)
quando viene aggiornata la cache, unionfs memorizza le modifiche "globali" nel ramo rw.
Non resta che aggiornare fstab così che la struttura venga ricreata al riavvio; si può fare manualmente oppure
Code: | cat /etc/mtab | tail -n2 >> /etc/fstab |
periodicamente, magari una volta a settimana, si può ricostruire il ramo readonly con squashfs e ripulire /var/cache/edb.hdfs
Code: | #!/bin/bash
cache="/var/cache"
mksquashfs $cache/edb $cache/edb.newsquashfs -noappend &>/dev/null
umount $cache/edb
umount $cache/edb.sqfs
mv -f $cache/edb.newsquashfs $cache/edb.squashfs
rm -rf $cache/edb.hdfs/*
mount $cache/edb.sqfs
mount $cache/edb
|
Considerazioni personali
Unionfs è un progetto relativamente giovane, per cui l'inserimento del relativo modulo potrebbe minare la stabilità del kernel: io stesso non lo utilizzerei mai su un server.
Tuttavia, al di là del "proof of concept", su alcuni sistemi in cui i mb scarseggiano, una soluzione del genere potrebbe tornare utile. |
|
Back to top |
|
|
neryo Veteran
Joined: 09 Oct 2004 Posts: 1292 Location: Ferrara, Italy, Europe
|
Posted: Sun Nov 06, 2005 9:22 am Post subject: |
|
|
Bello come tip..ma credo che 86 Mb siano veramente pochi per valerne la pena.. _________________ cache: a safe place for hiding or storing things..
D-link DWL-G650 AirPlus
Apache Php Mysql |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Sun Nov 06, 2005 10:27 am Post subject: |
|
|
bhe dipende dove gira la distro..
in questi giorni c'era il post di chi richiedeva tips per snellire al massimo Gentoo per ficcarla in 1 GB.
Questa e' una buona idea..
compliments.. _________________ while True:Gentoo() |
|
Back to top |
|
|
Sparker l33t
Joined: 28 Aug 2003 Posts: 992
|
Posted: Sun Nov 06, 2005 11:00 am Post subject: Re: [TIP] Mettiamo a dieta la cache di portage |
|
|
makoomba wrote: | Ispirato dal tip sul portage ristretto di darkimage, mi son detto: perchè non fare lo stesso trattamento alla cache ? |
Ti consiglio di dare un'occhiata al tip che ho scritto tempo fa, che applica più o meno la tua stessa tecnica a portage.
https://forums.gentoo.org/viewtopic-t-378081-highlight-.html
In particolare, potrebbe interessarti l'uso di tmpfs e la possibilità di ricreare automaticamente ad ogni sync lo snapshot squashfs.
(sul mio AthlonXP2600 i ritardi per riscrere lo snapshot di portage sono pressochè trascurabili) |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sun Nov 06, 2005 1:57 pm Post subject: Re: [TIP] Mettiamo a dieta la cache di portage |
|
|
ecco dov'era: ricordavo di averlo letto, ma non sono riuscito a beccarlo con il search.
A tmpfs ci avevo pensato ma, sfortunatamente, l'accesso in scrittura a /var/cache/edb non può essere ristretto alla sola fase di sync.
emerge, infatti, modifica i files mtimedb e counter anche quando si installa/rimuove/aggiorna software
L'utilizzo della ram complicherebbe la gestione della cache, senza apportare un reale vantaggio prestazionale. |
|
Back to top |
|
|
Dr.Dran l33t
Joined: 08 Oct 2004 Posts: 766 Location: Imola - Italy
|
Posted: Fri Dec 16, 2005 9:05 pm Post subject: |
|
|
Molto belli questi Tips.... eh eh eh si potrebbe scrivere una guida per implementare un bel sistemino ottimizzato per portatili (spazio ristretto... connessione non sempre disponibile) riunendo la tip di per il download con axel, la tip per ridurre il portage, e inoltre anche quella per utilizzare cdb e anche infine quella per compilare con tmpfs... insomma facciamo un bel guidone per gli utenti mobili e desktop sulla gestione estrema e sicura di portage?
Che ne dite? _________________ :: [Dr.Dran] Details ::
- Linux User # 286282
- IT FreeLance Consultant
- President of ImoLUG [Imola & Faenza Linux User Group] |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|