Домен даних: Огляд етапів очищення файлової системи домену даних/збору сміття
Summary: У цій статті наведено огляд етапів очищення/збирання сміття (GC) у файловій системі домену даних (DDFS). У ньому описані відмінності між різними чистими алгоритмами, що використовуються в різних релізах операційної системи Data Domain. ...
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
Файлова система домену даних (DDFS) відрізняється від багатьох поширених реалізацій файлових систем тим, що при видаленні файлу з простору файлової системи, який використовується цим файлом, він не відразу доступний для повторного використання. Причина цього полягає в тому, що відновлювач доменів даних (DDR) не відразу знає, чи дані, на які посилався видалений файл, також дедуплікуються проти інших файлів, і, отже, чи безпечно видаляти ці дані чи ні.
Прибирання (іноді відоме як збір сміття або GC) — це процес, за допомогою якого DDR:
У цій статті клін/ГК описується більш детально, пояснюючи:
Прибирання (іноді відоме як збір сміття або GC) — це процес, за допомогою якого DDR:
- Визначає, які дані на диску є зайвими (тобто на них більше не посилаються такі об'єкти, як файли або знімки)
- Фізично видаляє зайві дані, роблячи базовий дисковий простір доступним для повторного використання (тобто прийому нових даних)
- Тривалий біг
- Обчислювально дорогий
У цій статті клін/ГК описується більш детально, пояснюючи:
- Фази, які зазвичай проходять
- Різні алгоритми очищення використовуються в різних версіях DDOS
Cause
Ніхто
Resolution
Кожен раз, коли запускається clean/GC, він має дві основні мети - спочатку він повинен знайти зайві дані про DDR - короткий огляд того, як це робиться наступним чином:
Фізично не звільниться місце в системі, поки clean/GC не досягне фази копіювання. Як наслідок, може виникнути значна затримка між початком прибирання та початком звільнення простору (через те, що процес перерахування спочатку потрібно запускати до завершення). З цієї причини не можна допускати, щоб системи заповнювалися на 100% до початку clean/GC.
Фази перерахування, як правило, дорогі з точки зору використання ЦП (тобто вони, як правило, прив'язані до процесора), тоді як фаза копіювання є дорогою з точки зору як ЦП, так і вводу/виводу (тобто вони зазвичай пов'язані з процесором та введенням/виводом). Узагальнюючи, однак, можна сказати, що:
DDOS 5.4 (і раніше) - алгоритм повного очищення: Проходить 6 або 10 фаз (як показано вище):
Аналогічно, DDR автоматично перемикаються з фізичних на ідеальні алгоритми фізичного очищення при оновленні з DDOS 5.x до 6.0 (або пізніше). Однак зауважте, що ідеальний алгоритм фізичного очищення вимагає, щоб індекси були у форматі 'index 2.0', перш ніж його можна буде використовувати. Зазначимо, що:
Незалежно від використовуваного алгоритму очищення, він може вимагати змінної кількості фаз - наприклад, алгоритм повного очищення може вимагати 6 або 10 фаз. Причиною цього є те, що:
Немає доступної інформації для безпосереднього визначення того, що система перейшла від алгоритму фізичного очищення до ідеального алгоритму фізичного очищення, за винятком:
Незалежно від використовуваного чистого алгоритму, фаза копіювання (коли мертві дані фізично видаляються з системи) функціонує однаково у всіх релізах. Продуктивність фази копіювання, як правило, залежить від:
Приклад 1:
Для виконання копіювання, описаного в прикладі 2, потрібно більше вводу-виводу та процесора, ніж у прикладі 1, отже, потрібно більше часу, щоб звільнити 45 Мб фізичного простору на диску в цьому прикладі.
Користувачі, як правило, не мають контролю над «фрагментацією» мертвих даних на диску на DDR, оскільки це дуже залежить від випадку використання/типу даних, що записуються в систему. Зауважте, однак, що clean/GC веде статистику, яка допомагає визначити «фрагментацію» мертвих даних, що зустрічаються під час фази копіювання (що, отже, дозволяє користувачеві визначити, чи може ця фрагментація пояснити потенційно тривалу фазу копіювання). Така статистика з останньої фази clean/GC збирається в автопідтримках. Наприклад, нижче показана фаза копіювання, коли мертві дані були досить суміжними (тобто більшість контейнерів, вибраних для копіювання, містили переважно мертві дані):
Відсоток живих даних у копіюванні: 3,6% 4,3%
І навпаки, наступне показує фазу копіювання, коли мертві дані були фрагментовані (тобто більшість контейнерів, вибраних для копіювання, містили переважно живі дані):
Відсоток живих даних у копії: 70,9% 71,5%
Як було описано вище, clean/GC доведеться виконувати порівняно набагато більше роботи, у другому сценарії фізично звільнити місце на DDR, що призведе до зниження пропускної здатності фази копіювання.
На пропускну здатність фази копіювання також можуть негативно впливати:
- Clean/GC нумерує вміст файлової системи DDFS, шукаючи такі об'єкти, як файли, знімки та журнали реплікації, які наразі існують у системі
- Потім він визначає всі фізичні дані на диску, на які активно посилаються ці об'єкти
- Дані, на які посилаються активно, називаються «живими» і не можуть бути видалені з DDR, інакше об'єкти, що посилаються на ці дані, будуть пошкоджені (їх більше не можна буде читати, оскільки базові дані, від яких вони залежали, більше не існуватимуть на диску)
- Дані, на які не посилається активно жоден об'єкт, називаються «мертвими» і зайвими - ці дані можна сміливо видаляти з системи
- Усі дані на DDR упаковуються в об'єкти розміром 4,5 Мб, відомі як контейнери
- За допомогою перерахування clean/GC може визначити, які контейнери розміром 4,5 Мб містять мертві дані та кількість мертвих даних у кожному
- За замовчуванням clean/GC вибере контейнери розміром 4,5 МБ, що містять > 8% мертвих даних для «обробки»
- Контейнери, вибрані для обробки, знову перевіряються, щоб підтвердити, що вони містять достатню кількість мертвих даних
- Живі дані витягуються з цих контейнерів і записуються в нові контейнери по 4,5 Мб в кінці файлової системи
- Як тільки це буде завершено, вибрані контейнери (включаючи мертві дані, які вони містять) видаляються з диска, фізично звільняючи місце на диску
- Версія DDOS, яка використовується на DDR (звідси і чистий алгоритм, який використовується, за замовчуванням, цією версією DDOS)
- Конфігурація або вміст системи
- Попереднє перерахування - перерахування вмісту файлової системи DDFS
- Попереднє злиття – виконайте злиття індексів DDFS, щоб переконатися, що остання копія інформації індексу скинута на диск
- Попередній фільтр - визначте, чи є дублікати даних у файловій системі DDFS, і якщо так, то де це знаходиться
- Попередньо вибираємо - визначаємо, які контейнери об'ємом 4,5 Мб слід "обробити" шляхом очищення
- Копіювати - фізично витягувати живі дані з вибраних контейнерів, записувати це в нові контейнери, потім видаляти вибрані контейнери
- Summary - перебудова векторів резюме (які використовуються як оптимізація під час прийому нових даних)
Фізично не звільниться місце в системі, поки clean/GC не досягне фази копіювання. Як наслідок, може виникнути значна затримка між початком прибирання та початком звільнення простору (через те, що процес перерахування спочатку потрібно запускати до завершення). З цієї причини не можна допускати, щоб системи заповнювалися на 100% до початку clean/GC.
Фази перерахування, як правило, дорогі з точки зору використання ЦП (тобто вони, як правило, прив'язані до процесора), тоді як фаза копіювання є дорогою з точки зору як ЦП, так і вводу/виводу (тобто вони зазвичай пов'язані з процесором та введенням/виводом). Узагальнюючи, однак, можна сказати, що:
- Загальна тривалість етапів перерахування залежить від обсягу даних на НДР, які необхідно пронумерувати
- Загальна тривалість фази копіювання залежить від кількості мертвих даних на DDR, які необхідно видалити, і від того, наскільки «фрагментовані» ці дані на диску (про це йдеться нижче)
DDOS 5.4 (і раніше) - алгоритм повного очищення: Проходить 6 або 10 фаз (як показано вище):
- Вміст файлової системи DDFS перераховується зверху вниз (тобто вона орієнтована на файли)
- DDFS виявляє всі файли, що існують у DDR, а потім сканує кожен файл по черзі, щоб визначити, на які дані посилається цей файл
- Це дозволяє clean/GC визначити, які дані на диску є «живими»
- Вміст DDFS перераховується знизу вгору (тобто в ній більше не скануються окремі файли)
- DDFS виявляє метадані файлової системи, які посилаються на фізичні дані на диску, і сканує ці метадані, щоб визначити, на які дані посилаються
- Це дозволяє clean/GC визначити, які дані на диску є «живими»
- Це досягається додаванням фази «аналізу» (звідси і збільшення кількості фаз за алгоритмом повного очищення)
- Зазвичай очікується, що загальна тривалість фізичного очищення буде коротшою, ніж повна чистка для тієї ж системи (незважаючи на те, що вона складається з більшої кількості окремих етапів)
- Це просто оптимізація алгоритму фізичного очищення і обговорюється нижче
- Багато дрібних файлів (оскільки перемикання контексту при переході від нумерації одного файлу до іншого було дорогим/повільним)
- Високий коефіцієнт дедуплікації (оскільки кілька файлів посилалися на одні й ті самі фізичні дані, тому одні й ті самі дані нумерувалися кілька разів)
Аналогічно, DDR автоматично перемикаються з фізичних на ідеальні алгоритми фізичного очищення при оновленні з DDOS 5.x до 6.0 (або пізніше). Однак зауважте, що ідеальний алгоритм фізичного очищення вимагає, щоб індекси були у форматі 'index 2.0', перш ніж його можна буде використовувати. Зазначимо, що:
- Формат 'index 2.0' був введений з DDOS 5.5 (тому всі файлові системи, створені на 5.5 або пізніше, вже використовують індекс 2.0)
- Файлова система, створена на версії 5.4 або ранішої версії, спочатку мала індекси у форматі index 1.0. Після оновлення до DDOS 5.5 (або пізніше) індекси будуть перетворені у формат індексу 2.0 - конвертація відбувається кожного разу, коли виконується чистий запуск, однак лише ~1% індексів конвертуються під час кожного очищення, тому може знадобитися до 2 років (за умови чистих прогонів щотижня) для повного перетворення індексів у формат 2.0
Незалежно від використовуваного алгоритму очищення, він може вимагати змінної кількості фаз - наприклад, алгоритм повного очищення може вимагати 6 або 10 фаз. Причиною цього є те, що:
- Коли запускається DDFS, він резервує фіксований обсяг пам'яті для використання clean/GC
- У цій пам'яті clean/GC створює структури даних для опису результатів перерахування (тобто описує, де на диску існують живі та мертві дані)
- Коли DDR містить відносно невелику кількість даних, весь вміст файлової системи DDFS може бути описаний у цій області пам'яті
- Однак у багатьох системах це неможливо, і ця область пам'яті буде вичерпана до того, як буде перераховано весь вміст файлової системи DDFS
- В результаті ці системи виконують «відбір проб», що збільшує кількість необхідних чистих фаз
- Виконайте вибірковий прохід зчислення по всій файловій системі - зауважте, що це зчислення не є 'повним' (тобто воно не записує повну інформацію про кожну частину файлової системи, а натомість апроксимує інформацію для кожної частини файлової системи)
- Використовуйте цю інформацію про вибірку, щоб визначити, яка частина файлової системи DDFS найбільше виграє від запуску clean/GC проти неї (тобто, яка частина файлової системи дала б найкращу віддачу з точки зору звільнення простору в разі очищення)
- Виконайте другий раунд повного перерахування з обраною частиною файлової системи, вміст якої тепер може бути повністю описаний у пам'яті, зарезервованій для GC
- Збільшення числа фаз, які повинні бути виконані ГК
- Відповідне збільшення загальної тривалості ГХ
Немає доступної інформації для безпосереднього визначення того, що система перейшла від алгоритму фізичного очищення до ідеального алгоритму фізичного очищення, за винятком:
- Коли система працювала фізично чисто на DDOS 5.5 - 5.7, вона виконувала 12 фаз під час чистки
- Після оновлення системи до DDOS 6.0 (або пізнішої версії) вона виконує лише сім фаз під час очищення
Незалежно від використовуваного чистого алгоритму, фаза копіювання (коли мертві дані фізично видаляються з системи) функціонує однаково у всіх релізах. Продуктивність фази копіювання, як правило, залежить від:
- Кількість «мертвих» даних, які потрібно видалити
- «Фрагментація» цих мертвих даних (саме так вони розподіляються по диску)
Приклад 1:
- Для копіювання вибирається десять контейнерів (загальні дані 45 Мб)
- Все якщо ці контейнери не містять живих даних (тобто дані, які вони зберігають, абсолютно не мають посилань)
- В результаті копія повинна позначити ці контейнери як видалені, щоб звільнити 45 Мб фізичного простору на диску
- Для копіювання вибирається 100 контейнерів (всього 450 Мб)
- Кожен із цих контейнерів містить 90% живих даних і 10% мертвих даних
- Для обробки цих контейнерів copy повинен:
Зчитуйте 90% реальних даних з усіх 100 контейнерів (405 Мб даних).
Створіть набір нових контейнерів для зберігання цих 405 Мб даних у кінці файлової системи.
Запишіть ці 405Mb дані в ці контейнери та відповідно оновіть структури, такі як індекси.
Позначте 100 вибраних контейнерів як видалені, таким чином звільнивши 45 Мб фізичного простору на диску.
Для виконання копіювання, описаного в прикладі 2, потрібно більше вводу-виводу та процесора, ніж у прикладі 1, отже, потрібно більше часу, щоб звільнити 45 Мб фізичного простору на диску в цьому прикладі.
Користувачі, як правило, не мають контролю над «фрагментацією» мертвих даних на диску на DDR, оскільки це дуже залежить від випадку використання/типу даних, що записуються в систему. Зауважте, однак, що clean/GC веде статистику, яка допомагає визначити «фрагментацію» мертвих даних, що зустрічаються під час фази копіювання (що, отже, дозволяє користувачеві визначити, чи може ця фрагментація пояснити потенційно тривалу фазу копіювання). Така статистика з останньої фази clean/GC збирається в автопідтримках. Наприклад, нижче показана фаза копіювання, коли мертві дані були досить суміжними (тобто більшість контейнерів, вибраних для копіювання, містили переважно мертві дані):
Відсоток живих даних у копіюванні: 3,6% 4,3%
І навпаки, наступне показує фазу копіювання, коли мертві дані були фрагментовані (тобто більшість контейнерів, вибраних для копіювання, містили переважно живі дані):
Відсоток живих даних у копії: 70,9% 71,5%
Як було описано вище, clean/GC доведеться виконувати порівняно набагато більше роботи, у другому сценарії фізично звільнити місце на DDR, що призведе до зниження пропускної здатності фази копіювання.
На пропускну здатність фази копіювання також можуть негативно впливати:
- Використання шифрування: Дані можуть потребувати розшифровки/повторного шифрування під час копіювання, що значно збільшує необхідний обсяг процесора
- Використання оптимізації низької пропускної здатності: Контейнерам може знадобитися «ескізнена» інформація для генерації під час копіювання, що також спричиняє значне збільшення необхідного обсягу процесора
Additional Information
Додаткові примітки щодо перевірки/зміни чистого графіка та дросельної заслінки доступні в наступній статті KB: Домен даних - Планування очищення на DDR
Однак зауважте, що:
DDR з чистою дросельною заслінкою «100» (тобто найвищим/найагресивнішим можливим налаштуванням дросельної заслінки) використовуватиме значну кількість процесора та вводу/виводу під час роботи clean і не вивільнятиме ресурси, навіть якщо DDR піддається іншому робочому навантаженню (у цьому сценарії дуже ймовірно, що чиста робота призведе до значного зниження продуктивності операцій прийому/відновлення/реплікації)
Наприклад:
Однак зауважте, що:
- За звичайних обставин чистоту слід планувати не частіше одного разу на тиждень - частіше це може призвести до надмірної «фрагментації» даних на диску (тобто демонстрації поганої просторової локальності), що може призвести до низької продуктивності читання/реплікації/переміщення даних
- Чиста дросельна заслінка не впливає на загальну кількість пропускної здатності процесора та вводу/виводу, що споживається чистим шляхом - замість цього вона контролює, наскільки чиста чутлива до інших робочих навантажень системи. Наприклад:
DDR з чистою дросельною заслінкою «1» (це найнижчий/найменш агресивний можливий параметр дросельної заслінки) все одно використовуватиме значну кількість процесора та вводу/виводу під час чистої роботи. Однак він повинен негайно відступити та вивільнити ресурси, як тільки DDR зазнає будь-якого іншого навантаження.
DDR з чистою дросельною заслінкою «100» (тобто найвищим/найагресивнішим можливим налаштуванням дросельної заслінки) використовуватиме значну кількість процесора та вводу/виводу під час роботи clean і не вивільнятиме ресурси, навіть якщо DDR піддається іншому робочому навантаженню (у цьому сценарії дуже ймовірно, що чиста робота призведе до значного зниження продуктивності операцій прийому/відновлення/реплікації)
- За замовчуванням чиста дросельна заслінка встановлена на 50 - користувач несе відповідальність за перевірку роботи чистої заслінки з різними налаштуваннями дросельної заслінки, поки DDR відчуває звичайне робоче навантаження, щоб визначити налаштування дросельної заслінки, що дозволяє:
Чистий виконується за мінімальну кількість часу.
Чистий для роботи, не спричиняючи надмірного погіршення продуктивності інших робочих навантажень.
- Тривале прибирання не обов'язково є проблемою, якщо:
Clean може повністю завершитися між запланованим часом початку (тобто, якщо прибирання заплановано на початок о 6 ранку у вівторок, воно має завершитися до 6 ранку наступного вівторка)
Система має достатньо вільного простору, щоб не заповнитися до того, як clean досягне фази копіювання (і простір почне відновлюватися)
Чистота не призводить до надмірного погіршення продуктивності інших робочих навантажень під час роботи.
- Система, що використовує функціонал розширеного утримання, повинна бути налаштована таким чином, щоб:
Переміщення даних з активного -> рівня архіву планується запускати через рівні проміжки часу (тобто раз на тиждень)
Активне рівневе очищення планується запустити після завершення переміщення даних
Активне прибирання рівня не має власного/незалежного графіка (оскільки це може спричинити надмірне прибирання)
- Повна інформація про останню чисту операцію включена в автопідтримку та деталі:
Огляд етапів під час чищення
Тривалість і пропускна здатність кожного етапу очищення
Детальна статистика по кожному етапу прибирання
Наприклад:
Статистика GC для фізичного очищення на Active Success 39 Aborted 0
Остання успішна лінійка контейнерів GC: 15925661 до 62813670
фази ГХ: Час перед злиттям: 133 в середньому: 154 сег/с: 0 продовження/с:
0 фаза ГХ: Час попереднього аналізу: 1331 в середньому: 1768 серг/с: 0 продовження/с:
0 фаза ГХ: Час перед перерахуванням: 34410 в середньому: 31832 сек/с: 1471833 продовження:
0 фаза ГХ: Час попереднього фільтрування: 2051 в середньому: 1805 сег/с: 1988827 продовження:
0 фаза ГХ: Попередній вибір часу: 2770 в середньому: 2479 сег/с: 1472593 продовження: Фаза 2675
GC: Час злиття: 111 середній: 69 сег/с: 0 продовження/с:
0 фаза ГХ: Час аналізу: 1350 в середньому: 900 сег/с: 0 продовження/с:
0 фаза ГХ: Час кандидата: 1478 в середньому: 739 сег/с: 6833465 продовження: Фаза 2156
GC: Час перерахування: 37253 в середньому: 20074 SEG/s: 5490502 продовження:
0 фаза ГХ: Час фільтрації: 1667 в середньому: 910 сег/с: 9787652 продовження:
0 фаза ГХ: Час копіювання: 52164 середній: 49496 сег/с: 0 продовження/с: Фаза 61
ГК: Підсумковий час: 2840 в середньому: 2427 сег/с: 5552869 продовження: Деталі фази аналізу 2501
ГК: Нещодавня кумулятивна
кількість сегментів в індексі:
16316022459 572186212855 Кількість унікальних сегментів виконана:
494653358 319255282440 Кількість унікальних Lp-сегментів:
494653866 17879171482 Кількість перерозподілених буферів затримок: 0 0
Індекс повністю оновлений: 1 16
Сканування лише для LPS: Підтримується 1 39
Максимальна кількість сегментів Lp: 18105971430 706132885747
...
Остання успішна лінійка контейнерів GC: 15925661 до 62813670
фази ГХ: Час перед злиттям: 133 в середньому: 154 сег/с: 0 продовження/с:
0 фаза ГХ: Час попереднього аналізу: 1331 в середньому: 1768 серг/с: 0 продовження/с:
0 фаза ГХ: Час перед перерахуванням: 34410 в середньому: 31832 сек/с: 1471833 продовження:
0 фаза ГХ: Час попереднього фільтрування: 2051 в середньому: 1805 сег/с: 1988827 продовження:
0 фаза ГХ: Попередній вибір часу: 2770 в середньому: 2479 сег/с: 1472593 продовження: Фаза 2675
GC: Час злиття: 111 середній: 69 сег/с: 0 продовження/с:
0 фаза ГХ: Час аналізу: 1350 в середньому: 900 сег/с: 0 продовження/с:
0 фаза ГХ: Час кандидата: 1478 в середньому: 739 сег/с: 6833465 продовження: Фаза 2156
GC: Час перерахування: 37253 в середньому: 20074 SEG/s: 5490502 продовження:
0 фаза ГХ: Час фільтрації: 1667 в середньому: 910 сег/с: 9787652 продовження:
0 фаза ГХ: Час копіювання: 52164 середній: 49496 сег/с: 0 продовження/с: Фаза 61
ГК: Підсумковий час: 2840 в середньому: 2427 сег/с: 5552869 продовження: Деталі фази аналізу 2501
ГК: Нещодавня кумулятивна
кількість сегментів в індексі:
16316022459 572186212855 Кількість унікальних сегментів виконана:
494653358 319255282440 Кількість унікальних Lp-сегментів:
494653866 17879171482 Кількість перерозподілених буферів затримок: 0 0
Індекс повністю оновлений: 1 16
Сканування лише для LPS: Підтримується 1 39
Максимальна кількість сегментів Lp: 18105971430 706132885747
...
Affected Products
Data DomainProducts
Data DomainArticle Properties
Article Number: 000017462
Article Type: Solution
Last Modified: 11 Dec 2023
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.