Где используется мое место на /var?
Я начинающий администратор Linux и теперь отвечаю за операционную систему кластера Tomcat с 3 узлами. (Tomcat успешно обрабатывается DEV.)
Наше решение для мониторинга встревожило меня тем, что / var на server01 осталось всего 172 МБ свободного места. Скорее всего, потому что / var / log заполнился.
Итак, я исследовал с:
server01:/var# for i in $(ls); do du -sh $i; done
3.5M backups
100M cache
51M lib
0 local
0 lock
598M log
0 mail
0 opt
40K run
32K spool
144K tmp
4.0K www
Если я подытожу это, я получу около 760 МБ памяти. Числа не меняются, если я копаю глубже в дерево каталогов. Так что это правильно.
Но если я выполню df -h, я получу совершенно другие числа для / var. df показывает, что 2.8G из 3.0G используются.
server01:/var# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 950M 205M 697M 23% /
tmpfs 2.0G 0 2.0G 0% /lib/init/rw
udev 2.0G 4.0K 2.0G 1% /dev
/dev/sda3 961M 33M 928M 4% /tmp
/dev/dm-0 2.0G 506M 1.5G 26% /usr
/dev/dm-1 3.0G 2.8G 172M 95% /var
/dev/dm-2 20G 17G 3.3G 84% /home
Самое смешное, что два других узла сообщают о еще большем использовании разнесенных в / var. Поскольку / var / log / на узлах 2 и 3 занимают на 200-300 МБ больше места. Но разделы и базовый LVM имеют одинаковый размер на всех 3 узлах.
На server02 и server03 df -h сообщает, что все в порядке и только от 1,0 до 1,2 ГБ используются из 3,0 ГБ.
Так где же используется мое пространство?
Я слышал о тех маленьких ублюдках, называемых инодами, и проверил это. df -i сообщает:
server01:/var# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 123648 6099 117549 5% /
tmpfs 506908 3 506905 1% /lib/init/rw
udev 506487 675 505812 1% /dev
/dev/sda3 987968 7 987961 1% /tmp
/dev/dm-0 2048000 19786 2028214 1% /usr
/dev/dm-1 705808 1807 704001 1% /var
/dev/dm-2 13619632 5906 13613726 1% /home
И на server02 и server03:
server03:/var# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 123648 6100 117548 5% /
tmpfs 506908 3 506905 1% /lib/init/rw
/dev 506487 675 505812 1% /dev
/dev/sda3 987968 7 987961 1% /tmp
/dev/dm-0 2048000 19784 2028216 1% /usr
/dev/dm-1 3096576 1758 3094818 1% /var
/dev/dm-2 13113840 5642 13108198 1% /home
Таким образом, / var на server01 имеет 705.808 inode, тогда как server02 и server03 имеют 3.096.576 inode на / var. Но действительно ли это причина? Так как только 1% используется на каждом узле.
Если да, как мне увеличить иноды? (Все файловые системы - это XFS из / то есть ext2)
/ etc / fstab одинаков на всех 3 узлах. ОС Debian Lenny 64bit с ядром 2.6.35.4.
С уважением
3 ответа
Вы можете запустить lsof | grep deleted
и проверьте программы-ведьмы, выделившие это место (и удаленный файл).
пример:
[root@mab-01 ~]# lsof | grep deleted
hald-addo 2651 haldaemon txt REG 253,0 15720 3769183 /usr/libexec/hald-addon-keyboard.#prelink#.IhBW5L (deleted)
yum-updat 2899 root txt REG 253,0 4736 3276902 /usr/bin/python.#prelink# (deleted)
mongod 5535 mongod txt REG 253,0 8640360 3484794 /usr/bin/mongod (deleted)
mongod 5535 mongod 1w REG 253,0 278032 262244 /var/log/mongo/mongod.log.rpmsave (deleted)
mongod 5535 mongod 2w REG 253,0 278032 262244 /var/log/mongo/mongod.log.rpmsave (deleted)
/var/log заполнил
Если вы удаляете файлы журналов, которые открыты для записи процессом, имена файлов исчезают (так что du?) Их не видит, но выделенное пространство все еще выделяется, и, поскольку процесс продолжает запись, выделенное пространство может увеличиться.
Если журналы были журналами TomCat, необходимо указать Tomcat, чтобы он снова открыл его файлы журналов.
Обратите внимание на "copytruncate" в этом примере. Я не знаю, относится ли это к вашей ситуации, хотя.
Спасибо за совет с lsof | grep удален. На самом деле я получаю десятки удаленных файлов для Apache2 и Tomcat6.
server01:~# lsof | grep deleted | wc -l
124
После перезапуска Apache2 количество удаленных файлов уменьшилось до 40. И у меня было 2,4 ГБ свободного на /var. Я также искал удаленный файл на двух других хостах и обнаружил, что на server02 есть также удаленный файл, который все еще открыт. К счастью, на этот раз я уже говорил "ps auxf". Там я увидел, что ветка Apache2 была открыта с 8 ноября. После "kill -9 $oldapache2threadpid" эти удаленные файлы также исчезли. Может быть, это также проблема на server01.
Затем я сделал перезапуск службы Tomcat на server01. Удаленные файлы также исчезли, но свободное место не увеличилось. Но свободное место на / var теперь соответствует (с несколькими МБ) тому, что говорит мне du -sch.
Итак, спасибо за помощь всем:-)
Еще нужно выяснить, почему Apache не закрывает все свои потоки.
С уважением