LINUX.ORG.RU
ФорумAdmin

заканчиваются inode

 , ,


0

1

Добрый день!

Общая сетевая шара подключена к нескольким хостам по NFS.

В последнее время тенденция, что кто-то или что-то быстро съедает cвободные inode. Различные варианты с lsof применял. Подскажите, пожалуйста, куда еще смотреть?

Ответ на: комментарий от X512

Перейти с убогой файловой системы с фиксированной таблицей inode. Например на Btrfs, XFS.

Прямо скажем - далеко не самый лучший (и я бы даже сказал - вредный) совет, так как как минимум ни на грамм не приближает к пониманию первопричины. Сейчас ТСу отвечу как будет лучше.

bugfixer ★★ ()

кто-то или что-то быстро съедает cвободные inode

Так не бывает. Inode не живут собственной жизнью сами по себе. Ты что то не договариваешь.

anonymous ()

Наверняка кто-то тупо не чистит за собой временные файлы. Вот здесь:

https://unix.stackexchange.com/questions/117093/find-where-inodes-are-being-used

довольно неплохо описывается как найти «негодяя». После того как «злодей» идентифицирован - берём длинную линейку и идём стучать по шаловливым ручкам добиваясь реакции в форме глаз как у «кота из Шрека» и слёзного обещания вот прям вот сейчас всё почистить и никогда так больше не делать. Если же выясниться что наличие туевой хучи мелких файлов это действительно производственная необходимость - то есть варианты. Вы обращайтесь - подскажем.

bugfixer ★★ ()
Ответ на: комментарий от X512

Перейти с убогой файловой системы с фиксированной таблицей inode.

Ну, надо на самом деле узнать, что у него за ФС и с какими параметрами создавалась, некоторые ФС можно потюнить на лету. Но дело может быть и не в таблице, а в том, что переполнился номер, например, если он 32битный (я такое встречал). Правда 32 битные i_ino в struct inode давно в прошлом - это всякая древность типа ext2/ext3, reiserfs (не 4) и тд.

Rectum ()
Ответ на: комментарий от Rectum

Но дело может быть и не в таблице, а в том, что переполнился номер, например, если он 32битный (я такое встречал).

Гхм, переполнить 32bit номер inode это надо постараться. Я не думаю что хоть кто-то из присутствующих здесь вообще хоть раз в жизни сталкивался (или даже больше - столкнётся) с fs такого размера. В ext4 он, кстати, именно 32bit.

bugfixer ★★ ()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от bugfixer

Я когда работал тестировщиком воспроизводил баг, который партнёр зарепортил: суть была в том, что наш антивирусный движок сегфолтился, если на вход подать файл с номером inode > 2^32. Я сначала хотел нагенерить кучу файлов, но это оказалось слишком медленно, также выяснил, что у ext3 (ext4 тогда ещё не было) 32битное это поле и для теста использовал tmpfs. В итоге выкрутился так: набросал модуль ядра, который принимал два параметра - путь к файлу и новый номер. Использовалось так

# insmod mega_module.ko /my/file <очень большое число> # здесь запоминается старый номер и меняется на новый
# проводим тест
# rmmod mega_module # здесь восстанавливается старый номер

Так что вот, не я лично в продакшне столкнулся, но партнёр вполне себе на боевой системе столкнулся с такой ситуацией, где 32 бита мало.

Rectum ()
Ответ на: комментарий от Rectum

если на вход подать файл с номером inode > 2^32.

Мне вот интересно откуда такой номер inode изначально взялся. Что-то мне подсказывает fs была битая. Да и вообще, сейчас занырну в сорсы ядра, посмотрю что там за размер номера inode на уровне vfs.

bugfixer ★★ ()

Небезызвестная утилитка ncdu поможет и тут:

1) Запустить ncdu -x <DIR>

2) Нажать последовательно (на английской раскладке): c C

3) Получается отображение количества дочерних объектов, и соотв.сортировка

4) Дальше по ситуации (мочить данные/тюнить ФС)


--- <DIR> -------------------------------------------------------
                                /..                                                                                                                                                                                         
   53.5 MiB [##########]  3,045 /16
   29.4 MiB [#####     ]  2,022 /11
   37.7 MiB [#######   ]  1,459 /22
   18.4 MiB [###       ]  1,103 /15
    3.3 MiB [          ]    596 /17
   14.3 MiB [##        ]    352 /09
    4.3 MiB [          ]    334 /24
    1.8 MiB [          ]    189 /08

NDfan ()
Ответ на: комментарий от Rectum

Да и вообще, сейчас занырну в сорсы ядра, посмотрю что там за размер номера inode на уровне vfs.

Таки да - unsigned long, так что больше чем 2^32 могло прилететь на 64bit ядре. Теперь мне стало интересно какая из fs это дело реально поддерживает, и кто будет делать такую плотность inodes при данном размере fs…

bugfixer ★★ ()
Ответ на: комментарий от mky

Не обязательно битая ФС, мир не ограничивается локальными unix-ФС, особенно на серверах.

Да я уж почитал… Как я это дело пропустил - не понятно, не смотря на то что большими объёмами и fs по долгу службы вертеть приходится регулярно. Наверное потому что у нас [почти] везде пока ext4, и этого с её 32bit inode no пока хватало. Ну что ж - «век живи век учись» что называется. Всегда приятно узнать что то новое ;)

Кстати, последнее обсуждение добавления large inode no support to ext4 нашёл в треде 17го года, затухло на «будет реальный запрос - добавим». Чувствую мы скоро на xfs мигрировать будем…

Но, если честно, я не думаю что это (переполнение inode no) случай ТС: люди которые с fs такого размера имеют дело таких вопросов не задают обычно.

bugfixer ★★ ()
Последнее исправление: bugfixer (всего исправлений: 1)
Ответ на: комментарий от Rectum

Я когда работал тестировщиком

В итоге выкрутился так: набросал модуль ядра

Тестер способный написать модуль ядра который map’ит inodes туда суда, и в чём-то знающий больше меня про fs internals - это круто (без тени сарказма)! Наверное я сейчас нарушу все местные policy - но мы в постоянном поиске талантов. Как бы нам связаться? Я уверен мы сможем предложить много вкусного (опять без шуток)… Ну, конечно с кучей оговорок, типа успешных собеседований etc. Здесь вообще личка хоть в каком то виде есть?

ПыСы. Деанонимизироваться не могу себе позволить ни при каких раскладах…

bugfixer ★★ ()
Ответ на: комментарий от bugfixer

Деанонимизироваться не могу себе позволить ни при каких раскладах…

Полковник Навальный что-ли?

anonymous ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.