Давний читатель, впервые спрашивающий:
Я администратор Linux младшего уровня, который все больше поддерживает очень большие наборы / хранилища данных в локальных хранилищах и NFS. Данные обычно представлены в виде массивных деревьев папок и файлов с произвольными именами. Чтобы привести пример проблемы, я работаю с разделами 20+ ТБ, содержащими сотни тысяч вложенных каталогов и десятки миллионов файлов.
Поскольку эти разделы / экспорт являются общими ресурсами, мне обычно приходится играть в детектив, когда они начинают исчерпывать пространство или inode, чтобы определить, какие папки являются наиболее серьезными нарушителями.
Я обнаружил, что 'du -s' слишком медленный и ручной для выполнения работы, и я надеялся увидеть, какие уловки используют другие люди, чтобы определить самые большие или самые многочисленные каталоги счётчика файлов среди очень больших разделов.
Единственная ОС, в которой я занимаюсь этим поиском, - это RHEL 5/6, так что любое сочетание стандартных инструментов CLI Linux подойдет.
Спасибо!
Я часто даю эту рекомендацию, чтобы увеличить обычную df -i
и du -skh
решения ...
Посмотрите в утилита ncdu. Это основанный на ncurses инструмент для построения графиков использования диска. Вы получите результат, аналогичный приведенному ниже, с количеством файлов и сводкой размеров каталогов. Он доступен для CentOS / RHEL.
ncdu 1.7 ~ Use the arrow keys to navigate, press ? for help
--- /data ----------------------------------------------------------------------------------------------------------
163.3GiB [##########] /docimages
84.4GiB [##### ] /data
82.0GiB [##### ] /sldata
56.2GiB [### ] /prt
40.1GiB [## ] /slisam
30.8GiB [# ] /isam
18.3GiB [# ] /mail
10.2GiB [ ] /export
3.9GiB [ ] /edi
1.7GiB [ ] /io
Я использую эту команду, чтобы проверить, какие файлы наибольшего размера находятся в каталоге / в системе. Но я не уверен, что это масштабируемо в среде, которую вы используете:
find / -type f -size +100000k -exec ls -lh {} \; 2>/dev/null| awk '{ print $8 " : " $5}'
если хотите, можете опустить инструкцию awk (я просто использую ее для очистки вывода). команда find будет рекурсивно просматривать каталоги в поисках файлов, размер которых превышает заданное количество k. Затем он выполнит ls -lh для этого файла, что даст что-то вроде:
-rw-r--r-- 1 username group 310K Feb 25 2011 filename
оператор AWK очищает вывод в форме:
filename : 310K
Что я считаю наиболее полезным в этой команде, так это то, что вы можете указать минимальный размер файлов. Как было сказано ранее, я понятия не имею, насколько интенсивно используется процессор / время в вашей среде.
Я предлагаю разбить данные на несколько разделов, если это вообще возможно. Независимо от того, какие инструменты вы используете, сканирование такого количества файлов займет время. Если бы это было на разных разделах, вы могли бы, по крайней мере, сначала сузить проблему до одного раздела. Но это может не подходить для того, что вы делаете.
du, вероятно, лучший инструмент для того, что вы ищете. Вот как я его использую:
Если ваша структура каталогов выглядит так:
/mount/1/abc/123/456/789,
/mount/1/def/stuff/morestuff/evenmorestuff
/mount/2/qwer/wer/erty
Я бы побежал:
du -s /mount/*/* | sort -n
Это даст вам общее использование каждого каталога второго уровня, отсортированное по размеру. Если запуск занимает много времени, направьте его в файл и запустите его на ночь.
Ваш результат будет выглядеть так:
10000 /mount/1/abc
20000 /mount/1/def
23452 /mount/2/qwer
Тогда вы просто надеетесь, что это достаточно разбивает его, чтобы увидеть, где находятся проблемные места.
Если это обычная проблема, вы можете запустить эту команду каждую ночь в то время, когда ваша система не так занята, и сохранить результат в файл. Тогда у вас сразу же появятся последние данные, на которые можно обратить внимание, когда вы заметите проблему.
Еще один вариант, на который вы, возможно, захотите посмотреть, - это квоты - если это общее хранилище, и все они используют разные учетные записи пользователей, установка очень высоких квот может сработать, чтобы предотвратить использование неконтролируемыми процессами больших объемов дискового пространства.