Я использую веб-сервер на CentOS.
Сегодня я не мог запускать SQL-запросы. После расследования error 28
мой /tmp
каталог не может быть записан.
Я побежал du /tmp
и было 1,8Гб. Я тогда побежал find /tmp -type f -mtime +8 -exec rm -f {} \;
что освободило 300Мб места.
На данный момент это сделало свою работу - MySQL снова может работать.
Однако мне любопытно, почему на сервере так много файлов /tmp
каталог. Я дважды перезапускал сервер, и размер каталога остался прежним. Разве большинство дистрибутивов Linux не очищают временные файлы при перезагрузке?
Если я сбегу ls /tmp
, Я получаю огромный список файлов этого типа:
tempCaa7Nw tempk7uZU4 temps3GaF1 tempzzWWjV
tempcAbH5o tempK7VCdu temps3hRWv tempZzXHPM
tempCabZXR tempk7VwjK temps3IdYj tempzzxZWw
tempcAcQtu tempk7W0SI tempS3IGMF tempzZy7FM
tempCaCTkx tempk7xrzw tempS3iMfj tempzZy8L6
tempcAcur7 tempk7yX3J tempS3izd5 tempZZYKXr
tempcaCwnz tempk81EIE tempS3JU5s tempzZyQLO
tempcAdpAk tempk81Qpo tempS3kaNx tempzZZos7
tempCaeFae tempk81ZLV tempS3KYOx
tempcaEGmt tempk83VVy tempS3LI1u
Полный список Вот.
Мне нужно выяснить, что вызывает такое количество временных файлов? Или мне просто нужно увеличить размер (что ли?) Моего /tmp
каталог? Это где-то в конфигурационном файле?
Я плохой администратор Linux, поэтому прошу прощения за мое незнание.
РЕДАКТИРОВАТЬ для @JeffFerland
Вот результаты grep /tmp
на lsof
выходной файл.
mysqld 4649 mysql 4u REG 7,0 0 103774 / tmp/ib4mpAJ8 (deleted)
mysqld 4649 mysql 5u REG 7,0 0 103775 / tmp/ibvE7FxN (deleted)
mysqld 4649 mysql 6u REG 7,0 0 103776 / tmp/ibPe3Lls (deleted)
mysqld 4649 mysql 7u REG 7,0 0 103777 / tmp/ib656Kb7 (deleted)
mysqld 4649 mysql 11u REG 7,0 0 103778 / tmp/ibpptQzP (deleted)
cp 7997 root 3r REG 7,0 18897 28260 / tmp/tempF091j1
cp 7997 root 4w REG 9,1 0 297690 / tmp_bu/tmp/tempF091j1 (deleted)
ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ Удалив вчера ~ 300Мб файлов, мой /tmp
каталог вернулся к своему исходному размеру 1,8 ГБ, и снова MySQL не работает правильно.
Пожалуйста помоги!
Одна вещь, которую вы можете попробовать, - это использовать lsof
команда, чтобы вывести список всех файлов, которые в настоящее время используются ОС. Это может дать вам представление о том, какие запущенные процессы создают / используют эти файлы /temp.*/. Оттуда, предполагая, что вы выясните, какой процесс является виновником, я бы углубился и посмотрел, какие параметры конфигурации могут быть доступны для уменьшения файлового спама.
Большинство из этих файлов имеют одинаковый размер. Проверьте, что в одном из них. Сначала я предполагаю, что ваш сервер принимает загрузку файлов и не очищается, если вы не используете загруженные файлы.
Разные системы делают разные вещи. Я работал над системами, которые очищали / tmp при перезагрузке (sequent mini), но в большинстве дистрибутивов Linux, с которыми я сталкивался, есть задание cron tmpwatch, которое очищает / tmp.
Некоторые программы создают файл tmp, а затем удаляют его, оставляя дескриптор файла открытым, так что, если программа завершится или умирает по какой-либо причине, пространство будет освобождено. Вы могли бы сделать
lsof|grep deleted
чтобы увидеть, какие файлы открыты, но удалены. Затем вы можете посмотреть / proc // fd и увидеть, какие файлы самые большие и в каком процессе они открыты.
Возможно, будет полезно создать специальный том для MySQL, / tmp-mysql, и указать MySQL на этот путь, установив TMP = / tmp-mysql для стартового скрипта. Таким образом, MySQL должен оставаться работоспособным даже при заполнении / tmp.