Рейтинг:0

CentOS - размер списка каталогов верхнего уровня в томе NTFS объемом 50 ТБ слишком медленный

флаг us

Чего я хочу добиться, так это получить информацию о том, насколько велики папки верхнего уровня в каталоге (который является томом NTFS) на сервере CentOS7. Эта информация помещается в файл Prometheus, который используется для отправки этой информации на панель управления Grafana.

Скрипт, выполняемый через задание cron каждый день, выглядит так:

#!/usr/bin/env bash

# Создание метрик коллекции Prometheus об использовании дискового пространства проектами Jenkins в системе.
# В настоящее время в байтах собирается только информация о папках верхнего уровня.

# Обрезать последнюю запись в текстовом файле, чтобы его можно было подготовить для ввода самых новых данных
echo -n > /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom

cd /jenkins/jobs # Перейти в каталог NTFS, содержащий все данные о заданиях
для f в *; do # Проходим по каждой папке верхнего уровня
    если [-d "$f"]; тогда  
        # Не запускается, если нет доступных каталогов
        prometheus_entry=$(du ${f} --block-size=1 --summarize "$@" | \ # выполнить команду `du` для каждой папки верхнего уровня, чтобы можно было рассчитать ее размер, и сохранить вывод в формате Prometheus
          sed -ne 's/\/\/;s/"/\"/g;s/^\([0-9]\+\)\t\(.*\)$/jenkins_directory_size_bytes {каталог = "\2"} \1/p') 
        echo $prometheus_entry >> /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom 
    фи
сделано

В настоящее время это работает на нескольких серверах, которые не имеют большого размера каталога по сравнению с сервером с проблемами (500 ГБ-1,5 Т), а также работает относительно быстро.

Текущая проблема, с которой я сталкиваюсь, заключается в том, что на проблемном сервере, в частности, размер папки довольно большой (50T). Конечно, как и следовало ожидать при таком размере, команды du/df очень медленные (думаю, мне потребуется более 15-20 часов для выполнения скрипта).

Есть ли способ еще больше оптимизировать этот процесс или использовать какой-то кеш или любой другой альтернативный способ (например, с другим инструментом)? я уже пробовал нкду, но это графический интерфейс, и я не могу извлекать информацию так, как хочу, чтобы Prometheus работал.

Как упоминалось ранее, мне нужна только информация о размере папки верхнего уровня и ничего больше. Любая помощь или совет будут очень признательны! Заранее спасибо.

флаг cn
Bob
`df` работает быстро, поэтому размещение этого каталога в собственной файловой системе/томе/дисках является одним из решений. `du` и друзьям нужно пройти через все дерево каталогов, и единственный способ сделать это быстрее, насколько я знаю, - это ускорить базовое хранилище.

Ответить или комментировать

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