Data Domain : Répertorier les fichiers sur le système de fichiers Data Domain, sfs-dump

摘要: Cet article explique comment utiliser la CLI Data Domain pour effectuer un vidage des listes de fichiers et de répertoires, que ce soit pour des MTrees individuels ou pour l’ensemble du système de fichiers (FS). Cela permet aux utilisateurs de savoir ce qui est stocké dans le Data Domain à partir de l’application de sauvegarde. ...

本文章適用於 本文章不適用於 本文無關於任何特定產品。 本文未識別所有產品版本。

症狀

Le Data Domain est un périphérique de stockage back-end passif. Il stocke uniquement ce que les applications de sauvegarde lui indiquent et ne supprime les données que lorsque l’application de sauvegarde lui demande de supprimer les fichiers. Le Data Domain ne crée ni ne supprime jamais de fichiers lui-même.

Quel que soit le protocole ingéré, le système de fichiers du Data Domain contient uniquement des fichiers (dans des répertoires) organisés en MTrees. Tous les fichiers (qu’ils soient actifs ou dans des unités Cloud) partagent la même racine et le même espace de noms. Un espace de noms unique existe, ce qui signifie que les listes de fichiers et de répertoires incluent les fichiers actifs et dans les unités Cloud sans distinction.

Un vidage des informations des fichiers peut être utile pour diverses raisons, telles que :
  • Comparer les fichiers à une liste gérée par une application de sauvegarde afin d’identifier les fichiers orphelins de cette application.
  • Répertorier tous les fichiers dépassant un certain seuil d’ancienneté pour vérifier si l’application applique correctement la rétention des sauvegardes.
En raison des récentes modifications apportées à DDOS, les commandes à utiliser pour collecter les listes de fichiers à partir des systèmes Data Domain ont changé au fil du temps. Disponible uniquement à partir de la CLI DD et, selon la version, les options suivantes sont les suivantes :
  • Pour DDOS antérieur aux versions 7.13.0.0, 7.10.1.15, 7.7.5.25 et 6.2.1.110
se sfs_dump
  • Pour tout DDoS aux versions 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110 ou ultérieures
filesys sfs-dump

原因

DDOS 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110 et versions ultérieures ne permet plus d’accéder à la commande ci-dessous en mode SE :
sfs_dump
Le mode SE, qui était nécessaire pour accéder à cette fonctionnalité, a été abandonné, comme expliqué dans DSA-2023-412 : Mise à jour de sécurité Dell Technologies PowerProtect pour plusieurs failles de sécurité

Pendant une période transitoire, certaines fonctionnalités de l’ancienne commande sfs_dump en mode SE n’était pas disponible, mais elle a été ajoutée plus tard pour améliorer les performances du système. Par conséquent, cet article de la base de connaissances tente d’expliquer les différences et comment gérer la sortie de commande dans chaque cas.

解析度

La procédure pour collecter une liste détaillée des fichiers d’un Data Domain à partir de l’interface de ligne de commande, dans le but d’obtenir des informations sur les fichiers stockés dans le Data Domain, varie en fonction de la version de DDOS utilisée. Une fois que le fichier texte de sortie contenant les informations sur les fichiers est collecté, le traitement de la sortie pour la rendre plus exploitable reste toujours le même, car le format de sortie de toutes les versions de DDOS est le même (ou il peut être converti en un format standard à l’aide d’un script).

Une exigence commune à toutes les versions de DDOS est de se connecter au Data Domain en tant qu’utilisateur administrateur, et de le faire à l’aide d’un client SSH qui permet de journaliser la sortie de la console dans un fichier texte du côté client (PuTTY est un bon choix pour cela). Un utilisateur doit configurer le client SSH afin que celui-ci enregistre les sorties dans un fichier texte sur l’ordinateur client (en veillant à ce qu’il n’y ait aucune limite dans le nombre de lignes consignées ou la longueur de ligne individuelle). Le fichier journal de session SSH (et donc les listes de fichiers du DD) n’est pas écrit sur le Data Domain, mais (en principe) sur l’ordinateur de bureau à partir duquel la connexion SSH est initiée.

Lors de la collecte de la sortie de la session SSH, assurez-vous de donner au fichier un nom significatif (par exemple, en ajoutant le nom d’hôte Data Domain et le nom de la structure MTree à vider), et assurez-vous qu’il y a suffisamment d’espace pour le fichier journal, qui peut atteindre environ 200 Mo pour les systèmes contenant 1 million de fichiers.

La commande exacte à exécuter à partir de la CLI DD pour collecter les listes de fichiers dépend de la version de DDOS utilisée. Elles sont résumées ci-dessous.
 

Versions de DDOS précédant les versions 7.13.0.0, 7.10.1.15, 7.7.5.25 et 6.2.1.110 :

Ces versions prennent toujours en charge la commande se sfs_dump (et l’option -c permettant d’obtenir directement les informations des fichiers au format CSV sans traitement supplémentaire), bien qu’il soit déconseillé d’utiliser le mode SE pour des raisons de sécurité. Nous vous conseillons plutôt de mettre à niveau vers la dernière version LTS de DDOS disponible.

Vous devez être connecté à Data Domain en tant qu’utilisateur administrateur, avec un client SSH configuré pour écrire la sortie sur le disque, passer en mode SE privilégié, puis exécuter la commande suivante pour chaque MTree pour lequel vous souhaitez obtenir les informations des fichiers :
#### 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>
Dans ces versions, la commande peut également produire la liste de tous les fichiers du système de fichiers en une seule fois (au lieu d’un MTree à la fois). Pour vider toutes les informations détaillées concernant tous les fichiers de votre système FS, quittez le chemin MTree :
# se sfs_dump -c
À la fin, assurez-vous d’arrêter la journalisation du client SSH sur le disque et de mettre les fichiers de côté pour un traitement ultérieur.

Le format de la sortie de la commande est une unique ligne pour chaque fichier. Si vous n’utilisez pas -c , le format est identique à celui indiqué ci-dessus pour les versions ultérieures. Dans les cas où -c a été utilisé (pour la sortie CSV), le format est le suivant (y compris un en-tête affiché comme première ligne dans la sortie) :
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


Versions de DDOS 7.13.0.0, 7.10.1.15, 7,7.5.25, 6.2.1.110 ou ultérieures :

Cette version ne permet plus d’accéder à sfs_dump à partir du mode SE (les éléments suivants ne sont pas disponibles) :
se sfs_dump
Le mode SE est désormais obsolète, car des problèmes de sécurité ont été identifiés. L’autre commande à utiliser se trouve ci-dessous. Notez que le nom de commande est légèrement différent et qu’ici, la structure MTree à répertorier se trouve après le mot-clé « MTree ».
# filesys sfs-dump mtree <mtree-path>
Pour les versions mentionnées dans le titre, cette commande sfs-dump, comparée à se sfsa_dump:
  • La nouvelle commande ne prend pas en charge l’option -c permettant de vider les informations de fichier au format CSV (colonne)
  • La nouvelle commande ne peut exécuter qu’une structure MTree à la fois, il n’y a aucune prise en charge de l’exécution sur l’ensemble du système de fichiers en une seule invocation
Si les clients de ces versions ont besoin de vider toutes les informations des fichiers des MTrees dans un fichier, il faut itérer sur l’ensemble de la liste des MTrees dans le système de fichiers du Data Domain, puis exécuter la commande une fois pour chacun d’eux. Un utilisateur peut obtenir une liste des MTrees dans le système en exécutant :
# mtree list
La sortie de la commande ci-dessous est identique à celle de la commande se sfs_dump précédente utilisée sans -c .
filesys sfs-dump
Vous devez être connecté à Data Domain en tant qu’utilisateur administrateur, avec un client SSH configuré pour écrire la sortie sur le disque, puis exécuter la commande suivante pour chaque MTree pour lequel vous souhaitez obtenir les informations des fichiers :
# filesys sfs-dump mtree <mtree-path>

Si vous obtenez les informations des fichiers pour plusieurs MTrees, vous pouvez soit effectuer tous les vidages vers le même fichier de sortie, soit basculer la configuration du client SSH vers un fichier différent avant d’exécuter la commande pour chacun des MTrees.

Vous pouvez également effectuer la collecte de la sortie de manière automatique, en exécutant la commande via SSH comme suit :

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

Dans les deux cas, les informations de sortie ont une ligne pour chaque fichier, au format suivant :

/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

Versions de DDOS 8.1.0.0, 7.13.1.10, 7.10.1.30, 7.7.5.40 ou ultérieures :

À la demande des clients, certaines des caractéristiques de l’ancienne commande se sfs_dump ont été réintroduites et sont maintenant disponibles pour la commande filesys sfs-dump , à savoir :
  • La possibilité d’ajouter l’option -c pour que la sortie soit imprimée dans une version au format CSV (champs séparés par des colonnes)
  • La possibilité de vider les informations de tous les fichiers de votre système de fichiers à la fois
La commande reste la même que pour les versions précédentes, avec les améliorations mentionnées, résumées ci-dessous :
 
#### 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

Cette commande reste « masquée » afin qu’elle n’apparaisse pas dans l’aide interactive de l’interface de ligne de commande ou dans les documents.
 

Comment exploiter des données sfs_dump ou filesys sfs-dump  :

Le format des fichiers individuels répertoriés dans la sortie lors de l’utilisation de filesys sfs-dump ou sfs_dump sans -c peut être résumé comme suit :
/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
Dans l’exemple ci-dessus, un fichier ayant une taille originale de 136 794 octets, après avoir traversé le pipeline d’ingestion du système de fichiers du Data Domain, utilise 15 045 octets après déduplication, et 8 760 octets lorsque les segments uniques du fichier sont compressés avant d’être écrits sur disque. Par conséquent :
  • La déduplication des fichiers (ce que nous appelons « gcomp » ou compression globale) est un facteur x9,09 (de 136 794 à 15 045 octets)
  • La compression locale des fichiers (ce que nous appelons « lcomp », pour compression locale) est un facteur x1,72 (de 15 045 à 8 760 octets)
  • La réduction totale de la taille des fichiers estimée (appelée « taux de compression ») est un facteur x15,62 (136 794 à 8 760 octets)
La sortie de sfs_dump -c est similaire, mais plus concise :
/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)
Pour cet exemple, nous pouvons effectuer les mêmes calculs que pour le précédent :
  • La déduplication des fichiers (ce que nous appelons « gcomp » ou compression globale) est un facteur x0,99 (de 33 554 431 à 33 668 007 octets)
  • La compression locale des fichiers (ce que nous appelons « lcomp », pour compression locale) est un facteur x0,98 (de 33 668 007 à 34 208 564 octets)
  • La réduction totale de la taille des fichiers estimée (appelée « taux de compression ») est un facteur x0,98 (33 554 431 à 34 208 564 octets)
Par rapport au fichier affiché pour l’exemple numéro -c , celui-ci ne présente aucune déduplication (aucun segment redondant) ni compression locale. Cela indique que le fichier est compressé.
 
Attention : Les informations relatives à la taille dans les fichiers de sortie (autres que la ligne « pre-comp size for the file in bytes ») doivent être considérées comme approximatives et ne peuvent pas être entièrement fiables. Les métadonnées pour les fichiers sont créées au moment de l’ingestion des fichiers et, bien qu’elles soient correctes, elles ne sont pas mises à jour à aucun moment depuis. Elles deviennent donc obsolètes au fil du temps. De plus, le fait que l’information de fichier post_lc_size soit spécifiée ne signifie pas que l’espace disque utilisé par ce fichier soit identique à cette valeur, car il existe de nombreuses surcharges au niveau du système de fichiers qui ne sont pas prises en compte au niveau de chaque fichier. Les limitations sont les mêmes que pour celles déjà connues pour la commande :
mtree show compression
L’utilisation des informations des fichiers de sortie ci-dessus consiste à traiter les données numériques d’une manière adaptée aux objectifs de l’utilisateur. Exemples de cas d’utilisation :
  • Déterminer le gcomp et le lcomp pour les fichiers qui correspondent à un chemin particulier (si un chemin peut être associé à un serveur de sauvegarde, un client, une règle, une tâche, etc.).
  • Calcul de la quantité de données (avant compression) stockées dans un emplacement donné et qui sont plus anciennes qu’une durée donnée. Ceci permet d’identifier les fichiers orphelins ou résoudre des problèmes liés à l’application de sauvegarde qui ne supprime pas les sauvegardes expirées dans les temps.
  • Tout autre type de statistique peut avoir une utilisation
Pour avoir un seul jeu d’instructions et compenser la perte de sfs_dump -c l’option dans les versions plus récentes, nous vous recommandons de convertir les données de sortie au format CSV ci-dessus, puis d’utiliser le fichier au format CSV pour un traitement ultérieur. Toutefois, en fonction de vos compétences, vous pouvez traiter directement la sortie non CSV.

Pour convertir une sortie non CSV sfs_dump en une qui soit identique à ce que sfs_dump -c aurait imprimé, vous pouvez utiliser la ligne de commande Linux suivante :
# 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
 
Remarque : La commande ci-dessus ignore tout ce qui se trouve dans le fichier d’entrée (sfs-dump-noCSV.txt) qui ne commence pas par une barre oblique, car seules les lignes commençant par « /data » doivent contenir les détails du fichier à traiter. La première ligne des fichiers de sortie est l’en-tête, et les champs sont séparés par le caractère de tabulation (\t).

Tout ce qui dépasse ce point est fourni aux utilisateurs en l’état. Aucune garantie ni obligation n’incombe à Dell concernant les instructions partagées ci-dessous. Obtenir des informations à partir des informations de la liste des fichiers est une tâche de l’utilisateur, et la façon d’y parvenir dépend entièrement de l’ensemble d’outils utilisé pour l’exploration des données dans la sortie de vidage de fichiers, de l’objectif à atteindre et de l’expertise de l’utilisateur dans le traitement des données à partir de la sortie de la commande détaillée ci-dessus. Certains utilisateurs préféreront utiliser des commandes Linux pour traiter des fichiers texte et effectuer des agrégats, d’autres préféreront générer des entrées pour tracer des valeurs avec « gnuplot », tandis que la majorité des utilisateurs chercheront probablement une approche plus simple (mais limitée), en construisant une feuille de calcul à partir du fichier CSV pour l’analyse.

Dell a pris soin de s’assurer que les instructions ci-dessous sont correctes, fonctionnelles et utiles pour les utilisateurs, mais nous ne pouvons pas garantir qu’elles fonctionnent pour vous ni fournir de support, car elles sont en dehors du champ d’application du support.


Importation d’une sortie au format CSV sfs_dump dans une feuille de calcul (exemple pour Excel) :

Une fois que la version CSV de la liste des détails des fichiers est disponible, une façon d’obtenir des informations à partir des données consiste à charger les données dans un tableur. Microsoft Excel est utilisé comme exemple, bien que les instructions soient similaires pour les autres logiciels. Pour importer le fichier texte CSV dans Excel au format CSV, procédez comme suit :
  1. Ouvrez Excel et créez une nouvelle feuille de calcul vierge
  2. Accédez au menu Données en haut, puis cliquez sur l’icône nommée Format texte/CSV
  3. Utilisez la boîte de dialogue pour localiser les données de fichier au format CSV (sfs-dump-CSV.csv comme dans l’exemple de script de conversion à partir d’un format non CSV), sélectionnez-le, puis cliquez sur Importer
  4. Si le format du fichier d’entrée est correct et qu’Excel a pu interpréter le format à partir des 200 premières lignes (ce qui devrait être le cas), une fenêtre de dialogue s’affiche pour prévisualiser la feuille de calcul qui sera générée. Passez en revue les informations pour vous assurer qu’elles semblent correctes, notamment que la première ligne est bien détectée comme en-tête
  5. Si tout semble correct dans l’aperçu, cliquez sur le bouton Charger au bas de la fenêtre de dialogue, et votre nouvelle feuille de calcul sera présentée avec un formatage soigné et les en-têtes de champs transformés en éléments actifs pour la recherche et le filtrage.
Les données de la feuille de calcul sont déjà exploitables. Par exemple, vous pouvez appliquer un filtre numérique aux champs contenant des nombres tels que la taille pour afficher uniquement les fichiers au-dessus d’une taille donnée. Ou appliquer un filtre textuel au champ nom pour ne montrer que les informations des fichiers du Data Domain qui correspondent à un motif spécifique (uniquement ceux qui commencent par le chemin d’un MTree donné), et effectuer d’autres calculs dérivés à partir de ces informations.

Une feuille de calcul Excel correctement importée doit contenir des données dans les colonnes A à I. Si les données ne sont présentes que dans la colonne A, mais s’étendent sur toute la largeur de l’écran, fermez Excel et réessayez les étapes 1 à 5 ci-dessus.

Ajouter des champs calculés supplémentaires

La feuille de calcul peut être étendue avec autant de champs calculés que l’utilisateur le souhaite. Un champ intéressant à ajouter serait la date et l’heure, au format lisible par un humain, correspondant au mtime des fichiers (heure de la dernière modification, généralement l’heure à laquelle le fichier a été écrit sur le Data Domain). En outre, le calcul et l’affichage de certaines valeurs de compression par fichier peuvent être utiles en fonction de l’utilisation des données. Les nouvelles colonnes sont renseignées automatiquement à l’aide de formules Excel, comme décrit ci-dessous.

Conversion d’horodatage :

Pour convertir l’horodatage utilisé par UNIX en une date et une heure lisibles par un humain :
  1. Cliquez avec le bouton droit de la souris sur la cellule J2 et choisissez « Formater les cellules »
  2. Dans la liste « Catégorie » sur la gauche, choisissez « Personnaliser ».
  3. Si ce n’est pas déjà fait, créez le format définissant la date-heure lisible par un humain (l’exemple inclut la chaîne EST à la fin. Vous pouvez la remplacer par votre propre fuseau horaire ou supprimer entièrement « EST » si vous ne le souhaitez pas l’avoir) : yyyy-mm-dd hh:mm:ss "EST"
  4. Cliquez sur « OK » lorsque vous avez terminé. La cellule J2 dispose désormais d’un format personnalisé pour les données.
  5. Ajoutez la formule suivante à la cellule J2. Dans la formule, remplacez (-6*3600) par la différence de fuseau horaire correcte correspondant à UTC pour le fuseau horaire configuré dans Data Domain au moment de l’obtention des données « sfs-dump ». Par exemple, l’heure de l’est des États-Unis est décalée de 6 heures par rapport à l’UTC durant l’été, ce qui explique la mention « -6 » dans le contexte actuel.
Si vous n’êtes pas intéressé par un ajustement aussi précis de l’heure, vous pouvez utiliser une version simplifiée et plus concise de cette équation pour obtenir le résultat souhaité. La façon la plus simple d’ajouter la formule et d’éviter que le format de date et heure ne soit écrasé consiste à copier l’une des deux versions ci-dessous et à la coller dans la cellule J2, une fois que vous avez saisi le caractère « égal à » = dans la cellule pour commencer à modifier la cellule :
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Remarque : Si vous collez du texte dans J2 sans mettre la cellule en mode édition au préalable (c’est-à-dire en cliquant à l’intérieur), vous écrasez le format de la cellule. Vous pouvez également faire précéder la formule d’un « = », copier l’intégralité du texte, cliquer avec le bouton droit de la souris sur la cellule J2 pour choisir l’option Collage spécial, puis sélectionner En tant que texte et cliquer sur OK. Cela devrait avoir le même effet. Si cela a été bien fait, Excel effectue automatiquement certaines opérations :
  • Collez la formule dans la cellule J2 et répétez-la pour chacune des autres cellules des lignes restantes de la feuille de calcul. 
  • Calculez la formule pour l’ensemble de la feuille de calcul et affichez la valeur de date et d’heure au format configuré
  • Appliquez à la colonne la même mise en forme soignée que les autres, et configurez l’en-tête en tant que Date avec la possibilité d’appliquer des filtres de date. Il vous suffira simplement de définir un nom approprié pour la colonne (Date).

Informations de compression

Vous pouvez ajouter des colonnes pour les informations de compression par fichier, en procédant comme expliqué ci-dessus. Cette fois-ci, comme nous affichons les formules en incluant le « = », vous devez copier l’ensemble du texte et utiliser Collage spécial en tant que texte :
  • Copiez la formule suivante et faites Collage spécial en tant que texte dans la cellule K2 pour créer une colonne pour la déduplication par fichier, ou gcomp :
    =IF(H2=0,0,D2/H2)
  • Copiez la formule suivante et faites Collage spécial en tant que texte dans la cellule L2 pour créer une colonne pour la compression locale par fichier, ou lcomp :
    =IF(I2=0,0,H2/I2)
  • Copiez la formule suivante et faites Collage spécial en tant que texte dans la cellule M2 pour créer une colonne pour le taux de compression total du fichier par fichier :
    =K2*L2
Nommez correctement les nouvelles colonnes. Si vous souhaitez modifier le format des valeurs de compression (par exemple, limiter le nombre de décimales), procédez comme pour l’exemple de la date et de l’heure, et définissez le format numérique de la cellule à l’avance, avant de coller la formule.

Pensez à sauvegarder régulièrement votre travail en accédant au menu Fichier et en choisissant Enregistrer sous. Assurez-vous que le type de fichier sauvegardé est défini sur Classeur Excel (*.xlsx), afin que le formatage et les filtres soient préservés.

À la fin des actions décrites, votre feuille de calcul contient les colonnes (pertinentes) suivantes :
  • A contient un nom de fichier
  • B contient l’horodatage (au format UNIX epoch en nanosecondes) indiquant la dernière fois que le fichier a été écrit.
  • D correspond à la taille d’origine du fichier
  • H est la taille après compression globale
  • I correspond à la taille après compression globale et locale
  • J contient l’horodatage de la dernière écriture du fichier, sous une forme lisible par l’humain
  • K contient la compression globale (déduplication) du fichier
  • L contient la compression locale du fichier
  • M contient la compression totale du fichier
Toutes les tailles de fichier sont exprimées en octets.
Vous pouvez désormais utiliser Excel pour filtrer ou trier selon les besoins afin de créer des rapports sur vos données.
  • Par exemple, pour afficher uniquement les fichiers de la MTree /data/col1/backup qui ont été créés il y a plus de 30 jours :
  1. Cliquez sur la flèche vers le bas dans l’en-tête Nom, sélectionnez Filtres textuels, puis Commence par et saisissez /data/col1/backup/ à l’intérieur de la zone. La barre oblique de fin est importante. Cliquez sur OK
  2. Cliquez sur la flèche vers le bas dans l’en-tête de dernière date d’écriture, sélectionnez les filtres de date, puis cliquez sur Avant. Pour choisir une date qui remonte à 30 jours, utilisez l’outil de sélection de date situé sur le côté droit de la fenêtre de dialogue. Cliquez sur OK.
La barre d’état en bas indique le nombre de lignes correspondant à cette sélection.

其他資訊

Commande pour vider l’emplacement du fichier (actif et Cloud)

Il existe un moyen d’effectuer un vidage de la liste des fichiers indiquant ceux qui sont actifs et ceux qui se trouvent dans les unités Cloud, à savoir :
#### 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

Dans les deux cas, la sortie est du type suivant :

-------------------------      ----------------------      ----------------------      ---------------------------
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
-------------------------      ----------------------      ----------------------      ---------------------------
Toutefois, la commande ci-dessus est généralement inadéquate dans la plupart des cas, car, par exemple, la taille est exprimée en unités lisibles par l’homme (plutôt qu’en octets, Mio ou un autre multiplicateur défini) et l’heure de placement correspond à l’heure à laquelle les sauvegardes ont été effectuées sur Data Domain pour les fichiers en mode actif, mais pas pour les fichiers dans le Cloud (pour les fichiers dans le Cloud, l’« heure de placement » correspond à la date et à l’heure à laquelle le fichier a été déplacé vers l’unité Cloud).

De plus, veuillez noter que la commande ci-dessous (ainsi que le script de conversion depuis une commande non CSV sfs_dump) produit les données dans des colonnes séparées par des tabulations. Les caractères de tabulation présents dans la sortie doivent être enregistrés dans le fichier de journalisation, sinon les étapes détaillées ci-dessus pour importer le fichier CSV dans Excel ne peuvent pas séparer correctement les champs.
sfs_dump -c
Les instructions fournies supposent une connaissance raisonnable d’Excel, mais peuvent être traduites dans d’autres tableurs.

Les versions actuelles d’Excel permettent un grand nombre de lignes, mais il est important de garder à l’esprit que chaque fichier de la sfs_dump sortie à traiter se compose d’une seule ligne. Excel doit donc être en mesure de traiter et de mettre à jour rapidement une feuille de calcul avec autant de lignes que de fichiers dans votre jeu de données. La limite stricte est légèrement supérieure à 1 million de lignes, mais même si le nombre de fichiers est bien inférieur à ce nombre, Excel peut ne pas être adapté à la tâche (trop lent).

Si votre sfs_dump sortie contient trop de fichiers pour votre version d’Excel ou si vous souhaitez traiter les données en morceaux plus petits pour des raisons de performance, vous pouvez essayer d’exécuter la procédure pour chaque MTree séparément, afin d’obtenir plusieurs feuilles de calcul pour le système.

Même la sortie d’un seul MTree sfs_dump peut être trop volumineuse pour Excel. Dans ce cas, vous pouvez utiliser la commande Linux split (ou tout autre outil similaire permettant de découper un fichier texte volumineux en fonction des fins de ligne) pour obtenir plusieurs fichiers CSV plus petits à traiter un par un, par exemple :
# 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)

Par exemple, pour fractionner un fichier texte en entrée en fragments de 200 Mio chacun, de sorte que les morceaux soient nommés avec le préfixe :

"sfs_dump.out.split"

Puis, exécutez :

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


Script à utiliser "filesys sfs-dump" pour un vidage FS complet des données du fichier

Pour les rares versions n’offrant pas la possibilité d’effectuer un vidage des informations de fichiers au format CSV, le script ci-dessous est fourni par Dell tel quel (sans garantie) aux utilisateurs pour atteindre un résultat similaire en traitant la sortie non CSV sfs_dump .

Étant donné que les versions qui ne prennent pas en charge la sortie CSV sont également celles qui ne permettent pas d’effectuer un vidage des informations de fichiers de l’ensemble du système de fichiers, le script utilise SSH pour se connecter au Data Domain cible afin d’itérer sur la liste des MTrees, obtient la liste des fichiers un MTree à la fois, puis collecte la liste des fichiers pour tous les MTrees et la transforme en un format CSV approprié dans le but d’un traitement ultérieur :
#!/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 pour combiner la sortie des fichiers non CSV « sfs-dump » et « filesys report generate file-location » dans un fichier CSV avec toutes les mêmes informations que le script ci-dessus, par niveau de fichier et informations sur l’heure de placement

Le script ci-dessous est fourni tel quel (sans garantie) par Dell aux utilisateurs pour ajouter une certaine valeur à la sortie des commandes sfs_dump et filesys report generate file-location ci-dessus. Un utilisateur peut filtrer les fichiers en fonction du niveau (soit actif, soit l’une des deux unités Cloud configurées) pour obtenir des informations plus précises sur la distribution des fichiers par niveau en ajoutant l’emplacement du niveau et les informations sur l’heure de placement à chaque entrée de fichier dans le CSV de sortie.

Les scripts supposent que la sortie de sfs-dump (et non sfs_dump -c) soit fournie en tant que premier paramètre, et la sortie de filesys report generate file-location en tant que second paramètre. La sortie est écrite dans un nom de fichier codé en dur « sfs-dump-output-tiers.csv », qui peut être modifié dans le script lui-même.

La sortie peut être traitée à l’aide d’Excel de la même manière que décrite ci-dessus.
#!/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


Pour les utilisateurs de Veritas NetBackup :

Veritas NetBackup (NBU) crée des fichiers dans un Data Domain avec des caractères deux-points dans les noms de fichiers. Par exemple, voici des chemins de nom de fichier NBU valides lorsque Data Domain est utilisé comme stockage back-end pour 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::
Cependant, cela peut poser des problèmes avec les exemples de scripts ci-dessus, car le caractère deux-points est souvent utilisé comme séparateur dans la sortie de commande sfs_dump et l’exécution des scripts ci-dessus entraînent des résultats incorrects.

Dans ce cas, vous devez modifier le script de la manière suivante :
--- 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."
Bien que les modifications partagées permettent au script d’itérer sur tous les MTrees d’un Data Domain pour extraire les données par MTree, sfs_dump les changements sont identiques pour le reste du script. Toutefois, comme c’est également le cas pour les scripts eux-mêmes, les modifications ci-dessus vous sont fournies par Dell sans aucune garantie, dans l’espoir qu’elles soient utiles.

受影響的產品

Data Domain

產品

Data Domain
文章屬性
文章編號: 000081345
文章類型: Solution
上次修改時間: 27 5月 2025
版本:  21
向其他 Dell 使用者尋求您問題的答案
支援服務
檢查您的裝置是否在支援服務的涵蓋範圍內。