Data Domain. Вывод списка файлов в файловой системе Data Domain с помощью sfs-dump

Summary: В этой статье описывается использование интерфейса командной строки (CLI) Data Domain для создания дампа списков файлов и каталогов для отдельных MTree или для файловой системы (FS) в целом. ...

Acest articol se aplică pentru Acest articol nu se aplică pentru Acest articol nu este legat de un produs specific. Acest articol nu acoperă toate versiunile de produs existente.

Symptoms

Data Domain (DD) — это пассивное внутреннее устройство хранения данных. Оно сохраняет только то, что указывают приложения резервного копирования, и удаляет данные только тогда, когда приложение резервного копирования дает указание на удаление файлов. Data Domain никогда не создает и не удаляет файлы самостоятельно.

Независимо от полученного протокола, файловая система Data Domain содержит только файлы (в каталогах), организованные в MTrees. Все файлы (как для файлов в активном режиме, так и для любых облачных устройств) имеют одинаковый корневой каталог и пространство имен; существует одно пространство имен, что означает, что в списках файлов и каталогов файлы включаются в активные и облачные устройства без каких-либо различий.

Получение подробного дампа файла может быть полезно по следующим причинам:
  • При сравнении со списком файлов, управляемых приложением резервного копирования, для проверки на наличие файлов, потерянных из этого приложения резервного копирования.
  • Вывод списка всех файлов с определенным порогом по периоду создания, чтобы определить, правильно ли применяется приложение резервного копирования относительно срока хранения резервных копий

Cause

Инструмент интерфейса командной строки для создания списков файлов sfs_dump.

Resolution

Используйте ведение журнала сеансов SSH для сбора выходных данных списка. Точная команда, которую необходимо выполнить из интерфейса командной строки DD для сбора списков файлов, зависит от используемой версии операционной системы Data Domain (DDOS).

Быстрые ссылки

Получение подробного списка файлов в Data Domain из интерфейса командной строки и, в конечном итоге, процесс получения аналитических данных о файлах, хранящихся в Data Domain, зависят от запущенного выпуска DDOS.

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

Ведение журнала сеанса SSH:

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

При сборе выходных данных сеанса SSH обязательно присвойте файлу осмысленное имя (например, добавьте имя хоста Data Domain и имя MTree для дампа) и убедитесь, что для файла журнала достаточно места, которое может составлять примерно 200 Мбайт для Data Domain с 1 млн файлов.

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

Эти выпуски по-прежнему поддерживают se sfs_dump команды (и -c возможность вывода сведений о файле прямо в формате CSV без какой-либо дополнительной обработки), хотя переход в режим инженера службы поддержки (SE) не рекомендуется по соображениям безопасности, и вместо этого следует обновить его до последней доступной версии DDOS.

Войдите в систему Data Domain в качестве пользователя с правами администратора с помощью клиента 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 или более поздние:

MTree, которое нужно перечислить, идет после ключевого слова "MTree":

# filesys sfs-dump mtree <mtree-path>

filesys sfs_dum command, по сравнению с se sfs_dump.

  • Новая команда не поддерживает параметр -c для экспорта сведений дампа файла в формате CSV (столбца)
  • Новая команда может запускать только MTree за раз, нет поддержки для выполнения всей файловой системы за один вызов

Если требуется выгрузить все сведения о файле MTree в файл, выполните итерацию по всему списку MTree в Data Domain FS и выполните команду один раз для каждого из них. Пользователь может получить список MTrees в системе, выполнив команду:

# mtree list

Войдите в систему Data Domain в качестве пользователя admin с помощью клиента SSH, настроенного на запись выходных данных на диск, а затем выполните следующую команду для каждого MTree, требующего сведения о файле:

# filesys sfs-dump mtree <mtree-path>

Если требуется информация о файле для нескольких MTree, выберите параметр выполнения всех дампов в один и тот же выходной файл или переключитесь в конфигурации клиента SSH на другой файл перед выполнением команды для каждого из MTree.

Кроме того, можно собрать выходные данные в автоматическом режиме, выполнив команду с использованием 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 или более поздние:

filesys fs-dump.

  • Возможность добавить параметр -c , чтобы выходные данные выводятся на печать в версии формата, схожего с CSV (поля, разделенные столбцами)
  • Возможность выполнить дамп с информацией о файле для всех файлов в файловой системе сразу
  • Используйте ведение журнала сеансов SSH для сбора выходных данных.

Команда остается той же, что и для непосредственно предыдущих версий, с упомянутыми улучшениями, приведенными ниже.

#### 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 байт. При прохождении через конвейер приема файловой системы Data Domain будет использоваться 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 при этом не выполняется ни дедупликация (без избыточных сегментов), ни локальное сжатие. Это означает, что файл является сжатым.
 

Внимание! Данные в выходных файлах о размерах, отличные от «размера файла перед композицией в байтах», должны приниматься как приблизительные, и на них нельзя полностью полагаться. Метаданные для файлов создаются во время получения, внесения и обработки файлов. Хотя они верны на тот момент, они не обновляются с тех пор, поэтому со временем устаревают. Кроме того, тот факт, что этот файл post_lc_size имеет заданный объем, не означает, что дисковое пространство, используемое этим файлом, идентично этому объему, так как существует много издержек на уровне файловой системы, которые не учитываются на уровне каждого файла. Ограничения те же, что и для тех, которые уже известны для команды:
mtree show compression
Использование информации в выходных файлах выше предусматривает обработку числовых данных сообразно целям пользователя. Ниже приведены несколько примеров сценариев использования.
  • Определение gcomp и lcomp для файлов, соответствующих определенному пути (если путь может быть сопоставлен с определенным сервером резервного копирования, клиентом, политикой, заданием и т. д.)
  • Вычисление объема данных (pre-comp) хранится в заданном расположении, которое старше заданного периода времени (для определения потерянных мест или поиска и устранения проблем, связанных с тем, что срок действия резервных копий приложения резервного копирования не истекает в срок)
  • Любой другой тип статистики может использоваться для
Чтобы иметь единый набор инструкций и компенсировать потерю sfs_dump -c в более поздних выпусках, наши рекомендации заключаются в том, чтобы конвертировать выходные данные в формат CSV, а затем использовать файл в формате 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 приложила все усилия, чтобы приведенные ниже инструкции были правильными, работоспособными и полезными для пользователей, но не может гарантировать их работу или предоставление поддержки, так как они выходят за рамки поддержки.

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

После того как версия CSV списка сведений о файле станет доступна, одним из способов получения аналитических данных на основе таких сведений является загрузка данных в программное обеспечение для электронных таблиц. В качестве примера используется Microsoft Excel, хотя инструкции должны быть аналогичными для другого программного обеспечения. Чтобы получить текстовый файл CSV, импортированный в Excel как CSV, выполните следующие действия.

  1. Откройте Excel и создайте новую пустую электронную таблицу
  2. Перейдите в меню Data сверху, нажмите на значок From Text/CSV
  3. В диалоговом окне найдите файловые данные в формате CSV (sfs-dump-CSV.csv как и в примере сценария преобразования из формата, отличного от CSV), выберите их и нажмите Import
  4. Если формат входного файла верен, и Excel сможет автоматически распознать формат из первых 200 строк (что обычно происходит), в диалоговом окне должен отображаться предварительный просмотр создаваемой электронной таблицы. Проверьте информацию, чтобы убедиться, что она хорошо выглядит, в том числе то, что первая строка определяется как заголовки
  5. Если с превью все в порядке, нажмите кнопку Загрузить в нижней части диалога, и новая таблица будет представлена с красивым форматированием, а заголовки полей превратятся в заголовки поиска и фильтров.

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

Правильно импортированная таблица Excel должна содержать данные в столбцах A-I. Если данные присутствуют только в столбце A, но растягиваются на весь экран, закройте Excel и повторите шаги 1–5, описанные выше.

Добавление дополнительных вычисляемых полей:

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

Преобразование метки времени:

Чтобы преобразовать метку времени UNIX в дату и время в человекочитаемом формате, выполните следующие действия.

  1. Нажмите правой кнопкой мыши на ячейку J2 и выберите «Format Cells».
  2. В списке «Category» слева выберите «Custom».
  3. Если это еще не сделано, создайте формат для человекочитаемого формата даты и времени (пример включает строку EST в конце. Его можно заменить текстовым определением часового пояса или полностью удалить "EST", если вас это не интересует): yyyy-mm-dd hh:mm:ss "EST"
  4. Нажмите «OK», завершив исправление. Теперь ячейка J2 имеет пользовательский формат для данных.
  5. Добавьте следующую формулу в ячейку J2. В формуле замените (-6*3600) правильным разницей часовых поясов, соответствующей UTC для настроенного часового пояса в Data Domain на момент получения данных «sfs-dump». Например, восточное время США отстает от UTC в течение лета на 6 часов, отсюда и «-6».
Если вас не интересует такая точная корректировка времени, вместо нее можно использовать сокращенную форму формулы. Самый простой способ добавить формулу и избежать перезаписи формата даты и времени — скопировать любую из двух приведенных ниже версий и вставить в ячейку J2 после того, как в ячейке будет набран символ «равно» (=), чтобы начать редактировать ячейку:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Примечание. Если текст вставляется в J2 без предварительного перевода ячейки в режим редактирования (так называется), формат ячейки перезаписывается. В качестве альтернативы можно поставить перед формулой символ "=", скопировать весь текст и щелкнуть правой кнопкой мыши ячейку J2, чтобы вставить специальную, затем выбрать Как текст и нажать кнопку "ОК". Эти действия должны иметь тот же эффект. Если все выполнено правильно, Excel автоматически выполняет несколько действий.
  • Вставьте формулу в ячейку J2 и скопируйте ее на все оставшиеся ячейки столбца 
  • Рассчитайте формулу для всей электронной таблицы и отобразите значения даты и времени в настроенном формате
  • Красиво отформатируйте столбец, как уже существующие, и настройте заголовок как Дата с возможностью применения фильтров даты, единственное, что нужно сделать, это установить правильное имя для столбца (Дата)

Информация о сжатии:

Можно добавить столбцы для информации о сжатии каждого файла, выполнив описанные выше действия. На этот раз формулы показывают с "=", поэтому весь текст должен быть скопирован и вставить Специальный как текст:

  • Скопируйте следующую формулу и вставьте специальный текст в ячейку K2, чтобы создать столбец для дедупликации для каждого файла, или gcomp.
    =IF(H2=0,0,D2/H2)
  • Скопируйте следующую формулу и вставьте специальный текст в ячейку L2, чтобы создать столбец для локального сжатия для каждого файла, или lcomp.
    =IF(I2=0,0,H2/I2)
  • Скопируйте следующую формулу и Paste Special as Text в ячейке L2, чтобы создать столбец для общего пофайлового коэффициента сжатия локального сжатия:
    =K2*L2

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

Не забудьте обеспечить безопасность вашей работы, перейдя в меню File и выполнив действие Save as, чтобы задать тип сохраняемого файла Excel Workbook (*.xlsx), и обеспечить сохранение форматирования и фильтрации.

После выполнения описанных действий электронная таблица содержит следующие (соответствующие) столбцы:

  • A cодержит имя файла
  • B содержит метку даты (в эпохе UNIX в наносекундах) на момент последней записи файла
  • D содержит исходный размер файла
  • H содержит размер после глобального сжатия
  • I содержит размер после глобального и локального сжатия
  • J содержит метку даты для последней записи файла в человекочитаемой форме
  • K содержит глобальное сжатие файлов (дедупликацию) для файла
  • L содержит локальное сжатие для файла
  • M содержит полное сжатие для файла

Все размеры файлов указаны в байтах.
Теперь Excel можно фильтровать или сортировать по мере необходимости для создания отчетов по данным.

  • Например, чтобы отобразить только файлы в MTree /data/col1/backup, созданные более 30 дней назад:
  1. Нажмите стрелку вниз в заголовке Name, выберите Text Filters, затем Begins With и введите /data/col1/backup/ в поле. Косая черта в конце важна. Нажмите ОК.
  2. Нажмите стрелку вниз в заголовке Last Written Date, выберите Date Filters, затем Before. Используйте средство выбора даты в правой части диалогового окна, чтобы выбрать дату 30 дней назад. Нажмите OK.
В строке состояния внизу отображается количество строк, соответствующих выбранному диапазону.

Additional Information

Команда для дампа местоположения файла (активный и облачный уровни)

Существует способ создания дампа списка файлов с указанием того, какие файлы находятся на активном уровне, а какие — в любых облачных устройствах, как указано ниже.

#### 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
-------------------------      ----------------------      ----------------------      ---------------------------

Однако приведенная выше команда, как правило, недостаточна для большинства целей, поскольку, к примеру, размер указан в человекочитаемых единицах (а не в байтах или МиБ или любом заданном множителе), а время размещения совпадает со временем создания резервных копий в Data Domain для файлов на активном уровне, но не для файлов в облачных устройствах («время размещения» для файлов в облаке — это дата и время перемещения файла в облачное устройство).

Кроме того, обратите внимание, что приведенная ниже команда (и сценарий преобразования, отличный от 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 в виде «как есть» (без гарантии) пользователям для достижения аналогичного результата путем обработки выходных данных, отличных от sfs_dump CSV.

Поскольку выпуски, не поддерживающие выходные данные в формате CSV, также не позволяют создавать дамп информации для всех файлов в файловой системе в целом, сценарий использует SSH для подключения к целевой системе Data Domain для итерации по списку 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.n.n.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


Сценарий для объединения выходных данных не CSV "sfs-dump" и "filesys report generate file-location" в CSV-файл со всей той же информацией, что и в сценарии выше, а также для каждого уровня файла и информации о времени размещения.

Следующий сценарий предоставляется виде «как есть» (без гарантии) компанией Dell пользователям в качестве средства, которое, как мы надеемся, позволит добавить ценности выходным данным sfs_dump и вышеприведенным командамfilesys report generate file-location. Пользователь может отфильтровать файлы на основе уровня (активный или любое из двух настроенных облачных устройство) для получения более точной информации о распределении файлов на уровень, добавляя информацию о расположении уровня и времени размещения в каждую запись файла в выходных данных формата CSV.

Сценарии ожидают sfs-dump (не sfs_dump -c) в качестве первого параметра, а в выходных данных filesys report generate file-location — в качестве второго. Выходные данные записываются в файл с жестким кодом с названием «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 Domain с символами двоеточия в составе имен файлов. Например, ниже приведены допустимые пути к именам файлов NBU, если Data Domain используется в качестве внутреннего хранилища для 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 в Data Domain, чтобы извлечь информацию о каждом MTree, sfs_dump изменения те же для другого сценария. Однако, как и в случае с самими сценариями, приведенные выше изменения предоставляются Dell без каких-либо гарантий в надежде на их полезность.

Produse afectate

Data Domain

Produse

Data Domain
Proprietăți articol
Article Number: 000081345
Article Type: Solution
Ultima modificare: 08 iun. 2026
Version:  26
Găsiți răspunsuri la întrebările dvs. de la alți utilizatori Dell
Servicii de asistență
Verificați dacă dispozitivul dvs. este acoperit de serviciile de asistență.