du команда займає WAY занадто довго, щоб запустити


9

Я працюю du -shв різних каталогах, щоб знайти дискові хоги. У мене було два однакових сервери (Dell PE2850s), обидва з RHEL5, і для роботи duна одному сервері буде потрібно значно більше часу .

Наприклад, du -sh /opt/foobarна сервері A (який має близько 25 ГБ) потрібно тривати 5 хвилин, а на сервері B та сама команда з тим самим обсягом даних буде мені звітувати майже миттєво. Я не бачу нічого яскраво очевидного при бігу на вершину тощо.

Будь-яка порада високо цінується.


3
Швидкість роботи du -sне залежить від розміру даних, а скоріше від кількості файлів. Чи мають обоє дерева каталогів однакову кількість файлів?
Ladadadada

2
Крім того, duбуде працювати набагато швидше, якщо всі метадані каталогів (наприклад, розміри файлів) в даний час кешовані. Якщо це відбувається з будь-якої причини на одному сервері, а не на іншому, це призведе до великих відмінностей.
Свен

@Ladadada Я б сказав, так, файлів приблизно однакова. Навіть при додаванні зірочки для отримання списку розмірів файлів окремо потрібно прокручувати тривалий час. Але я не зовсім впевнений, як перевірити, керовані метадані чи ні.
Джон Вайнрауб

Відповіді:


6

Якщо у вас в каталозі величезна кількість файлів, а вміст цього каталогу постійно змінюється, сам запис у каталозі з часом роздроблений. Тоді, коли ОС читає вміст каталогів, буде багато і багато непотрібних запитів на диск. Особливо це трапляється з файловими системами ext * (може бути кращим ext4) та старими файловими системами ReiserFS v3.x (якщо ця кількість була заповнена на 85% або близько того).

Рішення досить просте:

cp -pr origdir newdir
mv origdir origdir.bak
mv newdir origdir

Звичайно, якщо все буде кешовано в оперативній пам'яті, це не має великого значення; Зазвичай Linux кешує файли та файли, які часто отримують доступ, досить агресивно. Якщо ви справді хочете зберегти вміст цих каталогів в оперативній пам’яті, ви можете поставити щось подібне ls -lah /your/dir 2>&1 >/dev/nullдо свого хрону.

РЕДАКТ: О, одне на мене спало на думку. Якщо на вашому сервері є резервне копіювання RAID-контролера з деяким кешем, перевірте, чи батарея в порядку. Я бачив ситуації, коли акумулятор загинув, а контролер повністю відключає кеш, погіршуючи продуктивність дуже погано. Наприклад, сервери HP можуть в журналах iLO повідомити щось про батарею контролера; на фактичній інформаційній панелі здоров’я сервера все здається нормальним і зеленим, але про це вам розповість лише запис журналу.


1
Це, мабуть, потребує певного часу, це на виробничому сервері, тому мені знадобиться це робити протягом ночі, і весь каталог містить декілька сотень гігабайт даних, тому я не хочу забивати його ... Я звітую Перше, що завтра вранці. Дякую за ідею.
Джон Вайнрауб

Я досі виконую цю команду і не кажу, скільки часу це займе. Я навіть відмовився від цього, і cp все ще працює, пройшло приблизно 1hr15 хв з моменту запуску. Навіть запуск ду в цій папці в іншій оболонці зайняв багато часу, але ви думаєте, що я повинен просто umountдиск, і fsckце?
Джон Вайнрауб

Просто дайте йому працювати, якщо це якось не заважає вашому виробництву. З RHEL5 та його планувальником CFQ вводу / виводу за замовчуванням ви можете помістити команду cp в клас очікування, щоб він не знущався над іншими процесами: ionice -c3 -p $(pidof cp)або так.
Janne Pikkarainen

Будь ласка, прочитайте мою останню редакцію.
Janne Pikkarainen

1
Я знаю, що минуло деякий час, але я нарешті зійшов, щоб виконати команду cp, про яку ви згадали. Це дві години, щоб скопіювати 25 Гб. Зробивши hte переміщення, запуск іншого du-sh був так само повільним. Насправді навіть видалення каталогу резервного копіювання теж повільне!
Джон Вайнрауб

0

Я пропоную спробувати просту команду du без перемикачів. Ви зрештою побачите, який каталог уповільнює процес. Це може бути несправний диск чи інша причина, ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.