Назад | Перейти на главную страницу

Вакуумный полный не может удалять файлы, потому что диск заполнен, имея 5 ГБ свободного места

Недавно у меня закончилось место на диске. Я удалил несколько старых строк данных из базы данных CMS. Я заметил, что свободное место на диске не увеличивалось должным образом. Я поискал в serverfault и обнаружил, что VACUUM FULL; команда.

К сожалению, я не могу запустить эту команду из-за переполнения диска.

Это мой журнал:

postgres@Ubuntu-1510-wily-64-minimal:~$ psql -d cms
psql (9.4.6)
Type "help" for help.

cms=# auto vacuum
cms-# ;
ERROR:  syntax error at or near "auto"
LINE 1: auto vacuum
        ^
cms=# VACUUM FULL;
ERROR:  could not extend file "base/80180/114991.6": No space left on device
HINT:  Check free disk space.
cms=# \q
postgres@Ubuntu-1510-wily-64-minimal:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            985M     0  985M   0% /dev
tmpfs           201M   26M  175M  13% /run
/dev/sda1        47G   39G  5.8G  87% /
tmpfs          1001M  8.0K 1001M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1001M     0 1001M   0% /sys/fs/cgroup
tmpfs           201M     0  201M   0% /run/user/0
postgres@Ubuntu-1510-wily-64-minimal:~$ psql -d cms
psql (9.4.6)
Type "help" for help.

cms=# VACUUM FULL;
ERROR:  could not extend file "base/80180/115638.5": No space left on device
HINT:  Check free disk space.
cms=# \q
postgres@Ubuntu-1510-wily-64-minimal:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            985M     0  985M   0% /dev
tmpfs           201M   26M  175M  13% /run
/dev/sda1        47G   39G  5.7G  88% /
tmpfs          1001M  8.0K 1001M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1001M     0 1001M   0% /sys/fs/cgroup
tmpfs           201M     0  201M   0% /run/user/0
postgres@Ubuntu-1510-wily-64-minimal:~$ psql -d cms
psql (9.4.6)
Type "help" for help.

cms=# VACUUM FULL;
ERROR:  could not extend file "base/80180/115660.5": No space left on device
HINT:  Check free disk space.
cms=#

Я сейчас в замешательстве. У меня 5,7 ГБ свободного места, и я не могу освободить больше, потому что диск заполнен.

Любая идея?

Операционная система резервирует некоторую часть дискового пространства для дефрагментации и использования администратором, так как postgresql не запускается от имени root, у него нет доступа к последним 5% 9 или какому-либо другому)

чтобы исправить это, вам нужно освободить место, возможно, вы можете временно переместить некоторые несвязанные файлы из системы (например, файлы журнала)

удаление всех индексов (и ограничений внешнего ключа) может освободить достаточно диска. затем заново создайте индексы (pg_dump --schmea-only помимо прочего предоставит вам все определения индексов, чтобы вам было что восстановить)

резервное копирование большой таблицы на внешний носитель, а затем ее усечение и повторная загрузка также будет иметь тот же эффект, что и вакуумное заполнение.