Data Domain: Auflisten von Dateien im Data Domain-Dateisystem mit sfs-dump

Summary: In diesem Artikel wird erläutert, wie Sie die Data Domain-Befehlszeilenschnittstelle (CLI) verwenden, um die Datei- und Verzeichnislisten für einzelne MTrees oder für das Dateisystem (FS) als Ganzes auszusichern. ...

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 (DD) ist ein passives Back-end-Speichergerät. Es speichert nur das, was die Backupanwendungen vorgeben, und löscht nur Daten, wenn es von der Backupanwendung angewiesen wird, Dateien zu löschen. Data Domain erstellt oder löscht Dateien niemals eigenständig.

Unabhängig vom eingegebenen Protokoll enthält das Data-Domain-Dateisystem nur Dateien (in Verzeichnissen), die in MTrees organisiert sind. Alle Dateien (sowohl Dateien in aktiven als auch in allen Cloud-Einheiten) verwenden denselben Stamm und Namespace. Es ist nur ein einziger Namespace vorhanden, was bedeutet, dass bei den Datei- und Verzeichnisauflistungen die Dateien in den aktiven und Cloud-Einheiten ohne Unterscheidung aufgeführt werden.

Eine detaillierte Auflistung der Dateien kann aus folgenden Gründen nützlich sein:
  • Vergleichen mit einer Liste von Dateien, die von einer Backupanwendung gemanagt werden, um nach Dateien zu suchen, die aus dieser Backupanwendung verwaist sind
  • Auflisten aller Dateien über einem bestimmten Altersschwellenwert, um festzustellen, ob die Backupanwendung die Backupaufbewahrung ordnungsgemäß durchsetzt

Cause

Das CLI-Tool zum Erstellen von Dateilisten ist sfs_dump.

Resolution

Verwenden Sie die SSH-Sitzungsprotokollierung, um die Listenausgabe zu erfassen. Der genaue Befehl, der über die DD-CLI zum Erfassen von Dateilisten ausgeführt wird, hängt von der verwendeten DDOS-Version (Data Domain Operating System) ab.

Quicklinks

Eine detaillierte Liste der Dateien in einer Data Domain von der CLI und schließlich den Prozess zum Abrufen von Informationen zu den in der Data Domain gespeicherten Dateien zu erhalten, hängt von der ausgeführten DDOS-Version ab.

Sobald die Textausgabedatei mit den Dateidetails erfasst wurde, ist die Verarbeitung der Ausgabe in eine besser nutzbare Form immer gleich, da das Ausgabeformat für alle DDOS-Versionen gleich ist (oder mithilfe eines Skripts in ein gemeinsames Format konvertiert werden kann).

SSH-Sitzungsprotokollierung:

Allen DDOS-Versionen gemeinsam ist die Anforderung, sich bei Data Domain als Admin-Nutzer anzumelden, und zwar mit einem SSH-Client, der die Protokollierung der Konsolenausgabe in einer Textdatei auf der Clientseite unterstützt (PuTTY funktioniert dafür gut). Konfigurieren Sie den SSH-Client so, dass er die Ausgabe in einer Textdatei auf dem Client protokolliert (stellen Sie sicher, dass es keine Beschränkungen für die Anzahl der protokollierten Zeilen oder die Länge der einzelnen Zeilen gibt). Die SSH-Sitzungsprotokolldatei (und damit auch die DD-Dateiauflistungen) wird nicht in Data Domain geschrieben, sondern auf dem (normalerweise) Desktop-Client, von dem die SSH-Verbindung initiiert wird.

Stellen Sie beim Erfassen der SSH-Sitzungsausgabe sicher, dass Sie der Datei einen aussagekräftigen Namen geben (z. B. den Data Domain-Hostnamen und den MTree-Namen, der ausgegeben werden soll), und stellen Sie sicher, dass ausreichend Speicherplatz für die Protokolldatei vorhanden ist, die bei Data Domains mit 1 Million Dateien ca. 200 MB betragen kann.

DDOS-Versionen vor 7.13.0.0, 7.10.1.15, 7.7.5.25 und 6.2.1.110:

Diese Versionen unterstützen weiterhin die se sfs_dump (und die Option -c Option zur Ausgabe von Dateidetails direkt als CSV ohne weitere Verarbeitung), obwohl aus Sicherheitsgründen davon abgeraten wird, zum Modus "Supporttechniker (SE)" zu wechseln und stattdessen auf die neueste verfügbare DDOS-Version zu aktualisieren.

Melden Sie sich bei Data Domain als Admin-Nutzer mit einem SSH-Client an, der für das Schreiben der Ausgabe auf die Festplatte konfiguriert ist, wechseln Sie in den SE-Berechtigungsmodus und führen Sie dann den folgenden Befehl für jeden MTree aus, für den die Dateidetails erforderlich sind:

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

Mit dem Befehl können in diesen Versionen auch alle Dateien im Dateisystem auf einmal aufgelistet werden (anstatt einzeln für jeden MTree). Um die Dateidetails für alle Dateien im Dateisystem abzurufen, lassen Sie den MTree-Pfad weg:

# se sfs_dump -c

Beenden Sie nach Abschluss des Vorgangs die Protokollierung des SSH-Clients auf die Festplatte und speichern Sie die Dateien für die weitere Verarbeitung.

Das Format für die Befehlsausgabe ist eine Zeile pro Datei. Wenn Sie -c, ist das Format identisch mit dem oben gezeigten für spätere Versionen. In Fällen, in denen -c (für die CSV-Ausgabe) verwendet wurde, ist das Format wie folgt (einschließlich einer Kopfzeile, die als erste Zeile in der Ausgabe angezeigt wird):

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-Versionen 7.13.0.0, 7.10.1.15, 7.7.5.25 und 6.2.1.110 oder höher:

Der aufzulistende MTree folgt auf das Schlüsselwort "MTree":

# filesys sfs-dump mtree <mtree-path>

filesys sfs_dum Befehl, verglichen mit se sfs_dumpverwalten:

  • Der neue Befehl bietet keine Unterstützung für die Option -c für die Ausgabe der Dateiinformationen im CSV-Format (Spalten).
  • Mit dem neuen Befehl kann jeweils nur ein MTree ausgeführt werden. Es gibt keine Unterstützung für die Ausführung für das gesamte Dateisystem in einem einzigen Aufruf.

Wenn ein Speicherauszug aller MTrees-Dateidetails in eine Datei erforderlich ist, durchlaufen Sie die gesamte Liste der MTrees im Data Domain-Dateisystem und führen Sie den Befehl einmal für jeden MTrees aus. NutzerInnen können eine Liste der MTrees im System mit folgendem Befehl abrufen:

# mtree list

Melden Sie sich bei Data Domain als Admin-Nutzer mit einem SSH-Client an, der für das Schreiben der Ausgabe auf die Festplatte konfiguriert ist, und führen Sie dann den folgenden Befehl für jeden MTree aus, für den die Dateidetails erforderlich sind:

# filesys sfs-dump mtree <mtree-path>

Wenn die Dateidetails für mehr als einen MTree benötigt werden, wählen Sie die Option aus, dass alle Speicherabbilder in dieselbe Ausgabedatei übertragen werden, oder wechseln Sie in der SSH-Clientkonfiguration zu einer anderen Datei, bevor Sie den Befehl für jeden der MTrees ausführen.

Alternativ können Sie die Ausgaben unbeaufsichtigt erfassen, indem Sie den folgenden Befehl mithilfe von SSH ausführen:

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

In beiden Fällen zeigt die Ausgabe eine Zeile pro Datei im folgenden Format an:

/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-Versionen 8.1.0.0, 7.13.1.10, 7.10.1.30 und 7.7.5.40 oder höher:

filesys fs-dumpverwalten:

  • Die Möglichkeit, die Option -c hinzuzufügen, damit die Ausgabe in einem CSV-ähnlichen Format gedruckt wird (durch Spalten getrennte Felder)
  • Die Möglichkeit, die Dateiinformationen für alle Dateien im Dateisystem gleichzeitig zu erfassen
  • Verwenden Sie die ssh-Sitzungsprotokollierung , um die Ausgabe zu erfassen.

Der Befehl ist weiterhin derselbe wie in den unmittelbar vorherigen Versionen, aber mit den erwähnten Verbesserungen, die im Folgenden zusammengefasst werden:

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


Dieser Befehl bleibt weiterhin „ausgeblendet“, sodass er nicht in der interaktiven CLI-Hilfe oder in der Dokumentation angezeigt wird.

So verarbeiten Sie sfs_dump- oder filesys-sfs-dump-Daten in etwas Nützliches:

Das Format für die einzelnen Dateien, die in der Ausgabe gemeldet werden, wenn filesys sfs-dump oder sfs_dump ohne -c -Option verwendet werden, ist wie folgt:

/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

Im obigen Beispiel hat das Original eine Größe von 136.794 Byte, die nach der Übergabe durch die Data Domain FS-Aufnahmepipeline berechnet wird, um nach der Deduplizierung 15.045 Byte zu verwenden, und 8760 Byte, wenn die eindeutigen Segmente für die Datei komprimiert werden, bevor sie auf die Festplatte geschrieben werden. Daher gilt:

  • Die Dateideduplizierung (auch "gcomp" oder globale Komprimierung) ist ein Faktor x9,09 (136.794 bis 15.045 Byte)
  • Die lokale Dateikomprimierung (auch als "lcomp" für lokale Komprimierung) ist ein Faktor x1,72 (15.045 bis 8.760 Byte)
  • Für die geschätzte Gesamtreduzierung der Dateigröße („Komprimierungsverhältnis“ genannt) wird der Faktor 15,62 (von 136.794 auf 8.760 Bytes) verwendet.

Alternativ ist die Ausgabe von sfs_dump -c ähnlich, aber kürzer:

/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)

Für dieses Beispiel können die gleichen Berechnungen wie beim vorherigen durchgeführt werden:

  • Die Dateideduplizierung (auch "gcomp" oder globale Komprimierung) ist ein Faktor x0,99 (33.554.431 bis 33.668.007 Byte)
  • Die lokale Dateikomprimierung (auch "lcomp", für lokale Komprimierung) ist ein Faktor x0,98 (33.668.007 bis 34.208.564 Byte)
  • Für die geschätzte Gesamtreduzierung der Dateigröße („Komprimierungsverhältnis“ genannt) wird der Faktor 0,98 (von 33.554.431 auf 34.208.564 Bytes) verwendet.

Im Vergleich zu der Datei ohne die Option -c wird hier weder eine Deduplizierung (keine redundanten Segmente) noch eine lokale Komprimierung erreicht. Dies weist darauf hin, dass es sich um eine komprimierte Datei handelt.
 

Achtung: Die Daten in den Ausgabedateien, die sich auf eine andere Größe als die "Vorkompilierungsgröße für die Datei in Byte" beziehen, sind als ungefähre Angaben zu betrachten und können nicht vollständig verlasst werden. Die Metadaten für Dateien werden zum Zeitpunkt der Dateiaufnahme erstellt. Sie sind zu dem Zeitpunkt korrekt, werden aber danach nicht mehr aktualisiert, sodass sie mit der Zeit veralten. Und auch wenn für die post_lc_size einer Datei ein bestimmter Wert angezeigt wird, bedeutet das nicht, dass der von dieser Datei verwendete Speicherplatz mit diesem Wert übereinstimmt, da es zahlreiche Overheads auf Dateisystemebene gibt, die auf Dateiebene nicht berücksichtigt werden. Die Einschränkungen entsprechen denen des Befehls:
mtree show compression
Um die Informationen aus den obigen Ausgabedateien nutzen zu können, müssen die numerischen Daten für den jeweiligen Zweck der NutzerInnen verarbeitet werden. Anwendungsfälle können u. a. sein:
  • Ermitteln der gcomp und lcomp für Dateien, die einem bestimmten Pfad entsprechen (wenn ein Pfad mit einem bestimmten Backupserver, -client, -policy, -job usw. abgeglichen werden kann)
  • Berechnen Sie, wie viele Daten (pre-comp) wird an einem bestimmten Speicherort gespeichert, der älter als ein bestimmter Zeitraum ist (um verwaiste Backups oder Fehlerbehebungsprobleme mit Backupanwendungen zu ermitteln, die Backups nicht überfällig ablaufen lassen)
  • Jede andere Statistik, für die NutzerInnen eine Verwendung haben
Um nur einen einzigen Satz an Anweisungen zu erhalten und den Verlust der Option sfs_dump -c In neueren Versionen empfehlen wir, die Ausgabedaten in das oben genannte CSV-Format konvertieren zu lassen und dann die Datei im CSV-Format zur weiteren Verarbeitung zu verwenden. Je nach Ihren Fähigkeiten kann die Nicht-CSV-Ausgabe jedoch direkt verarbeitet werden.

Konvertieren in CSV:

Um eine Nicht-CSV-basierte Ausgabe von sfs_dump in eine mit sfs_dump -c gedruckt worden wäre, kann die folgende Linux-Befehlszeile verwendet werden:

# 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

 

Hinweis: Der obige Befehl ignoriert alle Einträge in der Eingabedatei (sfs-dump-noCSV.txt), die nicht mit einem Schrägstrich beginnen, da nur Zeilen, die mit „/data“ beginnen, Dateidetails für die Verarbeitung enthalten sollten. Ausgabedateien haben eine erste Zeile als Kopfzeile und verwenden das Tabulatorzeichen (\t) als Feldtrennzeichen.


Alle nachfolgenden Anweisungen werden NutzerInnen in der vorliegenden Form zur Verfügung gestellt. Es gibt keine Gewährleistung oder Verpflichtung seitens Dell für die nachstehenden Anweisungen. Das Gewinnen von Erkenntnissen aus den Dateidetails ist die Aufgabe von NutzerInnen. Wie dies erreicht wird, hängt komplett vom Toolset ab, das für das Mining von Daten in der Dateiausgabe verwendet wird, sowie dem Ziel und den Kenntnissen der NutzerInnen in der Verarbeitung der Daten aus der oben beschriebenen Befehlsausgabe. Ein Benutzer kann sich dafür entscheiden, die Linux-Befehlszeilenverarbeitung von Textdateien zu verwenden, um einige Aggregate zu erstellen, andere können sich dafür entscheiden, Eingaben für Diagrammwerte mit "gnuplot" zu erzeugen, während die Mehrheit der Benutzer einen einfacheren (aber begrenzten) Ansatz sucht, um eine Tabelle aus der CSV-Datei zur Analyse zu erstellen.

Dell hat sich bemüht, sicherzustellen, dass die nachstehenden Anweisungen korrekt, funktionsfähig und nützlich für die Nutzer sind. Dell kann jedoch nicht garantieren, dass diese funktionieren, und es wird auch kein Support bereitgestellt, da sie außerhalb des Bereichs des Supports liegen.

Importieren der Ausgabe von CSV-formatierten sfs_dump in eine Tabelle (Beispiel für Excel):

Sobald die CSV-Version der Dateidetails verfügbar ist, besteht eine Möglichkeit, Erkenntnisse aus den Daten zu gewinnen, darin, die Daten in eine Tabellenkalkulationssoftware zu laden. Als Beispiel wird hier Microsoft Excel verwendet, obwohl die Anweisungen für andere Software ähnlich sein sollten. Um die CSV-Textdatei als CSV in Excel zu importieren, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie Excel und erstellen Sie ein leeres neues Arbeitsblatt.
  2. Gehen Sie oben zum Menü Daten und klicken Sie dann auf das Symbol Aus Text/CSV.
  3. Verwenden Sie das Dialogfeld, um die Dateidaten im CSV-Format (sfs-dump-CSV.csv wie im Beispielkonvertierungsskript für das Nicht-CSV-Format) zu finden, wählen Sie sie aus und klicken Sie auf Importieren.
  4. Wenn das Format der Eingabedatei korrekt ist und Excel das Format aus den ersten 200 Zeilen auslesen kann (was es sollte), sollte ein Dialogfeld die Vorschau des zu erzeugenden Arbeitsblatts anzeigen. Überprüfen Sie die Informationen, um sicherzustellen, dass sie gut aussehen, einschließlich der Erkennung der ersten Zeile als Kopfzeile
  5. Wenn in der Vorschau alles gut aussieht, klicken Sie auf die Schaltfläche Laden am unteren Rand des Dialogfelds, und die neue Tabelle wird mit einer schönen Formatierung und den Feldüberschriften in Such- und Filteroptionen umgewandelt.

Die Daten in der Tabelle sind bereits nützlich, z. B. das Anwenden eines Zahlenfilters auf numerische Felder wie Größe (um nur Dateien über einer bestimmten Größe anzuzeigen) oder das Anwenden eines Textfilters auf das Namensfeld, so dass nur Dateien in den Data Domain-Dateidetails angezeigt werden, die einem bestimmten Muster entsprechen (nur diejenigen, die mit dem Pfad für einen bestimmten MTree beginnen). und führen Sie andere abgeleitete Berechnungen aus diesen Daten durch.

Eine ordnungsgemäß importierte Excel-Tabelle sollte Daten in den Spalten A bis I enthalten. Wenn Daten nur in Spalte A vorhanden sind, sich aber über den gesamten Bildschirm erstrecken, schließen Sie Excel, und wiederholen Sie die obigen Schritte 1 bis 5.

Fügen Sie zusätzliche berechnete Felder hinzu:

Das Arbeitsblatt kann um so viele berechnete Felder erweitert werden wie nötig. Ein interessantes Feld, das hinzugefügt werden kann, ist das für Menschen lesbare Datum und die Uhrzeit, das/die der mtime der Dateien entsprechen (Zeitpunkt der letzten Änderung, was normalerweise der Zeitpunkt ist, an dem sie auf die DD geschrieben wurden). Außerdem kann das Berechnen und Anzeigen von Komprimierungswerten pro Datei hilfreich sein, je nachdem, wofür die Daten verwendet werden sollen. Die neuen Spalten werden automatisch mithilfe von Excel-Formeln ausgefüllt, wie unten beschrieben.

Zeitstempelkonvertierung:

So konvertieren Sie den UNIX-ähnlichen Zeitstempel in ein/e für Menschen lesbare/s Datum und Uhrzeit:

  1. Klicken Sie mit der rechten Maustaste auf die Zelle J2 und wählen Sie Zellen formatieren aus.
  2. Wählen Sie in der Liste Kategorie auf der linken Seite Benutzerdefiniert aus.
  3. Falls noch nicht vorhanden, erstellen Sie das Format für das für Menschen lesbare Datum-/Uhrzeitformat (das Beispiel enthält die EST-Zeichenfolge am Ende. Es kann durch Ihre textuelle Zeitzonendefinition ersetzt werden oder "EST" ganz entfernen, wenn Sie nicht interessiert sind): yyyy-mm-dd hh:mm:ss "EST"
  4. Klicken Sie auf OK, wenn Sie fertig sind. Jetzt verfügt Zelle J2 über ein benutzerdefiniertes Format für Daten.
  5. Fügen Sie die folgende Formel zu Zelle J2 hinzu. Ersetzen Sie in der Formel das (-6*3600) durch den korrekten Zeitzonenunterschied zu UTC für die konfigurierte Zeitzone in der Data Domain zum Zeitpunkt des Abrufens der sfs-dump-Daten. Zum Beispiel ist die östliche US-Zeit im Sommer 6 Stunden hinter UTC zurück, daher hier „-6“.
Wenn Sie nicht an einer so präzisen Zeiteinstellung interessiert sind, kann stattdessen eine abgekürzte Form der Formel verwendet werden. Die einfachste Möglichkeit, die Formel hinzuzufügen und zu vermeiden, dass das Datums- und Uhrzeitformat überschrieben wird, besteht darin, eine der beiden folgenden Versionen zu kopieren und in Zelle J2 einzufügen, sobald das "Gleich"-Zeichen (=) in die Zelle eingegeben wurde, um mit der Bearbeitung der Zelle zu beginnen:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Hinweis: Wenn Text in J2 eingefügt wird, ohne die Zelle zuerst in den Bearbeitungsmodus zu versetzen (also aufzurufen), wird das Format der Zelle überschrieben. Alternativ können Sie der Formel ein "=" voranstellen, den gesamten Text kopieren und mit der rechten Maustaste auf Zelle J2 klicken, um Inhalte einfügen auszuwählen, wählen Sie dann Als Text aus, und klicken Sie auf OK. Dies sollte den gleichen Effekt erzielen. Wenn dies richtig gemacht wurde, führt Excel automatisch Folgendes aus:
  • Fügt die Formel in Zelle J2 sowie in jede Zelle der restlichen Zeilen in der Tabelle ein 
  • Berechnet die Formel für die gesamte Tabelle und zeigt Datum und Uhrzeit im konfigurierten Format an
  • Formatieren Sie die Spalte wie die vorhandenen und konfigurieren Sie die Kopfzeile als Datum mit der Möglichkeit, Datumsfilter anzuwenden, das einzige, was Sie tun müssen, ist, einen richtigen Namen für die Spalte (Datum) festzulegen

Komprimierungsinformationen:

Spalten für die Komprimierungsinformationen pro Datei können hinzugefügt werden, indem Sie wie oben beschrieben vorgehen. Dieses Mal werden die Formeln angezeigt, die das "=" enthalten, so dass der gesamte Text kopiert werden muss, und Spezial als Text einfügen:

  • Kopieren Sie die folgende Formel und Einfügen Spezial als Text in Zelle K2, um eine Spalte für die Deduplizierung pro Datei zu erstellen, oder gcompverwalten:
    =IF(H2=0,0,D2/H2)
  • Kopieren Sie die folgende Formel und Spezielle Elemente als Text in Zelle L2 einfügen, um eine Spalte für die lokale Komprimierung pro Datei zu erstellen, oder lcompverwalten:
    =IF(I2=0,0,H2/I2)
  • Kopieren Sie die folgende Formel und fügen Sie sie über Inhalte einfügen als Text in Zelle M2 ein, um eine Spalte für das gesamte Dateikomprimierungsverhältnis pro Datei zu erstellen:
    =K2*L2

Geben Sie den neuen Spalten passende Namen. Wenn Sie für die Komprimierungswerte ein anderes Format verwenden möchten (z. B. um die Anzahl der Dezimalstellen zu begrenzen), gehen Sie wie im Beispiel für Datum und Uhrzeit vor und legen Sie das numerische Format der Zelle im Voraus fest, bevor Sie die Formel einfügen.

Denken Sie daran, Ihre Arbeit zu speichern, indem Sie zum Menü Datei gehen und Speichern als verwenden, wobei der Typ für die gespeicherte Datei auf Excel-Arbeitsmappe (*.xlsx) festgelegt sein muss, damit Formatierung und Filter beibehalten werden.

Nach Abschluss der beschriebenen Aktionen enthält Ihr Arbeitsblatt die folgenden (relevanten) Spalten:

  • A enthält den Dateinamen.
  • B enthält den Datumsstempel (in UNIX-Epochen in Nanosekunden) für den Zeitpunkt, an dem die Datei zuletzt geschrieben wurde.
  • D enthält die Originalgröße der Datei.
  • H enthält die Größe nach der globalen Komprimierung.
  • I enthält die Größe nach der globalen und der lokalen Komprimierung.
  • J enthält den Datumsstempel für den Zeitpunkt, an dem die Datei zuletzt geschrieben wurde, in für Menschen lesbarer Form.
  • K enthält die globale Komprimierung (Deduplizierung) für die Datei.
  • L enthält die lokale Komprimierung für die Datei.
  • M enthält die gesamte Komprimierung für die Datei.

Alle Dateigrößen sind in Byte angegeben.
Excel kann nun nach Bedarf gefiltert oder sortiert werden, um Berichte über die Daten zu erstellen.

  • So zeigen Sie beispielsweise nur Dateien im MTree /data/col1/backup an, die älter als 30 Tage sind:
  1. Klicken Sie in der Kopfzeile Name auf den Pfeil nach unten, wählen Sie Textfilter aus, dann Beginnt mit und geben Sie dann /data/col1/backup/ in das Feld ein. Der abschließende Schrägstrich ist wichtig. Klicken Sie auf OK.
  2. Klicken Sie in der Kopfzeile Zuletzt geschriebenes Datum auf den Pfeil nach unten, wählen Sie Datumsfilter und dann Vor aus. Verwenden Sie die Datumsauswahl auf der rechten Seite des Dialogfelds, um ein Datum auszuwählen, das 30 Tage zurückliegt. Klicken Sie auf OK.
In der Statusleiste unten wird angezeigt, wie viele Zeilen dieser Auswahl entsprechen.

Additional Information

Befehl für Dateispeicherort (aktiv und Cloud)

Es gibt eine Möglichkeit, die Dateien mit der Angabe, welche sich in aktiven und welche in Cloud-Einheiten befinden, aufzulisten. Diese lautet wie folgt:

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

Die Ausgabe sieht in beiden Fällen folgendermaßen aus:

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

Der obige Befehl ist jedoch für die meisten Zwecke ungeeignet, da z. B. die Größe in menschenlesbaren Einheiten angegeben wird (und nicht in Bytes oder MiB oder einem festgelegten Multiplikator). Außerdem entspricht nur für Dateien in aktiven Einheiten die Platzierungszeit dem Zeitpunkt, zu dem die Backups auf der Data Domain erstellt wurden, jedoch nicht für Dateien in der Cloud (die „Platzierungszeit“ für Dateien in der Cloud entspricht dem Zeitpunkt, zu dem die Dateien in die Cloud-Einheit verschoben wurden).

Beachten Sie auch, dass der folgende Befehl (und das Skript zur Konvertierung von Nicht-CSV- sfs_dump) Daten in Spalten ausgibt, die durch Tabulatoren getrennt sind. Die in der Ausgabe vorhandenen Tabulatorzeichen müssen in der Protokolldatei gespeichert werden, da andernfalls mit den oben beschriebenen Schritten zum Importieren der CSV-Datei in Excel die Felder nicht korrekt getrennt werden können.

sfs_dump -c

Die Anweisungen setzen angemessene Excel-Kenntnisse voraus, können aber auch für andere Tabellenkalkulationssoftware verwendet werden.

Moderne Versionen von Excel erlauben zwar viele Zeilen, denken Sie jedoch daran, dass jede Datei in der zu verarbeitenden Ausgabe von sfs_dump eine einzelne Zeile darstellt, sodass Excel in der Lage sein muss, ein Arbeitsblatt mit so vielen Zeilen wie Dateien in Ihrem Dataset schnell zu verarbeiten und zu aktualisieren. Das harte Limit liegt bei etwas mehr als 1 Million Zeilen, aber selbst bei Dateianzahlen weit darunter ist Excel möglicherweise nicht für den Auftrag geeignet (zu langsam).

Wenn die sfs_dump Die Ausgabe enthält zu viele Dateien für die Excel-Version oder um Daten aus Leistungsgründen in kleineren Bits zu verarbeiten, versuchen Sie, das Verfahren einmal für jeden MTree auszuführen, damit mehrere Kalkulationstabellen für das System vorhanden sind.

Selbst ein einzelner MTree sfs_dump Die Ausgabe kann für Excel zu groß sein, in diesem Fall kann der Linux-Befehl " split" verwendet werden (oder ein anderes ähnliches Tool, um eine große Textdatei online zu teilen), um mehrere kleinere CSV-Dateien nacheinander zu verarbeiten, z. B.:

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

Um beispielsweise eine Eingabetextdatei in Blöcke von jeweils 200 MiB aufzuteilen, sodass die Teile benannt werden, führen Sie zuerst Folgendes aus:

"sfs_dump.out.split"

Und anschließend:

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


Skript zur Verwendung von "filesys sfs-dump" für das Dumping von Dateidaten des gesamten Dateisystems.

Für die wenigen Versionen, bei denen die Dateidetails nicht im CSV-Format ausgegeben werden können, wird NutzerInnen das weiter unten angezeigte Skript in der vorliegenden Form (ohne Gewähr) von Dell zur Verfügung gestellt, um ein ähnliches Ergebnis durch die Verarbeitung einer Nicht-CSV-basierten Ausgabe von sfs_dump zu erzielen.

Da die Versionen, die keine CSV-Ausgabe unterstützen, auch nicht zulassen, dass die Informationen für alle Dateien im Dateisystem als Ganzes ausgegeben werden, verwendet das Skript SSH, um eine Verbindung zur Ziel-Data-Domain herzustellen und durch die Liste der MTrees zu iterieren. Dabei wird die Dateiausgabe für jeweils einen MTree ausgeführt, um die Dateiliste für alle MTrees zu erfassen, und diese dann für die weitere Verarbeitung in ein CSV-Format umgewandelt:

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


Skript zum Kombinieren der Ausgabe von Nicht-CSV-Dateien "sfs-dump" und "filesys report generate file-location" in einer CSV-Datei mit denselben Informationen wie im obigen Skript sowie Informationen pro Datei-Tier und Platzierungszeit.

Das folgende Skript wird NutzerInnen in der vorliegenden Form (ohne Gewähr) von Dell zur Verfügung gestellt, um die Ausgabe der obigen Befehle sfs_dump und filesys report generate file-location zu optimieren. NutzerInnen können Dateien basierend auf dem Tier (aktiv oder eine der bis zu zwei konfigurierten Cloud-Einheiten) herausfiltern, um einen genaueren Einblick in die Dateiverteilung pro Tier zu erhalten, da jedem Dateieintrag in der Ausgabe-CSV-Datei Informationen zum Standort des Tiers und zur Platzierungszeit hinzufügt werden.

Die Skripte erwarten die Ausgabe von sfs-dump (nicht sfs_dump -c) als ersten Parameter und die Ausgabe von filesys report generate file-location als zweiten. Die Ausgabe wird in eine hartcodierte Datei mit dem Namen „sfs-dump-output-tiers.csv“ geschrieben, der im Skript selbst geändert werden kann.

Die Ausgabe kann mit Excel auf die gleiche Weise wie oben erläutert verarbeitet werden.

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


Für Veritas-NetBackup-NutzerInnen:

Es ist bekannt, dass Veritas NetBackup (NBU) für Dateien in einer Data Domain Dateinamen erstellt, die Doppelpunkte enthalten. Im Folgenden sind beispielsweise gültige NBU-Dateinamenpfade aufgeführt, wenn Data Domain als Back-end-Storage für NBU verwendet wird:

/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::

Dies stellt jedoch ein Problem für die obigen Beispielskripte dar, da der Doppelpunkt als Trennzeichen für die Ausgabe des Befehls sfs_dump Befehlsausgabe und das Ausführen der obigen Skripte würde zu falschen Ergebnissen führen.

In solchen Fällen muss das Skript wie folgt bearbeitet werden:

--- 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."

Diese Änderungen gelten für das Skript, das durch alle MTrees in einer Data Domain iteriert. Um die sfs_dump -Daten für einzelne MTrees abzurufen, sind die Änderungen für das andere Skript identisch. Wie bei den Skripten selbst werden die obigen Änderungen von Dell ohne jegliche Gewähr bereitgestellt, in der Hoffnung, dass sie nützlich sind.

Affected Products

Data Domain

Products

Data Domain
Article Properties
Article Number: 000081345
Article Type: Solution
Last Modified: 08 حزيران 2026
Version:  26
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.