Data Domain: Cómo enumerar archivos en el sistema de archivos de Data Domain, sfs-dump

Summary: En este artículo, se explica cómo utilizar la CLI de Data Domain para volcar las listas de archivos y directorios de MTree individuales o del sistema de archivos (FS) en su totalidad. Esto permite a los usuarios averiguar lo que está almacenado en Data Domain desde la aplicación de respaldo. ...

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

Data Domain es un dispositivo de almacenamiento pasivo de back-end. Solo almacena lo que las aplicaciones de respaldo le indican y solo elimina datos cuando la aplicación de respaldo le indica que elimine archivos. Data Domain nunca crea ni elimina ningún archivo por su cuenta.

Independientemente del protocolo ingerido, el FS de Data Domain contiene solo archivos (dentro de directorios) organizados en MTree. Todos los archivos (tanto para los archivos activos como en cualquier unidad de nube) comparten la misma raíz y el mismo espacio de nombres; existe un único espacio de nombres, lo que significa que las listas de archivos y directorios incluyen los archivos en las unidades activas y en la nube sin ninguna distinción.

Obtener un volcado de archivos detallado puede ser útil por razones como las siguientes:
  • Comparar con una lista de archivos administrados por una aplicación de respaldo, para comprobar si hay archivos huérfanos de esa aplicación de respaldo.
  • Enumerar todos los archivos por encima de un umbral de antigüedad determinado para determinar si la aplicación de respaldo aplica la multa de retención de respaldo.
Debido a los cambios recientes realizados en DDOS, los comandos que se usarán para recopilar listas de archivos de los sistemas Data Domain han cambiado con el tiempo. Estos solo están disponibles en la CLI de DD y, según la versión, serían los siguientes:
  • Para DDOS anterior a 7.13.0.0, 7.10.1.15, 7.7.5.25 y 6.2.1.110
se sfs_dump
  • Para cualquier DDOS igual o posterior a 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110
filesys sfs-dump

Cause

Las versiones de DDOS 7.13.0.0, 7.10.1.15, 7.7.5.25 y 6.2.1.110 y posteriores ya no proporcionan acceso a los siguientes comandos en modo SE:
sfs_dump
El modo SE, que era necesario para acceder a esta funcionalidad, quedó obsoleto, como se explica en DSA-2023-412: Actualización de seguridad de Dell Technologies PowerProtect para varias vulnerabilidades de seguridad

Durante un período intermedio, algunas de las funcionalidades del antiguo comando sfs_dump en el modo SE no estaba disponible, pero se reintrodujo en una etapa posterior. Por lo tanto, este artículo de la base de conocimientos intenta explicar las diferencias y cómo tratar la salida del comando en cada caso.

Resolution

Para obtener una lista detallada de los archivos en un Data Domain desde la CLI y, finalmente, el proceso para obtener información sobre los archivos almacenados en Data Domain, depende de la versión de DDOS que se esté ejecutando. Una vez que se recopila el archivo de texto de salida con los detalles del archivo, el procesamiento de la salida en un formato más utilizable es siempre el mismo, ya que el formato de salida para todas las versiones de DDOS es el mismo (o se puede convertir a un formato común a través de un script).

Todas las versiones de DDOS tienen en común el requisito de iniciar sesión en Data Domain como usuario administrador y hacerlo a través de un cliente SSH que admita el registro de la salida de la consola en un archivo de texto en el lado del cliente (PuTTY funciona bien para esto). Un usuario debe configurar el cliente SSH para que registre la salida en el archivo de texto en la computadora cliente (asegurándose de que no haya límites en la cantidad de líneas registradas o en la longitud de línea individual). El archivo de registro de la sesión SSH (y, por lo tanto, las listas de archivos de DD) no se escribe en Data Domain, sino en la computadora de escritorio (generalmente) desde la que se inicia la conexión SSH.

Cuando recopile el resultado de la sesión SSH, asegúrese de darle al archivo un nombre significativo (como agregar el nombre de host de Data Domain y el nombre de MTree que se volcarán) y asegúrese de que haya suficiente espacio para el archivo de registro, que puede ser de aproximadamente 200 MB para sistemas con 1 millón de archivos.

El comando exacto que se ejecutará desde la CLI de DD para recopilar listas de archivos depende de la versión de DDOS utilizada, se resumen a continuación.
 

Versiones de DDOS anteriores a 7.13.0.0, 7.10.1.15, 7.7.5.25 y 6.2.1.110:

Estas versiones aún admiten el comando se sfs_dump (y la opción -c para generar los detalles del archivo de salida directamente como CSV sin ningún procesamiento adicional), aunque no se recomienda pasar al modo SE por razones de seguridad y, en su lugar, actualice a la versión más reciente de LTS DDOS disponible.

Asegúrese de haber iniciado sesión en Data Domain como usuario administrador, con un cliente SSH configurado para escribir la salida en el disco, cambie al modo de privilegio de SE y, a continuación, ejecute el siguiente comando para cada MTree para el que desee obtener los detalles del archivo:
#### 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>
El comando en estas versiones también puede producir la lista de todos los archivos en el FS a la vez (en lugar de un MTree a la vez). Para volcar los detalles de la información de archivo para todos los archivos en el FS, deje la ruta de MTree fuera:
# se sfs_dump -c
Al finalizar, asegúrese de detener el registro del cliente SSH en el disco y guarde los archivos para su procesamiento posterior.

El formato de la salida del comando es una sola línea para cada archivo. Si no utiliza -c el formato es idéntico al que se muestra anteriormente para versiones posteriores. En los casos en los que se utilizó -c (para la salida CSV), el formato es similar al siguiente (incluido un encabezado que se muestra como la primera línea en la salida):
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


Versiones de DDOS 7.13.0.0, 7.10.1.15, 7.7.5.25 y 6.2.1.110 o posteriores:

Esta versión ya no proporciona acceso a sfs_dump desde el modo SE (lo siguiente no está disponible):
se sfs_dump
El modo SE está obsoleto debido a los problemas de seguridad detectados. A continuación, se muestra el comando alternativo que se debe usarse. Observe que el nombre del comando es ligeramente diferente y que, en este caso, el MTree que se listará va después de la palabra clave “MTree”:
# filesys sfs-dump mtree <mtree-path>
Para las versiones en el encabezado, este comando sfs-dump, en comparación con se sfsa_dump:
  • El nuevo comando no admite la opción -c para volcar información de archivo en formato CSV (columna).
  • El nuevo comando solo puede ejecutar un MTree a la vez; no es compatible con la ejecución de todo el FS en una sola invocación
Para los clientes de estas versiones, si necesitan volcar todos los detalles de archivo de Mtree a un archivo, se debe iterar sobre toda la lista de MTree en el FS de Data Domain y ejecutar el comando una vez para cada uno de ellos. Un usuario puede obtener una lista de MTree en el sistema a través de la ejecución de lo siguiente:
# mtree list
La salida del siguiente comando es idéntica al del comando se sfs_dump anterior cuando se utiliza sin la opción -c .
filesys sfs-dump
Asegúrese de haber iniciado sesión en Data Domain como usuario administrador, con un cliente SSH configurado para escribir la salida en el disco y, a continuación, ejecute el siguiente comando para cada MTree para el que desee obtener los detalles del archivo:
# filesys sfs-dump mtree <mtree-path>

Si obtiene los detalles del archivo para más de un MTree, elija si desea realizar todos los volcados en el mismo archivo de salida o cambie la configuración del cliente SSH a un archivo diferente antes de ejecutar el comando para cada uno de los MTree.

Como alternativa, puede realizar la recopilación de la salida de manera desatendida ejecutando el comando a través de SSH de la siguiente manera:

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

En cualquier caso, la información de salida tiene una línea para cada archivo, con el siguiente formato:

/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

Versiones de DDOS 8.1.0.0, 7.13.1.10, 7.10.1.30 y 7.7.5.40:

Debido a la demanda de los clientes, algunas de las características del antiguo comando se sfs_dump se han reintroducido, y ahora están disponibles para el comando filesys sfs-dump , a saber:
  • La posibilidad de añadir la opción -c , de modo que la salida se imprima en una versión con formato similar a CSV (campos separados por columnas).
  • La posibilidad de ejecutar la información de volcado de archivos para todos los archivos del FS a la vez.
El comando sigue siendo el mismo que para las versiones inmediatamente anteriores, con las mejoras mencionadas, que se resumen a continuación:
 
#### 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

Este comando sigue estando “oculto”, de modo que no aparece en la ayuda interactiva de la CLI ni en la documentación.
 

Cómo procesar los datos de sfs_dump o filesys sfs-dump en algo útil:

El formato de los archivos individuales que se informan en la salida cuando se utiliza filesys sfs-dump o sfs_dump sin la opción -c se puede resumir de la siguiente manera:
/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
En el ejemplo anterior, tenemos un archivo con el tamaño original de 136 794 bytes, que, después de pasar por la canalización de ingesta del FS de Data Domain, se calcula que utiliza 15 045 bytes después de la deduplicación y 8760 bytes cuando los segmentos únicos del archivo se comprimen antes de escribirse en el disco. Por lo tanto:
  • La deduplicación de archivos (lo que llamamos “gcomp” o compresión global) es un factor x9,09 (de 136 794 a 15 045 bytes).
  • La compresión local de archivos (lo que llamamos “lcomp”, para la compresión local) es un factor x1,72 (de 15 045 a 8760 bytes).
  • La reducción del tamaño total de archivo estimada (conocida como “tasa de compresión”) es un factor x15,62 (de 136 794 a 8760 bytes).
De forma alterna, la salida de sfs_dump -c es similar, pero más concisa:
/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)
Para este ejemplo, podemos hacer los mismos cálculos que para el anterior:
  • La deduplicación de archivos (lo que llamamos “gcomp” o compresión global) es un factor x0,99 (de 33 554 431 a 33 668 007 bytes).
  • La compresión local de archivos (lo que llamamos “lcomp”, para la compresión local) es un factor x0,98 (de 33 667 007 a 34 208 564 bytes).
  • La reducción del tamaño total de archivo estimada (conocida como “tasa de compresión”) es un factor x0,98 (de 33 554 431 a 34 208 564 bytes).
En comparación con el archivo que se muestra para el ejemplo sin -c , este no logra deduplicación (ni segmentos redundantes) ni compresión local. Esto indica que el archivo está comprimido.
 
Advertencia: Los datos en los archivos de salida con respecto a un tamaño distinto del “tamaño previo a la compresión del archivo en bytes” se deben tomar como aproximados y no se puede confiar plenamente en ellos. Los metadatos para los archivos se crean en el momento de la ingesta de archivos y, aunque son correctos en ese momento, no se actualizan en ningún momento desde entonces, por lo que quedan obsoletos con el tiempo. Además, que el post_lc_size de un archivo sea una cantidad determinada no implica que el espacio en disco utilizado por ese archivo sea idéntico a esa cantidad, ya que hay muchas sobrecargas de nivel del FS que no se consideran a nivel de archivo. Las limitaciones son las mismas que para las ya conocidas para el comando:
mtree show compression
Aprovechar la información de los archivos de salida anteriores consiste en procesar los datos numéricos de una manera que se adapte a los objetivos del usuario. Algunos ejemplos de casos de uso pueden ser los siguientes:
  • Determinar el gcomp y lcomp de los archivos correspondientes a una ruta en particular (si una ruta se puede hacer coincidir con algún servidor de respaldo, cliente, política, trabajo, etc.).
  • Calcular la cantidad de datos (antes de la compresión) almacenados en una ubicación determinada que es más antigua que una cantidad determinada de tiempo (para determinar huérfanos o solucionar problemas con la aplicación de respaldo que no vence los respaldos vencidos).
  • Cualquier otro tipo de estadística para la que uno pueda tener un uso.
Para tener un único conjunto de instrucciones y compensar la pérdida de la opción sfs_dump -c en las versiones más recientes, nuestras recomendaciones son convertir los datos de salida al formato CSV anterior y, a continuación, utilizar el archivo en formato CSV para procesarlo más; sin embargo, según sus habilidades, puede procesar directamente la salida que no sea CSV.

Para convertir una salida de sfs_dump que no es CSV en una que es idéntico a lo que sfs_dump -c habría impreso, puede utilizar la siguiente línea de comandos de 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
 
Nota: El comando anterior ignora todo lo que no comience con una barra en el archivo de entrada (sfs-dump-noCSV.txt), ya que solo las líneas que comiencen con “/data” deben contener detalles del archivo para el procesamiento. Los archivos de salida tienen una primera línea como encabezado y utilizan el carácter de tabulación (\t) como delimitador de campo.

Todo lo que se encuentra a partir de este punto se proporciona a los usuarios tal cual. Dell no garantiza ni obliga a seguir las instrucciones que se comparten a continuación. La obtención de información a partir de los detalles de la lista de archivos es una tarea del usuario, y la forma de lograrlo depende completamente del conjunto de herramientas que se utiliza para la minería de datos en la salida del volcado de archivos, el objetivo que se debe lograr y la propia experiencia del usuario en el procesamiento de datos a partir de la salida del comando detallada anteriormente. Un usuario puede optar por utilizar el procesamiento de archivos de texto de la línea de comandos de Linux para volcar algunos agregados, otros pueden optar por producir entradas para trazar valores utilizando “gnuplot”, mientras que se cree que la mayoría de los usuarios buscan un enfoque más simple (pero limitado) para crear una hoja de cálculo a partir del archivo CSV para su análisis.

Dell se ha esforzado por garantizar que las instrucciones que aparecen a continuación sean correctas, funcionen y sean útiles para los usuarios, pero no podemos garantizar que funcionen para usted y no proporcionamos soporte para ellas, ya que están fuera del alcance del soporte.


Importación con formato CSV de la salida de sfs_dump en una hoja de cálculo (ejemplo para Excel):

Una vez que la versión CSV de la lista de detalles del archivo está disponible, una forma de obtener información de los datos es cargar los datos en un software de hoja de cálculo. Se utiliza Microsoft Excel como ejemplo, aunque las instrucciones deben ser similares para otro software. Para importar el archivo de texto CSV a Excel como CSV, siga los siguientes pasos:
  1. Abra Excel y cree una nueva hoja de cálculo en blanco.
  2. Vaya al menú Datos en la parte superior y, a continuación, haga clic en el icono llamadoDe texto/CSV.
  3. Utilice el cuadro de diálogo para localizar los datos del archivo en formato CSV (sfs-dump-CSV.csv como en el script de conversión de ejemplo con un formato que no es CSV), selecciónelo y haga clic en Importar.
  4. Si el formato del archivo de entrada es correcto y Excel puede extraer el formato de las primeras 200 líneas (lo que debería), un cuadro de diálogo debería mostrar la vista previa de la hoja de cálculo que se va a generar. Revise la información para asegurarse de que se vea bien, incluso que la primera línea se detecte como los encabezados.
  5. Si todo se ve bien con la vista previa, haga clic en el botón Cargar en la parte inferior del cuadro de diálogo y su nueva hoja de cálculo se le presentará con un buen formato y los encabezados de campo se convertirán en encabezados habilitados para la búsqueda y el filtro.
Los datos en la hoja de cálculo ya son útiles, puede hacer cosas como aplicar un Filtro numérico a campos numéricos como el tamaño (para mostrar solo los archivos que superen un tamaño determinado), o aplicar un Filtro de texto en el campo de nombre para que solo se muestren los archivos en la salida de detalles del archivo de Data Domain que coincidan con un patrón determinado (solo aquellos que comiencen con la ruta de un MTree en particular), y hacer otros cálculos a partir de esos datos.

Una hoja de cálculo de Excel importada correctamente debe contener datos en las columnas A a I. Si los datos solo están presentes en la columna A, pero se extienden por la pantalla, cierre Excel y vuelva a intentar los pasos del 1 al 5 anteriores.

Agregar campos calculados adicionales

La hoja de cálculo se puede ampliar con tantos campos calculados como requiera un usuario. Un campo interesante que se debe agregar es la fecha y hora legibles por humanos correspondientes al mtime de los archivos (hora de la última modificación, por lo general, la hora en que se escribió en el DD). Además, puede ser útil calcular y mostrar algunos valores de compresión por archivo según el uso que se le dé a los datos. Las nuevas columnas se completan automáticamente con fórmulas de Excel, como se describe a continuación.

Conversión de la marca de tiempo:

Para convertir el registro de la marca de tiempo de UNIX a una fecha y hora legibles:
  1. Haga clic con el botón secundario en la celda J2 y elija “Formatear celdas”.
  2. En la lista “Categoría” de la izquierda, seleccione “Personalizar”.
  3. Si aún no está allí, cree el formato para el formato de fecha y hora legible por humanos (el ejemplo incluye la cadena EST al final). Puede reemplazarlo por la definición textual de su zona horaria o eliminar “EST” por completo si no le interesa): aaaa-mm-dd hh:mm:ss “EST”.
  4. Haga clic en “Aceptar” cuando haya terminado. Ahora la celda J2 tiene un formato personalizado para los datos.
  5. Agregue la siguiente fórmula a la celda J2. En la fórmula, reemplace (-6*3600) con la diferencia de zona horaria correcta correspondiente a UTC para la zona horaria configurada en Data Domain en el momento de obtener los datos “sfs-dump”. Por ejemplo, la hora del este de EE. UU. está 6 horas por detrás de UTC durante el verano, de ahí el “-6” aquí.
Si no le interesa un ajuste horario tan preciso, puede usar una forma abreviada de la fórmula en su lugar. La forma más fácil de agregar la fórmula y evitar que se sobrescriba el formato de fecha y hora es copiar cualquiera de las dos versiones a continuación y pegarla en la celda J2, una vez que haya escrito el carácter “igual a” = en la celda para comenzar a editar la celda:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Nota: Si pega texto en J2 sin poner primero la celda en modo edición (por así decirlo), sobrescribe el formato de la celda. Como alternativa, puede preceder la fórmula con un “=”, copiar todo el texto y hacer clic con el botón derecho en la celda J2 para Pegado especial, luego seleccionar Como texto y hacer clic en Aceptar. Debería obtener el mismo efecto. Si esto se hizo bien, Excel hace automáticamente las siguientes cosas:
  • Pegue la fórmula en la celda J2 y también en todas y cada una de las celdas del resto de las líneas de la hoja de cálculo. 
  • Calcula la fórmula para toda la hoja de cálculo y muestra el valor de fecha y hora en el formato configurado.
  • Formatea la columna como las existentes, y tiene el encabezado configurado como Fecha con la posibilidad de aplicar Filtros de fecha, lo único que tendría que hacer es establecer un nombre propio para la columna (Fecha).

Información de compresión

Puede agregar columnas para la información de compresión por archivo, como se explicó anteriormente. En esta ocasión le mostramos las fórmulas incluyendo el “=”, por lo que debe copiar todo el texto, y Pegado especial como texto:
  • Copie la siguiente fórmula y Pegado especial como texto en la celda K2 a fin de crear una columna para la deduplicación por archivo o gcomp:
    =IF(H2=0,0,D2/H2)
  • Copie la siguiente fórmula y Pegado especial como texto en la celda L2 a fin de crear una columna para la compresión local por archivo o lcomp:
    =IF(I2=0,0,H2/I2)
  • Copie la siguiente fórmula y Pegado especial como texto en la celda M2 para crear una columna para la tasa de compresión total de archivos por archivo:
    =K2*L2
Asigne un nombre propio a las nuevas columnas. Si desea que el formato de los valores de compresión sea otro (por ejemplo, para limitar la cantidad de decimales), haga lo que se indica en el ejemplo para la fecha y la hora, y establezca el formato numérico de las celdas con anticipación antes de pegar la fórmula.

Recuerde mantener su trabajo seguro yendo al menú Archivo y marcar Guardar como procurando que el tipo del archivo guardado esté establecido en Libro de Excel (*.xlsx), de modo que se mantenga el formato y el filtrado.

Al finalizar las acciones descritas, la hoja de cálculo contiene las siguientes columnas (relevantes):
  • A contiene un nombre de archivo.
  • B contiene la fecha (en UNIX, en nanosegundos) de la última vez que se escribió el archivo.
  • D es el tamaño original del archivo.
  • H es el tamaño después de la compresión global.
  • I es el tamaño después de la compresión global y local.
  • J contiene el registro de fecha de la última vez que se escribió el archivo, en un formato legible para humanos.
  • K contiene la compresión global (deduplicación) del archivo.
  • L contiene la compresión local del archivo.
  • M contiene la compresión total del archivo.
Todos los tamaños de archivo están en bytes.
Ahora puede usar Excel para filtrar u ordenar según sea necesario para informar sobre los datos.
  • Por ejemplo, para mostrar solo los archivos dentro del MTree /data/col1/backup que tengan más de 30 días de antigüedad:
  1. Haga clic en la flecha hacia abajo en el encabezado Nombre, seleccione Filtros de texto, luego Comienza con y escriba /data/col1/backup/ en el cuadro. La barra final es importante. Haga clic en Aceptar.
  2. Haga clic en la flecha hacia abajo en el encabezado Última fecha escrita, seleccione Filtros de fecha y, a continuación, Antes. Utilice el selector de fecha a la derecha del cuadro de diálogo para seleccionar una fecha de hace 30 días. Haga clic en Aceptar.
La barra de estado en la parte inferior muestra cuántas filas coinciden con esta selección.

Additional Information

Comando para la ubicación de los archivos de volcado (activos y en la nube)

Hay una manera de volcar la lista de archivos con una indicación de cuáles están activos y cuáles en cualquier unidad de la nube, que es la siguiente:
#### 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

La salida en cualquiera de los casos es del siguiente tipo:

-------------------------      ----------------------      ----------------------      ---------------------------
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
-------------------------      ----------------------      ----------------------      ---------------------------
Sin embargo, el comando anterior tiende a ser inadecuado para la mayoría de los intentos, ya que, por ejemplo, el tamaño está en unidades legibles por humanos (en lugar de en bytes o MiB o cualquier multiplicador establecido) y el tiempo de ubicación coincide con el momento en que se realizaron los respaldos en Data Domain para los archivos activos, pero no lo hace para los archivos en la nube (el “Tiempo de ubicación” para los archivos en la nube es la fecha y hora en que el archivo se transfirió a la unidad en la nube).

Además, tenga en cuenta que el siguiente comando (y el script de conversión de sfs_dumpque no es CSV) genera datos en columnas separadas por tabulaciones. Los caracteres de tabulación presentes en la salida se deben guardar en el archivo de registro; de lo contrario, los pasos detallados anteriormente para importar el CSV a Excel no pueden separar los campos correctamente.
sfs_dump -c
Las instrucciones que se dan asumen un conocimiento razonable de Excel, pero se pueden traducir a otro software de hoja de cálculo.

Las versiones modernas de Excel permiten muchas filas, pero tenga en cuenta que cada archivo en la salida de sfs_dump que se va a procesar es una sola línea, por lo que Excel debe poder procesar y actualizar rápidamente una hoja de cálculo con tantas filas como archivos en su conjunto de datos. El límite máximo es de poco más de 1 millón de filas, pero incluso con conteos de archivos muy por debajo de eso, es posible que Excel no sea el adecuado para el trabajo (demasiado lento).

Si la salida de sfs_dump tiene demasiados archivos para su versión de Excel o desea procesar los datos en bits más pequeños para mejorar el rendimiento, puede intentar ejecutar el procedimiento una vez para cada MTree, de modo que tenga varias hojas de cálculo para el sistema.

Incluso una sola salida de sfs_dump Mtree puede ser demasiado grande para Excel, en cuyo caso puede usar el comando split de Linux (o cualquier otra herramienta similar para dividir los límites finales de un archivo de texto grande en línea) para tener varios archivos CSV más pequeños para procesar uno a la vez, por ejemplo:
# 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)

Por ejemplo, para dividir un archivo de texto de entrada en fragmentos de 200 MiB cada uno, de modo que los nombres de las piezas se denominen comiencen con:

"sfs_dump.out.split"

Luego ejecute:

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


Script para usar "filesys sfs-dump" para el volcado completo de datos en archivos del FS

Para aquellas pocas versiones que carecían de la capacidad de volcar detalles de archivo en formato CSV, Dell proporciona el script que se muestra a continuación tal cual (sin garantía) para que los usuarios logren un resultado similar a través del procesamiento de la salida de sfs_dump que no es CSV.

Como las versiones que no admiten la salida CSV también son aquellas que no permiten volcar la información de todos los archivos del FS en su conjunto, el script utiliza SSH para conectarse al Data Domain de destino para iterar sobre la lista de los MTree, ejecutando el volcado de archivos de un MTree a la vez, para recopilar la lista de archivos para todos los Mtree y, a continuación, transformarlo a un formato CSV adecuado para su posterior procesamiento:
#!/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

Script para combinar la salida de “sfs-dump” y “filesys report generate file-location” que no son CSV en un archivo CSV con la misma información que el script anterior y por nivel de archivo e información de tiempo de ubicación

Dell proporciona el siguiente script tal cual (sin garantía) a los usuarios como un medio para agregar valor a la salida de los comandos sfs_dump y filesys report generate file-location anteriores. Un usuario puede filtrar los archivos según el nivel (activo o cualquiera de las dos unidades de la nube configuradas) para obtener información valiosa más precisa sobre la distribución de archivos por nivel agregando la información de la ubicación del nivel y el tiempo de ubicación a cada entrada de archivo en el CSV de salida.

Los scripts esperan la salida de sfs-sump (no sfs_dump -c) como primer parámetro, y la salida de filesys report generate file-location como segundo. La salida se escribe en un nombre de archivo codificado “sfs-dump-output-tiers.csv”, que se puede cambiar dentro del propio script.

La salida se puede procesar con Excel de la misma manera que se explicó anteriormente.
#!/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


Para los usuarios de Veritas NetBackup:

Se sabe que Veritas NetBackup (NBU) crea archivos en un Data Domain con caracteres de dos puntos como parte de los nombres de archivo. Por ejemplo, las siguientes son rutas de nombre de archivo NBU válidas cuando Data Domain se utiliza como almacenamiento de back-end para 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::
Esto plantea un problema con los scripts de los ejemplos anteriores, ya que el carácter de dos puntos se utiliza como delimitador para la salida del comando sfs_dump y la ejecución de los scripts anteriores produciría resultados incorrectos.

Para esos casos, debe editar el script de la siguiente manera:
--- 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."
Mientras que los cambios se comparten para que el script itere en todos los MTree en un Data Domain para extraer datos de sfs_dump por MTree, los cambios son los mismos para el otro script. Sin embargo, como también es el caso de los propios scripts, Dell le proporciona los cambios anteriores sin ninguna garantía, con la esperanza de que sean útiles.

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.