Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] Mettiamo a dieta la cache di portage
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
makoomba
Moderator
Moderator


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Sat Nov 05, 2005 6:46 pm    Post subject: [TIP] Mettiamo a dieta la cache di portage Reply with quote

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
Code:
depmod -a

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
View user's profile Send private message
neryo
Veteran
Veteran


Joined: 09 Oct 2004
Posts: 1292
Location: Ferrara, Italy, Europe

PostPosted: Sun Nov 06, 2005 9:22 am    Post subject: Reply with quote

Bello come tip..ma credo che 86 Mb siano veramente pochi per valerne la pena.. :roll:
_________________
cache: a safe place for hiding or storing things..

D-link DWL-G650 AirPlus
Apache Php Mysql
Back to top
View user's profile Send private message
xchris
Advocate
Advocate


Joined: 10 Jul 2003
Posts: 2824
Location: 45.488291,9.186094

PostPosted: Sun Nov 06, 2005 10:27 am    Post subject: Reply with quote

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
View user's profile Send private message
Sparker
l33t
l33t


Joined: 28 Aug 2003
Posts: 992

PostPosted: Sun Nov 06, 2005 11:00 am    Post subject: Re: [TIP] Mettiamo a dieta la cache di portage Reply with quote

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.
http://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
View user's profile Send private message
makoomba
Moderator
Moderator


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Sun Nov 06, 2005 1:57 pm    Post subject: Re: [TIP] Mettiamo a dieta la cache di portage Reply with quote

Sparker wrote:
Ti consiglio di dare un'occhiata al tip che ho scritto tempo fa, che applica più o meno la tua stessa tecnica a portage.
http://forums.gentoo.org/viewtopic-t-378081-highlight-.html

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
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Fri Dec 16, 2005 9:05 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
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