Домен даних: Як вивести список файлів у файловій системі домену даних, sfs-dump

Summary: У цій статті пояснюється, як використовувати командний рядок домену даних для створення дампу списків файлів і каталогів для окремих MTrees або для файлової системи (FS) в цілому. Це дозволяє користувачам дізнатися, що зберігається в домені даних із програми резервного копіювання. ...

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

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

Незалежно від отриманого протоколу, ФС домену даних містить лише файли (всередині каталогів), організовані в MTrees. Усі файли (як для файлів в Active, так і в будь-яких хмарних одиницях) мають однаковий кореневий і найменований простір; існує єдиний простір імен, що означає, що списки файлів і каталогів включають файли в активних і хмарних одиницях без будь-якої різниці.

Отримання детального дампу файлів може бути корисним з таких причин, як:
  • Порівняння зі списком файлів, якими керує програма резервного копіювання, щоб перевірити, чи немає файлів, осиротілих із цієї програми резервного копіювання.
  • Список усіх файлів, які перевищують певний віковий поріг, щоб визначити, чи застосовує програма резервного копіювання штраф за збереження резервних копій.
У зв'язку з нещодавніми змінами, внесеними в DDOS, команди, які використовуються для збору списків файлів із систем Data Domain, змінювалися з часом. Вони доступні лише з DD CLI і, залежно від версії, будуть:
  • Для DDOS, старіших за 7.13.0.0, 7.10.1.15, 7.7.5.25 та 6.2.1.110
se sfs_dump
  • Для будь-яких DDOS, що дорівнюють або пізніші за 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110
filesys sfs-dump

Cause

DDOS випускає версії 7.13.0.0, 7.10.1.15, 7.7.5.25 і 6.2.1.110 і пізніші версії більше не надає доступу до команди нижче в режимі SE:
sfs_dump
Режим SE, який був необхідний для доступу до цієї функціональності, вважається застарілим, як описано в DSA-2023-412: Оновлення системи безпеки Dell Technologies PowerProtect для усунення численних вразливостей

системи безпекиНа проміжний період частина функціоналу в старому sfs_dump Команда в режимі SE була недоступна, але була знову введена на більш пізньому етапі. Отже, ця КБ намагається пояснити відмінності і те, як працювати з виведенням команд у кожному випадку.

Resolution

Щоб отримати докладний список файлів у домені даних від командного рядка і, зрештою, процес отримання аналітичних даних щодо файлів, що зберігаються в домені даних, залежать від запущеного випуску DDOS. Після того, як вихідний файл тексту з подробицями файлу зібрано, обробка виведених даних у зручнішу для використання форму завжди залишається однаковою, оскільки формат виведення для всіх випусків DDOS є однаковим (або може бути перетворений на загальний формат за допомогою скрипта).

Загальним для всіх DDOS-релізів є вимога входити в Data Domain як адміністратор, і робити це за допомогою клієнта SSH, який підтримує логування виводу консолі в текстовий файл на стороні клієнта (PuTTY добре підходить для цього). Користувач повинен налаштувати клієнт SSH таким чином, щоб він записував виведені дані до текстового файла на клієнтському комп'ютері (гарантуючи, що немає обмежень на кількість записаних рядків або індивідуальну довжину рядка). Файл журналу сеансу SSH (а отже, і списки файлів DD) записується не в домені даних, а на (зазвичай) настільному комп'ютері, з якого ініціюється з'єднання SSH.

Під час збирання даних сеансу SSH переконайтеся, що файл має зрозуміле ім'я (наприклад, додано ім'я хоста домену даних і ім'я MTree, яке буде демпінговано), і переконайтеся, що для файла журналу достатньо місця, яке може становити приблизно 200 МБ для систем із 1 мільйоном файлів.

Точна команда, яку потрібно виконати з DD CLI для збору списків файлів, залежить від використовуваної версії DDOS, вони коротко описані нижче.
 

Випуски DDOS до 7.13.0.0, 7.10.1.15, 7.7.5.25 і 6.2.1.110:

У цих випусках, як і раніше, підтримується властивість se sfs_dump (і об'єкт -c можливість виводити деталі файлу прямо у форматі CSV без будь-якої подальшої обробки), хоча перехід у режим SE не рекомендується з міркувань безпеки, а замість цього оновитися до останньої доступної версії LTS DDOS.

Переконайтеся, що ви ввійшли в домен даних як користувач адміністратора, а клієнт SSH налаштований на запис вихідних даних на диск, перехід у режим привілеїв SE, а потім виконайте наступну команду для кожного MTree, для якого ви хочете отримати відомості про файл:
#### To produce the output directly as CSV
# se sfs_dump -c <mtree-path>

#### To produce the output as default format
# se sfs_dump <mtree-path>
Команда у цих версіях також може виводити список для всіх файлів у ФС одразу (замість одного MTree за раз). Щоб скинути відомості про файл для всіх файлів у ФС, залиште шлях MTree поза увагою:
# se sfs_dump -c
Після завершення переконайтеся, що ви припинили ведення журналу клієнта SSH на диск і відкладіть файли для подальшої обробки.

Форматом для виведених командою даних є один рядок для кожного файла. Якщо не використовується -c Формат ідентичний наведеному вище для пізніших випусків. У випадках, коли було використано -c (для виведення даних у форматі CSV), формат буде таким: (включно із заголовком, який буде показано як перший рядок у виведенні):
name    mtime   fileid  size    seg_bytes       seg_count       redun_seg_count pre_lc_size     post_lc_size
/data/col1/backup/file       1656995350000000000     78      33554431        33668007        4016    0       33668007        34208564


DDOS випускає версії 7.13.0.0, 7.10.1.15, 7.7.5.25 і 6.2.1.110 або новіші:

Цей випуск більше не надає доступу до sfs_dump з режиму SE (недоступно наступне):
se sfs_dump
Режим SE вважається застарілим через виявлені проблеми з безпекою. Альтернативна команда, яку можна використовувати, наведена нижче. Зверніть увагу на дещо іншу назву команди і на те, що в цьому випадку MTree буде вказано після ключового слова "MTree":
# filesys sfs-dump mtree <mtree-path>
Для випусків у заголовку, ця команда sfs-dump, порівняно з se sfsa_dump:
  • Нова команда не підтримує властивість -c можливість скидання інформації про файл у форматі CSV (стовпець)
  • Нова команда може запускати MTree лише одночасно, немає підтримки запуску з усією FS за один виклик
Для користувачів у цих випусках, якщо потрібно скинути всі дані файлу MTrees для файлу, потрібно перебрати весь список MTrees у FS домену даних і виконати команду один раз для кожного з них. Користувач може отримати список MTrees в системі, виконавши команду:
# mtree list
Вихідні дані з наведеної нижче команди ідентичні виведенню попередньої se sfs_dump при використанні без атрибута -c Варіант.
filesys sfs-dump
Переконайтеся, що ви ввійшли в Data Domain як користувач з правом адміністратора, а клієнт SSH налаштований на запис вихідних даних на диск, а потім виконайте наступну команду для кожного MTree, для якого ви хочете отримати відомості про файл:
# filesys sfs-dump mtree <mtree-path>

Якщо ви отримуєте дані про файл для декількох MTree, виберіть, на ваш розсуд, виконати всі дампи до одного і того ж вихідного файлу, або перемкніться в конфігурації клієнта SSH на інший файл, перш ніж запускати команду для кожного з MTrees.

Крім того, ви можете виконати збір виведених даних без нагляду, виконавши команду через SSH ось так:

#### Releases 7.13.0.0, 7.10.1.15, 7.7.5.25 and 6.2.1.110 onwards only
# ssh sysadmin@DD-HOSTNAME "filesys sfs-dump mtree /data/col1/backup" > sfs-dump-DD-backup.txt

У будь-якому випадку, вихідна інформація має один рядок для кожного файла з таким форматом:

/data/col1/backup/file: mtime: 1580211658000000000 fileid: 175 size: 136794 type: 9 seg_bytes: 138282 seg_count: 18 redun_seg_count: 14 (78%) pre_lc_size: 15045 post_lc_size: 8760 (58%) mode: 02000100644 start_offset: 0 end_offset: 18446744073709551615

DDOS випускає версії 8.1.0.0, 7.13.1.10, 7.10.1.30 і 7.7.5.40 або новіші:

У зв'язку з попитом клієнтів, деякі функції в старих se sfs_dump були повторно введені, і тепер вони доступні для filesys sfs-dump команда, а саме:
  • Можливість додати об'єкт -c , щоб вихідні дані друкувалися у форматованій версії, подібній до CSV (поля, розділені стовпчиками)
  • Можливість запуску інформації про дамп файлів відразу для всіх файлів у ФС
Command залишається таким самим, як і для попередніх версій, зі згаданими покращеннями, узагальненими нижче:
 
#### File listing for all the files in a given MTree path
# filesys sfs-dump mtree <mtree-path>

#### File listing for all the files in a given MTree path, with CSV-like output
# filesys sfs-dump -c mtree <mtree-path>

#### File listing for all the files in the FS
# filesys sfs-dump

#### File listing for all the files in the FS, with CSV-like output
# filesys sfs-dump -c

Ця команда продовжує залишатися «прихованою», щоб вона не з'являлася в інтерактивній довідці командного рядка або в документації.
 

Як обробляти sfs_dump або filesys sfs-dump дані в щось корисне:

Формат для окремих файлів, про які повідомляється у виведених даних, якщо використовується filesys sfs-dump або sfs_dump без -c Варіант можна узагальнити так:
/data/col1/backup/file: mtime: 1580211658000000000 fileid: 175 size: 136794 type: 9 seg_bytes: 138282 seg_count: 18 redun_seg_count: 14 (78%) pre_lc_size: 15045 post_lc_size: 8760 (58%) mode: 02000100644 start_offset: 0 end_offset: 18446744073709551615

Field 01 : filename with full path (/data/col1/backup/file)
Field 03 : file last modification time as UNIX epoch in nanoseconds (nanoseconds since January 1st 1970 at midnight)
Field 05 : file (inode) ID, inode numbers are per MTree (175)
Field 07 : pre-comp size for the file in bytes (136794)
Field 09 : type of file (9)
Field 11 : segment store bytes (this is NOT the file size), please ignore (138282)
Field 13 : segment count, or the number of segments the file consists of (18)
Field 15 : number of file segments which are redundant, or not unique (14)
Field 16 : percentage of non-unique segments to total segments (78%)
Field 18 : combined size of the file's unique segments after deduplication (15045)
Field 20 : combined size of the file's unique segments after deduplication and local compression (8760)
Field 21 : ratio of post-deduplicated + post-compressed unique segments size to post-deduplicated unique segment size (58%), shows how well local compression worked
Field 23 : file mode, please ignore
У наведеному вище прикладі ми маємо файл з оригінальним розміром 136 794 байти, який після передачі через конвеєр прийому FS домену даних обчислюється для використання 15 045 байт після дедуплікації та 8760 байт, коли унікальні сегменти файлу стискаються перед записом на диск. Отже:
  • Дедуплікація файлів (те, що ми називаємо "gcomp", або глобальне стиснення) має коефіцієнт x9.09 (від 136 794 до 15 045 байтів)
  • Локальне стиснення файла (те, що ми називаємо «lcomp», для локального стиснення) має коефіцієнт x1.72 (від 15,045 до 8760 байтів)
  • Передбачуване загальне зменшення розміру файлу (відоме як «коефіцієнт стиснення») становить коефіцієнт x15,62 (від 136 794 до 8760 байт)
Поперемінно sfs_dump -c Вихідні дані схожі, але більш короткі:
/data/col1/backup/file       1656995350000000000     78      33554431        33668007        4016    0       33668007        34208564

Field 01 : filename with full path (/data/col1/backup/file)
Field 02 : file last modification time as UNIX epoch in nanoseconds (nanoseconds since January 1st 1970 at midnight)
Field 03 : file (inode) ID, inode numbers are per MTree
Field 04 : pre-comp size for the file in bytes (33554431)
Filed 05 : segment store bytes (this is NOT the file size), please ignore (33668007)
Field 06 : segment count, or the number of segments the file consists of (4016)
Field 07 : number of file segments which are redundant, or not unique (0)
Field 08 : combined size of the file's unique segments after deduplication (33668007)
Field 09 : combined size of the file's unique segments after deduplication and local compression (34208564)
Для цього прикладу ми можемо зробити ті ж розрахунки, що і для попереднього:
  • Дедуплікація файлів (те, що ми називаємо "gcomp", або глобальне стиснення) має коефіцієнт x0,99 (від 33 554 431 до 33 668 007 байтів)
  • Локальне стиснення файлу (те, що ми називаємо "lcomp" для локального стиснення) має коефіцієнт x0.98 (від 33 668 007 до 34 208 564 байтів)
  • Передбачуване загальне зменшення розміру файлу (відоме як «коефіцієнт стиснення») становить коефіцієнт x0,98 (від 33 554 431 до 34 208 564 байтів)
У порівнянні з файлом, показаним для ні -c Наприклад, у цьому випадку не досягається ні дедуплікація (немає зайвих сегментів), ні будь-яке локальне стиснення. Це вказує на те, що файл є стисненим.
 
Обережність: Дані у вихідних файлах, що стосуються розміру, відмінного від «pre-comp size for the file in bytes», слід вважати приблизними і на них не можна повністю покладатися. Метадані для файлів створюються під час отримання файлу, і хоча тоді вони правильні, вони не оновлюються жодного разу, тому з часом вони застаріли. Крім того, що файл post_lc_size є заданою величиною не означає, що дисковий простір, який використовується цим файлом, ідентичний цьому об'єму, оскільки існує багато накладних витрат на рівні FS, які не враховуються на рівні кожного файлу. Обмеження такі ж, як і для вже відомих для команди:
mtree show compression
Використання інформації у вихідних файлах вище полягає в обробці числових даних у спосіб, який відповідає цілям користувача. Кілька прикладів використання можуть бути такими:
  • Визначення gcomp і lcomp для файлів, що відповідають певному шляху (якщо шлях може бути зіставлено з якимось конкретним сервером резервних копій, клієнтом, політикою, завданням тощо)
  • Обчислення обсягу даних (pre-comp) зберігається в певному місці, яке є старшим за певний проміжок часу (для виявлення покинутих або усунення проблем із програмою резервного копіювання, термін дії якої не закінчується вчасно)
  • Будь-який інший тип статистики, для якого можна використовувати
Мати єдиний набір інструкцій і компенсувати втрату sfs_dump -c У новіших випусках наші рекомендації полягають у тому, щоб конвертувати вихідні дані у формат CSV, наведений вище, а потім використовувати файл у форматі CSV для подальшої обробки, однак, залежно від ваших навичок, ви можете обробляти вихідні дані, відмінні від CSV, безпосередньо.

Перетворення файлу, відмінного від CSV sfs_dump вивести в такий, який ідентичний якому sfs_dump -c було б надруковано, ви можете скористатися наступним командним рядком Linux:
# cat sfs-dump-noCSV.txt | grep ^/ | awk '
BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size"}
{
    colon_index = index($0, ":")
    filename = substr($0, 1, colon_index - 1)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
    n = split(substr($0, colon_index + 1), fields, " ")
    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19]
}' > sfs-dump-CSV.csv
 
Примітка: Наведена вище команда ігнорує всі дані у файлі вхідних даних (sfs-dump-noCSV.txt), які не починаються зі скісної риски, оскільки лише рядки, які починаються з «/data», мають містити подробиці файла для обробки. Вихідні файли мають перший рядок як заголовок і використовують символ табулятора (\t) як роздільник полів.

Все, що виходить за рамки цієї точки, надається користувачам як є. Компанія Dell не має жодних гарантій або зобов'язань щодо інструкцій, наведених нижче. Отримання розвідувальних даних з деталей списку файлів є завданням користувача, і те, як цього досягти, повністю залежить від набору інструментів, що використовуються для майнінгу даних у виводі дампа файлів, мети, яку потрібно досягти, і власного досвіду користувача в обробці даних з виводу команди, описаного вище. Один користувач може скористатися обробкою текстових файлів у командному рядку Linux для скидання деяких агрегатів, інші можуть створити вхідні дані для побудови значень діаграм за допомогою «gnuplot», тоді як більшість користувачів, як вважається, шукають простіший (але обмежений) підхід, щоб побудувати електронну таблицю з файлу CSV для аналізу.

Компанія Dell доклала зусиль, щоб гарантувати, що наведені нижче інструкції є правильними, робочими та корисними для користувачів, але ми не можемо гарантувати, що вони працюють для вас, і ми не надаємо їм підтримку, оскільки вони знаходяться за межами сфери підтримки.


Імпорт у форматі CSV sfs_dump виведення в електронну таблицю (приклад для Excel):

Після того, як CSV-версія списку відомостей про файл стане доступною, одним із способів отримати інформацію з даних є завантаження даних у програмне забезпечення для роботи з електронними таблицями. Як приклад використовується Microsoft Excel, хоча інструкції повинні бути аналогічними для іншого програмного забезпечення. Щоб імпортувати текстовий файл CSV в Excel як CSV, виконайте такі дії:
  1. Відкрийте Excel і створіть нову пусту електронну таблицю
  2. Перейдіть до меню « Дані » вгорі, а потім клацніть іконку «З тексту/CSV»
  3. Скористайтеся діалоговим вікном, щоб знайти дані файлу у форматі CSV (sfs-dump-CSV.csv як у прикладі сценарію перетворення з формату, відмінного від CSV), позначте його та натисніть кнопку Імпортувати
  4. Якщо формат вхідного файлу правильний, і Excel може намалювати формат з перших 200 рядків (що і має бути), у діалоговому вікні має бути показано попередній перегляд електронної таблиці, яку потрібно створити. Перегляньте інформацію, щоб переконатися, що вона виглядає добре, включаючи те, що перший рядок визначено як заголовки
  5. Якщо з попереднім переглядом все гаразд, натисніть кнопку Завантажити у нижній частині діалогового вікна, і ваша нова електронна таблиця буде представлена вам із зручним форматуванням, а заголовки полів перетворено на заголовки полів із підтримкою пошуку та фільтрів.
Дані в електронній таблиці вже корисні, ви можете зробити такі дії, як застосувати числовий фільтр до числових полів, таких як розмір (щоб показувати лише файли, вищі за заданий розмір), або застосувати текстовий фільтр до поля імені, щоб відображалися лише файли у виводі файлу домену даних, які відповідають заданому шаблону (лише ті, що починаються зі шляху до певного MTree), і виконати інші похідні обчислення на основі цих даних.

Правильно імпортована електронна таблиця Excel повинна містити дані в стовпцях від A до I. Якщо дані присутні лише в стовпці A, але розтягуються по всьому екрану, закрийте Excel і повторіть кроки з 1 по 5 вище.

Додавання додаткових обчислюваних полів

Електронна таблиця може бути розширена такою кількістю обчислюваних полів, скільки потрібно користувачеві. Цікаве поле, яке слід додати, — це зрозумілі людині дата і час, що відповідають mtime файлів (час останньої модифікації, зазвичай, час запису на DD). Крім того, може бути корисним обчислення та показ деяких значень стиснення для кожного файлу залежно від того, для чого використовуються дані. Нові стовпці заповнюються автоматично за допомогою формул Excel, як описано нижче.

Перетворення часових позначок:

Щоб перетворити позначку часу, подібну до UNIX, на зручну для читання дату й час:
  1. Клацніть правою кнопкою миші комірку J2 і виберіть «Формат комірок»
  2. У списку «Категорія» ліворуч виберіть «Спеціальний».
  3. Якщо ще немає, то створіть формат для зручного для читання формату дати-часу (приклад містить рядок EST в кінці). Ви можете замінити його текстовим визначенням часового поясу або повністю вилучити "EST", якщо вас це не цікавить): рррр-мм-дд гг:хх:сс "EST"
  4. Натисніть «Ок», коли закінчите. Тепер комірка J2 має власний формат даних.
  5. Додайте наведену нижче формулу до клітинки J2. У формулі замініть (-6*3600) на правильну різницю часових поясів, що відповідає UTC для налаштованого часового поясу в домені даних на момент отримання даних "sfs-dump". Наприклад, східний час США влітку відстає від UTC на 6 годин, звідси і «-6».
Якщо вас не цікавить така точна поправка за часом, ви можете використовувати скорочену форму формули. Найпростіший спосіб додати формулу і уникнути перезапису формату дати і часу - це скопіювати будь-яку з двох наведених нижче версій і вставити в комірку J2 після того, як ви введете в комірку символ "дорівнює" =, щоб почати редагування комірки:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Примітка: Якщо ви вставляєте текст у J2 без попереднього переведення комірки в режим редагування (так би мовити), ви перезаписуєте формат комірки. Крім того, ви можете поставити перед формулою символ «=», скопіювати весь текст і клацнути правою кнопкою миші на комірці J2 до пункту «Спеціальна вставка», потім вибрати «Як текст» і натиснути кнопку «OK». Він повинен отримати такий же ефект. Якщо це було зроблено правильно, Excel автоматично виконує кілька дій:
  • Вставте формулу в клітинку J2, а також у кожну клітинку решти рядків електронної таблиці 
  • Обчисліть формулу для всієї електронної таблиці та відобразіть значення дати й часу в налаштованому форматі
  • Гарненько відформатуйте стовпчик так, як існуючі, і налаштуйте заголовок як дату з можливістю застосування фільтрів дати, єдине, що вам потрібно буде зробити, це встановити власне ім'я для стовпчика (Дата)

Інформація про стиснення

Ви можете додати стовпчики для даних щодо стиснення для кожного файла, виконавши дії, описані вище. Цього разу ми показуємо формули, включаючи "=", тому вам слід скопіювати весь текст і Вставити спеціальний як текст:
  • Скопіюйте наведену нижче формулу та Вставити спеціальний як текст у клітинку K2, щоб створити стовпець для дедуплікації для кожного файлу або gcomp:
    =IF(H2=0,0,D2/H2)
  • Скопіюйте наведену нижче формулу та Вставити спеціальний як текст у комірку L2, щоб створити стовпець для локального стиснення для кожного файлу, або lcomp:
    =IF(I2=0,0,H2/I2)
  • Скопіюйте наведену нижче формулу та Вставити спеціальний як текст у клітинку M2, щоб створити стовпець для загального коефіцієнта стиснення файлу для кожного файлу:
    =K2*L2
Дайте новим стовпчикам власну назву. Якщо потрібно, щоб формат для значень стиснення був іншим (наприклад, щоб обмежити кількість десяткових дробів), виконайте дії, як у прикладі для дати й часу, і заздалегідь установіть числовий формат клітинки, перш ніж вставляти формулу.

Не забудьте захистити свою роботу, перейшовши до меню Файл і виконуючи дії. Зберегти як переконайтеся, що для типу збереженого файлу встановлено значення Книга Excel (*.xlsx), щоб форматування та фільтрування зберігалися.

Після завершення описаних дій електронна таблиця містить такі (релевантні) стовпці:
  • A містить ім'я файлу
  • B містить позначку дати (в епоху UNIX у наносекундах) для дати останнього запису файла
  • D — початковий розмір файлу
  • H - розмір після глобального стиснення
  • I - розмір після глобального і локального стиснення
  • J містить позначку дати, коли файл було записано востаннє, у зручній для читання формі
  • K містить глобальне стиснення (дедуплікацію) для файла
  • L містить локальне стиснення файла
  • M містить загальне стиснення для файла
Всі розміри файлів вказані в байтах.
Тепер ви можете використовувати Excel для фільтрування або сортування за потреби для створення звітів про дані.
  • Наприклад, щоб відобразити лише файли в MTree /data/col1/backup, яким більше 30 днів, виконайте такі дії:
  1. Клацніть стрілку вниз у заголовку «Ім'я», виберіть «Текстові фільтри», потім «Починається з» і введіть /data/col1/backup/ в коробку. Кінцева коса риска важлива. Натисніть кнопку «OK»
  2. Клацніть стрілку вниз у заголовку «Дата останнього запису», виберіть «Фільтри дати», а потім «До». Скористайтеся засобом вибору дати праворуч від діалогового вікна, щоб вибрати дату 30-денної давності. Натисніть кнопку «OK».
Рядок стану внизу показує, скільки рядків відповідає цьому позначенню.

Additional Information

Команда для дампу розташування файлу (Active і Cloud)

Існує спосіб скидання списку файлів із зазначенням, які знаходяться в Активному, а які в будь-яких хмарних одиницях, а саме:
#### For the DD FS as a whole
# filesys report generate file-location

#### For an individual MTree or subdirectory
# filesys report generate file-location path /data/col1/test

Вихідні дані в будь-якому випадку мають такий тип:

-------------------------      ----------------------      ----------------------      ---------------------------
File Name                      Location(Unit Name)         Size                        Placement Time
-------------------------      ----------------------      ----------------------      ---------------------------
/data/col1/test/file1.bin                  Cloud-Unit                  200.00 GiB      Sat Mar  5 13:24:10 2022
/data/col1/test/file2.bin                      Active                   10.00 TiB      Sat May 14 00:48:17 2022
-------------------------      ----------------------      ----------------------      ---------------------------
Однак наведена вище команда, як правило, неадекватна для більшості намірів, оскільки, наприклад, розмір вказано в доступних для читання одиницях (а не в байтах, МіБ або будь-якому встановленому множнику), а час розміщення збігається з часом створення резервних копій у домені даних для файлів в активному режимі, але не відповідає часу для файлів у хмарі («Час розміщення» для файлів у хмарі — це дата й час, коли файл було переміщено до хмарного блоку).

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

Сучасні версії Excel допускають багато рядків, але майте на увазі, що кожен файл на sfs_dump Вихідні дані, які потрібно обробити, складаються з одного рядка, тому Excel повинен мати можливість швидко обробляти та оновлювати електронну таблицю з такою кількістю рядків, як і файлів у вашому наборі даних. Жорсткий ліміт становить трохи більше 1 мільйона рядків, але навіть при кількості файлів, значно нижчих за це, Excel може не підійти для цієї роботи (занадто повільно).

Якщо ваш sfs_dump вихід має занадто багато файлів для вашої версії Excel або хочете обробляти дані меншими бітами для продуктивності, ви можете спробувати запустити процедуру один раз для кожного MTree, щоб у вас було кілька електронних таблиць для системи.

Навіть один MTree sfs_dump Вихідні дані можуть бути занадто великими для Excel, і в цьому випадку ви можете скористатися командою split Linux (або будь-яким іншим подібним інструментом для розділення кінцевих меж великого текстового файлу в Інтернеті), щоб мати кілька менших файлів CSV для обробки по одному, наприклад:
# split  -b <size> <filename> <new filename prefix>  (splits by file size)
# split  -l <size> <filename> <new filename prefix>  (splits by number of lines)
# split  -n <size> <filename> <new filename prefix>  (splits by number of pieces)

Наприклад, щоб розділити вхідний текстовий файл на фрагменти по 200 МіБ кожен, щоб частини називалися початковими:

"sfs_dump.out.split"

Потім запустіть:

# split -b 200M sfs_dump.out sfs_dump.out.split


Скрипт для використання "filesys sfs-dump" для цілого скидання файлових даних ФС

Для тих небагатьох релізів, у яких не було можливості скидати відомості про файли у форматі CSV, сценарій, показаний нижче нижче, надається Dell як є (без гарантії) користувачам для досягнення аналогічного результату шляхом обробки файлів, відмінних від CSV sfs_dump вихід.

Оскільки релізи, які не підтримують виведення CSV, також не дозволяють скидати інформацію для всіх файлів у ФС в цілому, скрипт використовує SSH для з'єднання з цільовим доменом даних для перебору списку MTrees, запускаючи дамп файлів по одному MTree за раз, щоб зібрати список файлів для всіх MTrees, потім трансформувати у формат CSV, адекватний для подальшої обробки:
#!/bin/bash

#### WARNING
####     This script is provided to you by Dell Technologies with NO GUARANTEE, as best-effort sample code to get a full FS sfs-dump collected
####     for DDOS releases which do not support "se sfs-dump", or as an alternative to it, in releases which support "filesys fs-dump"
####     That this script does not work for you, or if you need help setting it up, extending it, or resolving any issues, is not entitled to support
####     This script is not part of Dell PowerProtect / Data Domain, and hence it is not supported

#### Replace values below to suit your needs
USERNAME="sysadmin"
DD_HOSTNAME="10.60.36.172"
#### NO CHANGES NEEDED BEYOND THIS POINT

clear
echo "Script collects a full FS sfs-dump from \"${DD_HOSTNAME}\", using the command \"filesys sfs-dump\", one MTree at a time"
echo "    * Script has to be configured by settting the \"USERNAME\" and \"DD_HOSTNAME\" variables within the top of the script"
echo "    * Script expects passwordless SSH connection as \"USERNAME\" to the \"DD_HOSTNAME\" configured"
echo "    * To configure passwordless SSH login to a DataDomain, check KB at https://www.dell.com/support/kbdoc/000004033 "
echo "    * Test passwordless login is configured and working prior to going ahead with this script"
echo "    * If passwordless login is not configured, script will ask for the \"${USERNAME}\" password "
echo "          - Once for getting the MTree list"
echo "          - And once for each one of the MTrees in \"${DD_HOSTNAME}\" "
echo
echo -n "Are you sure you want to continue? (y/n) : "
read -n 1 answer
echo
if [ "${answer}" = "y" ]; then
    echo "Going ahead with the script."
    echo
else
    echo "Stopping script now. Re-run when passwordless login to \"${DD_HOSTNAME}\" as \"${USERNAME}\" works. Bye."
    exit 1
fi

echo -n "1/6 : Collecting list of MTrees from DD..."
ssh ${USERNAME}@${DD_HOSTNAME} "mtree list" 2>/dev/null | grep ^/ | awk '{print $(NF-3)}' > mtree-list.txt
echo "Done."

n_mtrees=$( wc -l mtree-list.txt | cut -d" "  -f1 )
echo -n "2/6 : Collecting per-Mtree sfs-dump information for ${n_mtrees} MTrees ..."
for mtree in `cat mtree-list.txt`; do
    name=$(echo $mtree | cut -d/ -f4)
    ssh ${USERNAME}@${DD_HOSTNAME} "filesys sfs-dump mtree ${mtree}" 2>/dev/null | grep ^/ > sfs-dump-${name}.txt
    echo -n "."
done
echo "Done."

echo -n "3/6 : Putting all the files together..."
for file in `ls sfs-dump-*.txt`; do 
    if [ -s "${file}" ]; then cat ${file} >> sfs-dump-noCSV.txt; fi
done
echo "Done."

echo -n "4/6 : Converting sfs-dump output to CSV format..."
cat sfs-dump-noCSV.txt | grep ^/ | grep -v ^$ | awk '
BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size"}
{
    colon_index = index($0, ":")
    filename = substr($0, 1, colon_index - 1)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
    n = split(substr($0, colon_index + 1), fields, " ")
    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19]
}' > sfs-dump-CSV.csv
echo "Done."

echo -n "5/6 : Cleaning up..."
for mtree in `cat mtree-list.txt`; do name=$(echo $mtree | cut -d/ -f4); rm -f sfs-dump-${name}.txt ; done
rm sfs-dump-noCSV.txt
rm mtree-list.txt
echo "Done."


echo -n "6/6 : Summary"
echo
n_files=$( wc -l sfs-dump-CSV.csv | cut -d" "  -f1 )
echo
echo "Collecting whole FS sfs-dump data from ${HOSTNAME} completed"
echo "File includes output for ${n_mtrees} MTrees, with a combined $(( ${n_files} - 1 )) files across Active and Cloud Tiers (if applicable)"
echo "Start of file shown below for your convenience :"
echo "===================="
head -5 sfs-dump-CSV.csv
echo "===================="
echo
echo "Done."

exit 0

Скрипт для об'єднання виведених даних "sfs-dump" і "fileys report generate file-location" у файл CSV з усіма даними щодо наведених вище скриптів, а також для кожного рівня файлу та інформації про час розміщення

Наведений нижче скрипт надається Dell як є (без гарантії) користувачам як засіб, щоб, сподіваюся, додати цінності до результату sfs_dump і fileys report генерують команди розташування файлів вище. Користувач може відфільтрувати файли на основі рівня (Активний або будь-який із двох налаштованих хмарних блоків), щоб отримати точнішу інформацію про розподіл файлів за рівнем, додавши інформацію про розташування рівня та час розміщення до кожного запису файлу у вихідному CSV.

Скрипти очікують на sfs-дамп (не sfs_dump -c) як перший параметр, а звіт fileys генерує виведення розташування файлу як другий. Виведені дані буде записано до жорстко закодованого файла з назвою "sfs-dump-output-tiers.csv", яке може бути змінено у самому скрипті.

Вихідні дані можуть бути оброблені за допомогою Excel так само, як описано вище.
#!/bin/bash

#### WARNING
####     This script is provided to you by Dell Technologies with NO GUARANTEE, as best-effort sample code to match the output from commands :
####       * sfs-dump (in non CSV format)
####       * filesys report generate file-location
####     So that a new CSV with the file paths appearing on both is created for all the data in sfs-dump file with the added tier and placement time information from location report
####
####     This script is not part of Dell PowerProtect / Data Domain, and hence it is not supported
####
####     Usage : extend-sfs-dump-with-tier.sh sfs-dump-output.csv file-location-output.log
####     Output : static "sfs-dump-output-tiers.csv" file name (may be changed below)

#### Replace values below to suit your needs
OUTPUT_FILENAME="sfs-dump-output-tiers.csv"
#### NO CHANGES NEEDED BEYOND THIS POINT

clear

if [ ! $# == 2 ]; then
    echo "Combine output from sfs-dump and tier location report into a CSV file with tier and placement time information"
    echo
    echo "Usage : $0 SFS-DUMP-OUTPUT-FILE    REPORT-FILE-LOCATION-FILE"
    echo "NOTE : SFS-DUMP-OUTPUT-FILE has to be in non-CSV format"
    exit 1
fi

INPUT_SFSDUMP="$1"
INPUT_LOCATION="$2"


echo -n "1/6 : Sanity checking input files..."
if [ ! -s "${INPUT_SFSDUMP}" ]; then
    echo "Input file ${INPUT_SFSDUMP} does not exist"
    exit 1
fi
if [ ! -s "${INPUT_LOCATION}" ]; then
    echo "Input file ${INPUT_LOCATION} does not exist"
    exit 1
fi
n_files_sfsdump=`grep ^/ ${INPUT_SFSDUMP} | wc -l`
n_files_location=`grep ^/ ${INPUT_LOCATION} | wc -l`
if [ ${n_files_sfsdump} -eq ${n_files_location} ]; then
    echo -n "both have the same amount of files (${n_files_location}). "
else
    echo -n "sfs-dump has ${n_files_sfsdump} files whereas location report has ${n_files_location} files, this may be normal if the difference is small. "
fi
echo "Done."


echo -n "2/6 : Sanitize \"file-location\" input..."
cat ${INPUT_LOCATION} | awk 'BEGIN {rejected="temp-location-rejected.log"; accepted="temp-location-accepted.log"} { if ( $0 ~ "Missing -unit") { gsub(/Missing -unit/, "Missing-Cloud-Unit", $0); print $0 > rejected } else { if ($0 ~ "^/" ) print $0 > accepted } }'
if [ -s "temp-location-rejected.log" ]; then
    REJECTS_EXIST="yes"
    echo -n "Some files in location report sit in unavailable or deleted cloud units, you may need to re-run this script after fixing the issue and gathering a new location report. "
    cat temp-location-rejected.log temp-location-accepted.log | sed -e 's/\t/:\t/' | sort > temp-location-report-sorted.log
    rm temp-location-rejected.log
else
    cat temp-location-accepted.log | sed -e 's/\t/:\t/' | sort > temp-location-report-sorted.log
    REJECTS_EXIST="no"
fi
rm temp-location-accepted.log
echo "Done."


echo -n "3/6 : Sanitize \"sfs-dump\" input..."
cat ${INPUT_SFSDUMP} | grep ^/ | sort > temp-sfs-dump.log
echo "Done."


echo -n "4/6 : Merging information for sfs-dump and location report..."
join -1 1 -2 1 temp-sfs-dump.log temp-location-report-sorted.log > temp-merged-information.log
rm temp-sfs-dump.log
rm temp-location-report-sorted.log
n_files_combined=`grep ^/ temp-merged-information.log | wc -l`
if [ ${n_files_combined} -eq 0 ]; then
    echo "No files matched from input files. sfs-dump output must NOT be in CSV format. Exiting."
    rm temp-merged-information.log
    exit 1
fi
echo -n "Input files matched on ${n_files_combined} files. "
echo "Done."


echo -n "5/6 : Converting merged sfs-dump / location-report output to CSV format..."
cat temp-merged-information.log | grep ^/ | grep -v ^$ | awk '
BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size\ttier\tplacement_time"}
{
    colon_index = index($0, ":")
    filename = substr($0, 1, colon_index - 1)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
    n = split(substr($0, colon_index + 1), fields, " ")
    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19] "\t" fields[27] \
        "\t" fields[length(fields)-4] " " fields[length(fields)-3] " " fields[length(fields)-2] " " fields[length(fields)-1] " " fields[length(fields)]
}' > ${OUTPUT_FILENAME}
rm temp-merged-information.log
echo "Done."


echo -n "6/6 : Summary"
echo
echo
echo "Merging information from sfs-dump (${INPUT_SFSDUMP}) and location-report ${INPUT_LOCATION} output completed."
echo "Output file (${OUTPUT_FILENAME}) includes information for a total ${n_files_combined} files, out of ${n_files_sfsdump} in input sfs-dump, and ${n_files_location} in input location report."
if [ "${REJECTS_EXIST}" == "yes" ]; then
    echo "Note there are some files in disconnected or deleted cloud units, for which the \"tier\" field has been replaced with \"Missing-Cloud-Unit\"."
fi
echo
echo "Start of file shown below for your convenience :"
echo "===================="
head -5 ${OUTPUT_FILENAME}
echo "===================="
echo
echo "You may follow the instructions in https://www.dell.com/support/kbdoc/000081345 to process this CSV file in an spreadhseet"
echo
echo "Done."

exit 0


Для користувачів Veritas NetBackup:

Відомо, що Veritas NetBackup (NBU) створює файли в домені даних із двокрапками в іменах файлів. Наприклад, нижче наведено допустимі шляхи до імен файлів НБУ, коли домен даних використовується як серверне сховище для НБУ:
/data/col1/MTREE_NAME/POLICY-NAME_1400502741_C1_F1:1400502741:VM_PRD-02:4:1::
/data/col1/MTREE_NAME/POLICY-NAME_1400502741_C1_F2:1400502741:VM_PRD-02:4:1::
/data/col1/MTREE_NAME/POLICY-NAME_1400502741_C1_HDR:1400502741:VM_PRD-02:4:1::
Це створює проблему з наведеними вище прикладами скриптів, оскільки символ двокрапки використовується як роздільник для sfs_dump виведення команди, і запуск наведених вище скриптів призведе до неправильних результатів.

Для таких випадків ви повинні відредагувати скрипт таким чином, як показано нижче:
--- iterate-dd-for-fs-sfs-dump.sh       2024-01-23 06:32:16.521409000 -0500
+++ iterate-dd-for-fs-sfs-dump-NBU.sh   2024-02-27 03:26:42.808246000 -0500
@@ -55,11 +55,11 @@
 cat sfs-dump-noCSV.txt | grep ^/ | grep -v ^$ | awk '
 BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size"}
 {
-    colon_index = index($0, ":")
-    filename = substr($0, 1, colon_index - 1)
+    colon_index = index($0, ":::")
+    filename = substr($0, 1, colon_index + 1)
     gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
     n = split(substr($0, colon_index + 1), fields, " ")
-    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19]
+    print filename "\t" fields[3] "\t" fields[5] "\t" fields[7] "\t" fields[11] "\t" fields[13] "\t" fields[15] "\t" fields[18] "\t" fields[20] "\t"
 }' > sfs-dump-CSV.csv
 echo "Done."
У той час як зміни є спільними для того, щоб скрипт перебирав усі MTrees у домені даних, щоб отримати для кожного MTree sfs_dump data, зміни однакові для іншого скрипта. Однак, як і у випадку з самими скриптами, наведені вище зміни надаються Dell вам без будь-яких гарантій, сподіваючись, що вони будуть корисними.

Affected Products

Data Domain

Products

Data Domain
Article Properties
Article Number: 000081345
Article Type: Solution
Last Modified: 27 May 2025
Version:  21
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.