Время от времени тот или иной из наших серверов объявляет, что он заполнен на 90%, и мы запускаем на нем какой-нибудь вариант «du», чтобы детализировать и найти, что такое большое или что быстро растет, и, конечно же, это занимает все больше и больше времени на все больших и больших дисках.
Конечно, мы можем запускать du каждую ночь, но эти проблемы, как правило, возникают взрывоопасно. 🙂
Существуют ли какие-либо файловые системы, поддерживающие решение этой проблемы без сканирования всего диска? Возможно, демон, который отслеживает файловую активность, поддерживает детальное дерево использования или список «самых больших файлов» или что-то в этом роде?
использование дискового пространства
1 ответ
Насколько мне известно, нет реальной альтернативы использованию инструментов, которые сканируют всю файловую систему, чтобы найти текущие дисковые свиньи. Метаданные каталога просто не содержат достаточно информации об их дочерних элементах и дочерних элементах, чтобы избежать сканирования всех подкаталогов и файлов по отдельности и создания подсчета использования диска.
du
стратегии избегания
Check open file descriptors
Часто первый уровень подхода и предположения заключается в том, что виновником является один большой записываемый файл, вы можете ограничить свой поиск файлами, которые в данный момент открыты, и проверять только их размер.
Для детального подхода с использованием lsof
видеть: https://unix.stackexchange.com/q/382693/48232
Что-то похожее было бы du -sL /proc/*/fd/* |sort -n
а затем по самым интересным ссылкам на файловые дескрипторы:
du -sL /proc/*/fd/* |sort -n
...
6344 /proc/873/fd/11
6344 /proc/873/fd/12
6344 /proc/873/fd/13
20140 /proc/359/fd/62
2028890 /proc/876/fd/6
ls -l /proc/876/fd/6
lrwx------. 1 root root 64 Sep 8 10:09 /proc/876/fd/6 -> /var/log/httpd/example.net_access_log
iotop
Аналогичный мониторинг операций ввода-вывода позволяет определить процессы, генерирующие наибольшее количество операций ввода-вывода. Как только у вас есть PID
Вы можете запустить ls -l /proc/[PID]/fd/*
и посмотреть, куда именно процесс пишет. Это позволяет вам идентифицировать текущие активные процессы, которые могут записывать множество файлов меньшего размера, а не один большой файл.
Quota
Это уже не модно, и ваш пробег может варьироваться, но включение квоты в файловых системах (заранее) имеет несколько потенциальных преимуществ.
- установите жесткие и мягкие ограничения квот, и нарушитель-убегающий пользователь/процесс будет остановлен, прежде чем полностью заполнит файловую систему и помешает другим пользователям/процессам
- даже с неограниченным набором квот отчеты о дисковых квотах — это быстрый и простой способ определить, кто, какие идентификаторы пользователя/группы являются дисковыми свиньями.
Partitioning
Хотя PITA в других отношениях позволяет настроить пользователей/приложения с их собственными томами/разделами/файловыми системами вместо использования только одной корневой файловой системы, что позволяет вам быстро запускать df
что ограничивает объем поиска, который вам нужно выполнить.
Быстрая (er) информация об использовании диска
Вместо того, чтобы бежать du --max-depth=2 <some-filesystem> | sort -n
или аналогичный (который из-за |
pipe показывает только результаты после вся файловая система была просканирована) я обычно запускаю
du --max-depth=2 <some-filesystem> | tee /tmp/du.txt
в одном окне и в другом:
watch -n 1 "sort -nr < /tmp/du.txt"
у которого есть то преимущество, что вы можете увидеть некоторый немедленный прогресс.
ncdu
Для меня du
команда часто достаточно полезна, она всегда установлена и более целесообразна, чем, например, почтенный ncdu
который сначала должен построить кеш использования диска, прежде чем предоставить вам, по общему признанию, приятный и полезный навигационный TUI, который позволяет вам переходить к самым большим каталогам.
duc
Debian и Ubuntu поставляются с необязательным duc
это по-прежнему требует от вас выполнения (начального) полного сканирования дерева каталогов / файловой системы, но также сохраняет этот кеш использования диска. duc
также позволяет обновить этот существующий кеш использования диска, что должно быть быстрее для последующих запусков.
Интерфейс TUI похож на ncdu
но полный графический интерфейс предлагает несколько действительно хороших диаграмм использования. Демо: https://duc.zevv.nl/demo.cgi?x=338&y=181&path=/
ХБраун