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

Где используется мое пространство на / var?

Я начинающий администратор 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 не закрывает все свои потоки.

С уважением