Я начинающий администратор Linux и теперь отвечаю за ОС трехузлового кластера Tomcat. (К счастью, Tomcat обслуживается разработчиками.)
Наше решение для мониторинга встревожило меня, что в / 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,8 ГБ из 3,0 ГБ.
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
Забавно то, что другие 2 узла сообщают о еще большем количестве использованных узлов на / var. Поскольку / var / log / на узлах 2 и 3 занимают на 200–300 МБ больше места. Но разделы и лежащий в их основе LVM имеют одинаковый размер на всех трех узлах.
На 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 инодов, а server02 и server03 имеют 3,096,576 инодов на / var. Но действительно ли это причина? Поскольку на каждом узле используется только 1%.
Если да, как мне увеличить inodes? (Все файловые системы - это XFS вне /, то есть ext2)
/ etc / fstab одинаков на всех трех узлах. ОС - Debian Lenny 64bit с ядром 2.6.35.4.
С уважением
Вы можете запустить 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. А на / var у меня было 2,4 ГБ свободного места. Я также искал удаленный файл на двух других хостах и обнаружил, что на server02 удаленные файлы все еще открыты. К счастью, на этот раз я раньше сказал «ps auxf». Там я увидел, что поток Apache2 открыт с 8 ноября. После "kill -9 $ oldapache2threadpid" исчезли и эти удаленные файлы. Возможно, это тоже проблема на server01.
Затем я перезапустил службу Tomcat на server01. Исчезли и удаленные файлы, но свободного места не увеличилось. Но свободное место на / var теперь совпадает (с несколькими МБ) с тем, что мне говорит du -sch.
Итак, спасибо за помощь :-)
По-прежнему необходимо выяснить, почему Apache не закрывает все свои потоки.
С уважением