Куда пропало место на диске
Один из вопросов на собесе, который я задаю, звучит так — представь, что df -h показывает 100% занятого места, а du -xsh /* или ncdu ничего при этом не находит.
читать первым в телеграм читать первым в макс
Причем забавно видеть, как кандидат запускает по несколько раз du, видимо, в следующий запуск оно чудным образом что-то найдет.
Тут логично упомянуть inodes, lsof и deleted.
Но сегодня не про это.
Мне прислали на обзор интересную утилиту hsed — Hidden Space Explorer, которая собирает всё это в одном TUI-интерфейсе:

Кстати автор пошёл навстречу и перевел README на русский язык, для ленивых (для меня).
Под капотом демон на Си и интерфейс на Python/Textual.
Утилита умеет:
- сканировать
/procи находить удалённые, но открытые файлы - отправлять процессу
SIGHUP - делать
ftruncateоткрытого файла до нуля без остановки демона - отправлять
SIGKILL, если разговоры уже не помогают - через
ptraceпоказывать, что процесс продолжает писать в удалённый файл прямо сейчас
Последняя штука особенно занятная. Можно не только увидеть, что какой-то процесс держит удалённый файл на 50 гигабайт, но и посмотреть, какие данные туда продолжают лететь.
Но есть важный момент.
Кнопка TRUNCATE не является универсальной кнопкой «починить прод».
Для обычного append-only лога обнуление может быстро вернуть место без перезапуска сервиса.
Но если перед тобой файл базы данных, WAL, индекс, бинарное хранилище или что-нибудь, связанное с mmap, бездумный truncate может превратить проблему с диском в проблему сильно поинтереснее. Так что аккуратнее.
То же самое касается SIGKILL и ptrace. Утилита работает с root-правами и позволяет довольно глубоко залезать в живые процессы.
hsed не как волшебную кнопку, а как удобный аварийный инструмент для инженера, который понимает, что именно он сейчас обнуляет.Поэтому я бы воспринимал hsed не как волшебную кнопку, а как удобный аварийный инструмент для инженера, который понимает, что именно он сейчас обнуляет. Короче, жми на кнопки, только если уверен.
Сама идея прикольная. Проект молодой, так что можно сходить посмотреть код, потыкать на стенде и пообщаться с автором в комментах к посту.
Ссылка на проект: https://github.com/memspy/hsed
Автор: https://t.me/cyberuzbek2
