Sto sviluppando un appliance basata su un sistema embedded con una CompactFlash. Al fine di evitare problemi con i cicli di lettura e scrittura ho deciso di montare diversi filesystem in ram con tmpfs:
File /etc/fstab :
proc /proc proc defaults 0 0
/dev/sda2 / ext3 noatime,nodiratime,commit=300,errors=remount-ro 0 1
/dev/sda1 /boot ext3 noatime,nodiratime,commit=300 0 2
tmp /tmp tmpfs nosuid,rw,size=8192K 0 0
vartmp /var/tmp tmpfs noexec,nosuid,rw,size=2048K 0 0
varlog /var/log tmpfs noexec,nosuid,rw,size=2048K 0 0
varlock /var/lock tmpfs noexec,nosuid,rw,size=1024K 0 0
varrun /var/run tmpfs noexec,nosuid,rw,size=1024K 0 0
Dopo alcune ore di attività ho notato che la partizione /tmp cresceva in modo non controllato fino a saturare il 100% dello spazio a sua disposizione.
Facendo un banale "df" lo spazio era al 100%, mentre un "du -cs" dava un utilizzo del 2% circa.
Dopo giorni e giorni di sbattimento ho trovato il problema:
Ho eseguito il seguente comando:
lsof |grep /tmp
L'output ha evidenziato dei file nel filesystem /tmp marcati come "deleted" e di dimensioni notevoli.
In pratica se un processo apre un file descriptor e poi elimina il file senza fare un close il file rimane residente anche se non visibile e continua ad impegnare spazio.
In un normale filesystem non si noterebbe date le dimensioni, ma il un tmpfs di 8MB la cosa diventa piuttosto scomoda.
Ho corretto il bug del mio software e adesso è tutto ok :)





