
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 mem
werden 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 df
am 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, du
weil 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.