Недостаточно памяти или недостаточно места на диске?
Я запускаю процесс загрузки базы данных (osm2pgsql), который завершается ошибкой:
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,
В начале импорта mem
доклады:
total used free shared buffers cached
Mem: 31G 29G 2.4G 0B 178M 24G
-/+ buffers/cache: 4.5G 26G
Swap: 0B 0B 0B
Незадолго до конца:
total used free shared buffers cached
Mem: 31G 31G 227M 0B 178M 26G
-/+ buffers/cache: 4.8G 26G
Swap: 0B 0B 0B
В то же время, df
в начале:
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
И примерно с 3/4 пути через процесс. Использование сидит на 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
Я не могу определить какие-либо фактические файлы на диске, которые заполняют /dev/vda1:
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
Это ничего не показывает.
В чем дело?
1 ответ
Решение
Хорошо, это было просто. База данных Postgres была на /dev/vda1 и становилась огромной. Это не обнаружилось в du
команда, потому что я не запускал это как root.
Я полагаю, что после заполнения диска Postgres прекращает сохранять на диск и сохраняет все это в памяти - до тех пор, пока не закончится память.