Web-development, Без категории

Проблема с дисковым пространством и inodes

Расскажу о нетипичной (для меня) проблеме, которая вчера случилась с некоторыми сайтами, в частности php-start.com, listen-radio.org.

Зайдя на сайт утром 24 июля 2016, я обнаружил ошибку соединения с БД. Вообще-то, ее не должно было быть видно, но в настройках было включено отображение ошибок (так делать нельзя). При попытке соединиться с базой при помощи Workbench получил ошибку:

Error Code: 1 Can’t create/write to file ‘/tmp/#sql_3a5_0.MYI

Это значило, что во временном хранилище /tmp закончилось место. Упомяну, что я использую VPS для размещения сайтов.

Удивительным было то, что когда я проверил место, то обнаружил, что всего на диске 24 Гб, использовано 13 Гб, доступно 0 Гб (скриншот не успел сделать, спешил).

Пообщавшись с техподдержкой, получил подсказку покопать в сторону запроса inodes.  Насколько я понял

Inodes — это вспомогательные структуры данных в файловых системах Unix, которые содержат метаданные о файлах (кроме непосредственно данных и имени).

Случаются ситуации, когда в системе накапливается большое количество небольших файлов. В моем случае это было огромнейшее количество сессий пользователей. Для них было заведено большое количество inodes, которые съели много места.

«Нарушителей» можно определить, используя bash-команду:

for i in /*; do echo $i; find $i |wc -l; done
for i in /home/*; do echo $i; find $i |wc -l; done

/home/* — это путь, который можно менять для поиска в конкретном месте. Подсмотрено здесь.

2

Как только в списке встречается неожиданно большое количество файлов, следует найти причину. Как я уже говорил, в моем случае это была папка с сессиями пользователей:

Screenshot from 2016-07-24 08:43:10

Разобравшись с ними тупо грохнув все сессии, проблема исчезла:

1


Вот такая история. Если найдется человек хорошо разбирающийся в администрировании и готовый пролить больше света на данную тему, буду очень рад!

Поделитесь с друзьями или сохраните себе
  •  
  •  
  •  
  •  
  •  
  •  
  •  

2 Comments

  1. Файлы сессий можно хранить на AWS S3 Bucket (ложить их туда и потом забирать через их API), при этом о месте, занимаемом файлами сессий и их инодами (иноды создаются как на файлы, так и на каталоги) можно буквально забыть. Еще один плюс в том, что переплачивать за что-то простаивающее не придется — это одна из главных фишек AWS.

    Reply

Напишите комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


2 + четырнадцать =