Geht Ihnen der Arbeitsspeicher oder der Speicherplatz auf der Festplatte aus?

Geht Ihnen der Arbeitsspeicher oder der Speicherplatz auf der Festplatte aus?

Ich führe einen Datenbank-Ladevorgang (osm2pgsql) aus, der fehlschlägt:

Processing: Node(17404k 148.8k/s) Way(1351k 6.38k/s) Relation(9520 29.94/s)way_done failed: ERROR:  could not extend file "base/140667/152463": No space left on device
HINT:  Check free disk space.
(7)
Arguments were: 187226311, 

Zu Beginn des Imports memwerden folgende Meldungen ausgegeben:

             total       used       free     shared    buffers     cached
Mem:           31G        29G       2.4G         0B       178M        24G
-/+ buffers/cache:       4.5G        26G
Swap:           0B         0B         0B

Kurz vor Schluss:

             total       used       free     shared    buffers     cached
Mem:           31G        31G       227M         0B       178M        26G
-/+ buffers/cache:       4.8G        26G
Swap:           0B         0B         0B

Unterdessen dfam Anfang:

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/vda1       10309828   7879412   1997036  80% /
udev            16470572        12  16470560   1% /dev
tmpfs            6590080       260   6589820   1% /run
none                5120         0      5120   0% /run/lock
none            16475196         0  16475196   0% /run/shm
none              102400         0    102400   0% /run/user
/dev/vdb       247709760 105978300 129148548  46% /mnt

Und ab etwa 3/4 des Prozesses liegt die Nutzung bei 100 %.

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/vda1       10309828   9854348     22100 100% /
udev            16470572        12  16470560   1% /dev
tmpfs            6590080       260   6589820   1% /run
none                5120         0      5120   0% /run/lock
none            16475196         0  16475196   0% /run/shm
none              102400         0    102400   0% /run/user
/dev/vdb       247709760 105978300 129148548  46% /mnt

Ich kann keine tatsächlichen Dateien auf der Festplatte identifizieren, die /dev/vda1 füllen:

du -h -d 3 / 2>/dev/null | grep -v ^0 > /tmp/o2p1.txt
[start import]
du -h -d 3 / 2>/dev/null | grep -v ^0 > /tmp/o2p2.txt

diff /tmp/o2p1.txt /tmp/o2p2.txt

Das verrät nichts.

Was ist los?

Antwort1

Ok, es war einfach. Die Postgres-Datenbank befand sich auf /dev/vda1 und wurde immer größer. Sie wurde im Befehl nicht angezeigt, duweil ich sie nicht als Root ausgeführt habe.

Ich vermute, dass Postgres, nachdem die Festplatte voll ist, das Speichern auf der Festplatte beendet und alles im Speicher behält – bis auch der Speicher aufgebraucht ist.

verwandte Informationen