Data Domain: Wyszczególnianie plików w systemie plików Data Domain za pomocą polecenia sfs-dump

Summary: W tym artykule wyjaśniono, za pomocą interfejsu wiersza polecenia (CLI) Data Domain do zrzutu listy plików i katalogów dla poszczególnych drzew MTree lub systemu plików (FS) jako całości. ...

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

Symptoms

Data Domain (DD) to pasywne urządzenie pamięci masowej zaplecza. Przechowuje tylko to, co każą aplikacje do tworzenia kopii zapasowych, i usuwa dane tylko wtedy, gdy aplikacja do tworzenia kopii zapasowych poprosi o usunięcie plików. System Data Domain nigdy nie tworzy ani nie usuwa żadnych plików samodzielnie.

Bez względu na pozyskany protokół Data Domain FS zawiera tylko pliki (w katalogach) zorganizowane w MTree. Wszystkie pliki (zarówno dla plików w aktywnych, jak i we wszystkich jednostkach chmury) współdzielą ten sam katalog główny i przestrzeń nazw; istnieje jedna przestrzeń nazw, co oznacza, że listy plików i katalogów obejmują pliki w jednostkach aktywnych i chmurowych bez żadnego rozróżnienia.

Uzyskanie szczegółowego zrzutu plików może być przydatne z takich powodów jak:
  • Porównanie z listą plików zarządzanych przez aplikację do tworzenia kopii zapasowych, aby sprawdzić, czy nie ma plików osieroconych przez tę aplikację do tworzenia kopii zapasowych.
  • Tworzenie listy wszystkich plików powyżej określonego progu wieku w celu określenia, czy aplikacja do tworzenia kopii zapasowych egzekwuje zasady przechowywania kopii zapasowych

Cause

Narzędzie CLI do tworzenia list plików to sfs_dump.

Resolution

Użyj rejestrowania sesji SSH, aby zebrać dane wyjściowe listy. Dokładne polecenie, które należy uruchomić z wiersza polecenia DD w celu zebrania list plików, zależy od używanej wersji systemu operacyjnego Data Domain (DDOS).

Szybkie łącza

Aby uzyskać szczegółową listę plików w Data Domain z interfejsu wiersza poleceń, a ostatecznie proces uzyskiwania informacji o plikach przechowywanych w Data Domain, należy zależeć od uruchomionej wersji DDOS.

Po zebraniu tekstowego pliku wyjściowego ze szczegółami pliku przetwarzanie danych wyjściowych do bardziej użytecznej postaci jest zawsze takie samo, ponieważ format wyjściowy dla wszystkich wydań DDOS jest taki sam (lub można go przekonwertować do wspólnego formatu za pomocą skryptu).

Rejestrowanie sesji SSH:

Wspólną cechą wszystkich wydań DDOS jest wymóg zalogowania się do Data Domain jako użytkownik admin i zrobienie tego za pomocą klienta SSH, który obsługuje rejestrowanie danych wyjściowych konsoli do pliku tekstowego po stronie klienta (PuTTY dobrze się do tego nadaje). Skonfiguruj klienta SSH tak, aby rejestrował dane wyjściowe w pliku tekstowym na kliencie (upewniając się, że nie ma ograniczeń co do liczby rejestrowanych wierszy lub długości poszczególnych wierszy). Plik dziennika sesji SSH (a tym samym lista plików DD) nie jest zapisywany w Data Domain, ale na (zazwyczaj) kliencie stacjonarnym, z którego inicjowane jest połączenie SSH.

Podczas zbierania danych wyjściowych sesji SSH należy upewnić się, że nadano plikowi zrozumiałą nazwę (na przykład dodano nazwę hosta Data Domain i nazwę obiektu MTree do zrzutu) oraz że dostępna jest wystarczająca ilość miejsca na plik dziennika, który może wynosić około 200 MB w przypadku Data Domain z 1 milionem plików.

Wersje DDOS wcześniejsze niż 7.13.0.0, 7.10.1.15, 7.7.5.25 i 6.2.1.110:

Te wersje nadal obsługują se sfs_dump (oraz opcję -c opcja wyprowadzania szczegółów pliku bezpośrednio jako CSV bez dalszego przetwarzania), chociaż przejście do trybu inżyniera pomocy technicznej (SE) jest odradzane ze względów bezpieczeństwa. Zamiast tego należy uaktualnić go do najnowszej dostępnej wersji DDOS.

Zaloguj się do Data Domain jako administrator z klientem SSH skonfigurowanym do zapisywania danych wyjściowych na dysku, zmień tryb uprawnień SE, a następnie uruchom następujące polecenie dla każdego drzewa MTree wymagające szczegółowych informacji o plikach dla:

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

Polecenie w tych wersjach może również generować listę wszystkich plików w FS jednocześnie (zamiast jednego drzewa MTree na raz). Aby zrzucić szczegóły informacji o plikach dla wszystkich plików w FS, pomiń ścieżkę MTree:

# se sfs_dump -c

Po zakończeniu pamiętaj, aby zatrzymać rejestrowanie klienta SSH na dysku i odłożyć pliki na bok do dalszego przetwarzania.

Format danych wyjściowych polecenia to pojedynczy wiersz dla każdego pliku. Jeśli nie używasz -c, format jest identyczny z pokazanym powyżej dla późniejszych wersji. W przypadkach, gdy: -c został użyty (do wyjścia CSV), format jest taki (w tym nagłówek pokazany jako pierwszy wiersz na wyjściu):

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 w wersjach 7.13.0.0, 7.10.1.15, 7.7.5.25 i 6.2.1.110 lub nowszych:

Drzewo MTree, które ma zostać wyświetlone, następuje po słowie kluczowym "MTree":

# filesys sfs-dump mtree <mtree-path>

filesys sfs_dum w porównaniu do se sfs_dump:

  • Nowe polecenie nie obsługuje opcji -c do zrzutu informacji o pliku w formacie CSV (kolumna)
  • Nowe polecenie może uruchamiać obiekt MTree tylko w danym momencie, nie ma obsługi uruchamiania całego FS w jednym wywołaniu

Jeśli wymagane jest zrzucenie szczegółów wszystkich plików MTree do pliku, wykonaj iterację po całej liście drzew MTree w Data Domain FS i uruchom polecenie raz dla każdego z nich. Użytkownik może wyświetlić listę MTree w systemie, uruchamiając:

# mtree list

Zaloguj się do Data Domain jako administrator z klientem SSH skonfigurowanym do zapisywania danych wyjściowych na dysku, a następnie uruchom następujące polecenie dla każdego drzewa MTree wymagające szczegółowych informacji o plikach dla:

# filesys sfs-dump mtree <mtree-path>

Jeśli potrzebne są szczegółowe informacje o pliku dla więcej niż jednego drzewa MTree, wybierz opcję wykonywania wszystkich zrzutów do tego samego pliku wyjściowego lub przełącz konfigurację klienta SSH na inny plik przed uruchomieniem polecenia dla każdego drzewa MTree.

Możesz także zebrać dane wyjściowe w sposób nienadzorowany, uruchamiając polecenie przy użyciu SSH:

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

W obu przypadkach informacje wyjściowe mają jeden wiersz dla każdego pliku w następującym formacie:

/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 w wersjach 8.1.0.0, 7.13.1.10, 7.10.1.30 i 7.7.5.40 lub nowszych:

filesys fs-dump:

  • Możliwość dodania opcji -c , dzięki czemu dane wyjściowe są drukowane w formacie CSV (pola oddzielone kolumnami)
  • Możliwość uruchomienia informacji o zrzucie plików dla wszystkich plików w FS jednocześnie
  • Użyj rejestrowania sesji SSH , aby zebrać dane wyjściowe.

Polecenie nadal działa tak samo jak w przypadku bezpośrednio poprzednich wersji, z wymienionymi ulepszeniami podsumowanymi poniżej:

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


To polecenie jest nadal „ukryte”, więc nie pojawia się w interaktywnej pomocy interfejsu wiersza polecenia ani w dokumentacji.

Jak przetworzyć dane sfs_dump lub filesys sfs-dump na coś użytecznego:

Format poszczególnych plików zgłaszanych w danych wyjściowych podczas korzystania z filesys sfs-dump lub sfs_dump bez opcji -c można podsumować następująco:

/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

W powyższym przykładzie oryginał ma rozmiar 136 794 bajtów, który po przekazaniu przez potok pozyskiwania Data Domain FS jest obliczany do użycia 15 045 bajtów po deduplikacji i 8760 bajtów, gdy unikatowe segmenty pliku są kompresowane przed zapisaniem na dysku. Stąd:

  • Deduplikacja plików (aka "gcomp" lub kompresja globalna) to współczynnik x9,09 (od 136 794 do 15 045 bajtów)
  • Kompresja lokalna pliku (znana również jako "lcomp" dla kompresji lokalnej) to współczynnik x1,72 (od 15 045 do 8760 bajtów)
  • Całkowite szacowane zmniejszenie rozmiaru pliku (znane jako „współczynnik kompresji”) wynosi 15,62 (z 136 794 na 8760 bajtów)

Dane wyjściowe sfs_dump -c mogą też być podobne, ale bardziej zwięzłe:

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

W tym przykładzie można wykonać te same obliczenia, co w poprzednim:

  • Deduplikacja plików (aka "gcomp" lub kompresja globalna) jest współczynnikiem x0,99 (od 33 554 431 do 33 668 007 bajtów)
  • Kompresja lokalna pliku (aka "lcomp," dla kompresji lokalnej) jest współczynnikiem x0,98 (od 33 668 007 do 34 208 564 bajtów)
  • Całkowite szacowane zmniejszenie rozmiaru pliku (znane jako „współczynnik kompresji”) to współczynnik x 0,98 (z 33 554 431 na 34 208 564 bajtów)

W porównaniu z plikiem wyświetlanym dla przykładu bez -c , w tym przypadku nie osiągnięto deduplikacji (brak nadmiarowych segmentów) ani kompresji lokalnej. Oznacza to, że plik jest skompresowany.
 

Przestroga: Dane w plikach wyjściowych dotyczące rozmiaru innego niż "rozmiar precomp dla pliku w bajtach" należy traktować jako przybliżone i nie można na nich w pełni polegać. Metadane dla plików są tworzone w momencie pozyskiwania plików i chociaż są wtedy poprawne, nie są aktualizowane w żadnym momencie od tego czasu, więc z czasem stają się nieaktualne. Ponadto fakt, że post_lc_size pliku to dana ilość nie oznacza, że miejsce na dysku używane przez ten plik jest identyczne jak ta ilość, ponieważ istnieje wiele narzutów na poziomie FC, które nie są uwzględniane na poziomie pliku. Ograniczenia są takie same jak w przypadku tych już znanych dla polecenia:
mtree show compression
Wykorzystanie informacji zawartych w powyższych plikach wyjściowych polega na przetwarzaniu danych liczbowych w sposób odpowiadający celom użytkownika. Oto kilka przykładów zastosowań:
  • Określanie gcomp i lcomp dla plików odpowiadających określonej ścieżce (jeśli ścieżka może być dopasowana do określonego serwera kopii zapasowych, klienta, zasady, zadania itp.)
  • Obliczanie, ile danych (pre-comp) jest przechowywana w danej lokalizacji, która jest starsza niż określony czas (w celu określenia sierot lub rozwiązania problemów z aplikacjami do tworzenia kopii zapasowych, które nie wygasają po terminie)
  • Każdy inny rodzaj statystyki, który można wykorzystać
Aby dysponować jednym zestawem instrukcji i zrekompensować utratę opcji sfs_dump -c w nowszych wersjach zalecamy przekonwertowanie danych wyjściowych do powyższego formatu CSV, a następnie użycie pliku w formacie CSV do dalszego przetwarzania, jednak w zależności od umiejętności dane wyjściowe inne niż CSV mogą być przetwarzane bezpośrednio.

Konwertuj na plik CSV:

Aby przekonwertować plik wyjściowy inny niż CSV sfs_dump na taki, który jest identyczny jak to, co wydrukowałoby sfs_dump -c wydrukowałby, można użyć następującego wiersza poleceń Linuksa:

# 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

 

Uwaga: powyższe polecenie ignoruje wszystko w pliku wejściowym (sfs-dump-noCSV.txt), który nie zaczyna się od ukośnika, ponieważ tylko wiersze zaczynające się od „/data” mają zawierać szczegóły pliku do przetworzenia. Pliki wyjściowe mają pierwszy wiersz jako nagłówek i używają znaku tabulatora (\t) jako separatora pól.


Wszystko, co znajduje się poza tym punktem, jest udostępniane użytkownikom w stanie, w jakim się znajduje. Firma Dell nie daje żadnych gwarancji ani nie jest zobowiązana do przestrzegania poniższych instrukcji. Uzyskanie informacji na podstawie szczegółów listy plików jest zadaniem użytkownika, a sposób, w jaki można to osiągnąć, zależy całkowicie od zestawu narzędzi używanych do wydobywania danych z danych wyjściowych zrzutu plików, celu, który do osiągnięcia oraz własnej wiedzy użytkownika w zakresie przetwarzania danych z danych wyjściowych polecenia opisanego powyżej. Jeden użytkownik może zdecydować się na użycie przetwarzania plików tekstowych w wierszu poleceń Linuksa do zrzucenia niektórych agregatów, inni mogą zdecydować się na tworzenie danych wejściowych do tworzenia wykresów wartości za pomocą "gnuplot", podczas gdy uważa się, że większość użytkowników szuka prostszego (ale ograniczonego) podejścia, aby zbudować arkusz kalkulacyjny z pliku CSV do analizy.

Firma Dell dołożyła starań, aby poniższe instrukcje były poprawne, praktyczne i przydatne dla użytkowników, ale nie może zagwarantować, że będą one skuteczne, ani nie jest zapewniona pomoc techniczna, ponieważ są one poza zakresem pomocy technicznej.

Importowanie danych wyjściowych sfs_dump w formacie CSV do arkusza kalkulacyjnego (przykład dla programu Excel):

Gdy wersja CSV listy szczegółów pliku jest dostępna, jednym ze sposobów uzyskania informacji z danych jest załadowanie danych do oprogramowania arkusza kalkulacyjnego. Jako przykład podano program Microsoft Excel, chociaż w przypadku innych programów instrukcje powinny być podobne. Aby zaimportować plik tekstowy CSV do programu Excel jako CSV, wykonaj następujące kroki:

  1. Otwórz program Excel i utwórz nowy pusty arkusz kalkulacyjny
  2. Przejdź do menu Dane na górze, a następnie kliknij ikonę o nazwie Z pliku tekstowego/CSV
  3. Użyj okna dialogowego, aby zlokalizować dane pliku w formacie CSV (sfs-dump-CSV.csv tak jak w przykładowym skrypcie konwersji z formatu innego niż CSV), zaznacz go i kliknij opcję Importuj
  4. Jeśli format pliku wejściowego jest poprawny, a program Excel potrafi wyciągnąć format z pierwszych 200 wierszy (i powinien), okno dialogowe powinno pokazywać podgląd arkusza kalkulacyjnego, który ma zostać wygenerowany. Przejrzyj informacje, aby upewnić się, że wygląda dobrze, w tym, że pierwszy wiersz jest wykrywany jako nagłówki
  5. Jeśli wszystko wygląda dobrze z podglądem, kliknij przycisk Załaduj u dołu okna dialogowego, a nowy arkusz kalkulacyjny zostanie zaprezentowany z ładnym formatowaniem, a nagłówki pól zamienią się w nagłówki z włączonym wyszukiwaniem i filtrowaniem.

Dane w arkuszu kalkulacyjnym są już przydatne, takie jak zastosowanie filtru liczb do pól liczbowych, takich jak rozmiar (aby wyświetlić tylko pliki powyżej danego rozmiaru) lub zastosowanie filtru tekstowego w polu nazwy, aby wyświetlane były tylko pliki w danych wyjściowych szczegółów pliku Data Domain pasujące do danego wzorca (tylko te zaczynające się od ścieżki dla konkretnego drzewa MTree), i wykonać inne obliczenia pochodne na podstawie tych danych.

Prawidłowo zaimportowany arkusz kalkulacyjny Excel powinien zawierać dane w kolumnach A-I. Jeśli dane znajdują się tylko w kolumnie A, ale rozciągają się na cały ekran, zamknij program Excel i ponów kroki od 1 do 5 powyżej.

Dodaj dodatkowe pola obliczeniowe:

Arkusz kalkulacyjny można rozszerzyć o dowolną liczbę pól obliczeniowych. Interesującym polem, które należy dodać, jest czytelna dla człowieka data i godzina odpowiadająca mtime plików (czas ostatniej modyfikacji, zwykle czas, w którym został zapisany w DD). Ponadto obliczenie i pokazanie niektórych wartości kompresji dla poszczególnych plików może być pomocne w zależności od tego, do czego dane są używane. Nowe kolumny są wypełniane automatycznie przy użyciu formuł programu Excel zgodnie z poniższym opisem.

Konwersja znacznika czasu:

Aby przekonwertować znacznik czasu w stylu UNIX na datę i godzinę czytelną dla człowieka:

  1. Kliknij prawym przyciskiem myszy komórkę J2 i wybierz opcję „Formatuj komórki
  2. Z listy „Kategoria” po lewej stronie wybierz opcję „Niestandardowe”.
  3. Jeśli jeszcze tego nie zrobiono, utwórz format czytelnego dla człowieka formatu daty i godziny (przykład zawiera ciąg EST na końcu. Można go zastąpić tekstową definicją strefy czasowej lub całkowicie usunąć "EST", jeśli nie jesteś zainteresowany): yyyy-mm-dd hh:mm:ss "EST"
  4. Po zakończeniu kliknij przycisk OK. Teraz komórka J2 ma niestandardowy format danych.
  5. Dodaj następującą formułę do komórki J2. W formule zastąp (-6*3600) prawidłową różnicą strefy czasowej odpowiadającą UTC dla skonfigurowanej strefy czasowej w Data Domain w momencie pobierania danych „sfs-dump”. Na przykład czas wschodnioamerykański jest opóźniony o 6 godzin w stosunku do czasu UTC w okresie letnim, stąd „-6”.
Jeśli nie jesteś zainteresowany tak precyzyjną korektą czasu, zamiast tego można użyć skróconej formy wzoru. Najprostszym sposobem na dodanie formuły i uniknięcie nadpisania formatu daty i godziny jest skopiowanie jednej z dwóch poniższych wersji i wklejenie do komórki J2 po wpisaniu znaku "równego" (=) w komórce, aby rozpocząć edycję komórki:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Uwaga: Jeśli tekst zostanie wklejony do komórki J2 bez uprzedniego przełączenia komórki w tryb edycji (tzw. wywołanie), format komórki zostanie nadpisany. Możesz też poprzedzić formułę znakiem "=", skopiować cały tekst i kliknąć prawym przyciskiem myszy komórkę J2, aby wkleić specjalnie, a następnie wybrać opcję Jako tekst i kliknąć przycisk OK. Efekt powinien być ten sam. Jeśli zostało to zrobione dobrze, program Excel automatycznie wykonuje kilka czynności:
  • Wklej formułę do komórki J2, a także do każdej komórki pozostałych wierszy w arkuszu kalkulacyjnym 
  • Oblicz formułę dla całego arkusza kalkulacyjnego i pokaż wartość daty i godziny w skonfigurowanym formacie
  • Ładnie sformatuj kolumnę tak, jak istniejące, i miej nagłówek skonfigurowany jako Data z możliwością zastosowania filtrów daty, jedyne co trzeba zrobić, to ustawić odpowiednią nazwę kolumny (Data)

Informacje o kompresji:

Można dodać kolumny dla informacji o kompresji poszczególnych plików, wykonując powyższe czynności. Tym razem formuły pokazują zawierający znak "=", więc cały tekst musi zostać skopiowany, a Wklej specjalnie jako tekst:

  • Skopiuj poniższą formułę i wklej specjalnie jako tekst do komórki K2, aby utworzyć kolumnę dla deduplikacji dla poszczególnych plików. gcomp:
    =IF(H2=0,0,D2/H2)
  • Skopiuj poniższą formułę i wklej specjalnie jako tekst do komórki L2, aby utworzyć kolumnę do kompresji lokalnej dla pliku. lcomp:
    =IF(I2=0,0,H2/I2)
  • Skopiuj poniższą formułę i wklej specjalnie jako tekst do komórki M2, aby utworzyć kolumnę dla całkowitego współczynnika kompresji pliku dla poszczególnych plików:
    =K2*L2

Nadaj nowym kolumnom odpowiednią nazwę. Jeśli chcesz, aby format wartości kompresji był inny (na przykład w celu ograniczenia liczby miejsc dziesiętnych), przed wklejeniem formuły wykonaj czynności opisane w przykładzie dla daty i godziny, a następnie ustaw format liczbowy komórki z wyprzedzeniem.

Pamiętaj, aby zapewnić bezpieczeństwo swojej pracy, przechodząc do menu Plik i wybierając opcję Zapisz jako, upewniając się, że typ zapisanego pliku jest ustawiony na skoroszyt programu Excel (*.xlsx), dzięki czemu formatowanie i filtrowanie zostaną zachowane.

Po wykonaniu opisanych czynności arkusz kalkulacyjny będzie zawierał następujące (odpowiednie) kolumny:

  • A zawiera nazwę pliku
  • B zawiera znacznik daty (w epoce UNIX-a w nanosekundach) dla ostatniego zapisu pliku
  • D to oryginalny rozmiar pliku
  • H to rozmiar po kompresji globalnej
  • I to rozmiar po kompresji globalnej i lokalnej
  • J zawiera datownik ostatniego zapisu pliku, w formie czytelnej dla człowieka
  • K zawiera globalną kompresję (deduplikację) pliku
  • L zawiera lokalną kompresję pliku
  • M zawiera całkowitą kompresję pliku

Wszystkie rozmiary plików są podane w bajtach.
Program Excel może teraz filtrować lub sortować zgodnie z wymaganiami, aby raportować dane.

  • Na przykład, aby wyświetlić tylko pliki w MTree /data/col1/backup, które są starsze niż 30 dni:
  1. Kliknij strzałkę w dół w nagłówku nazwy, zaznacz opcję Filtry tekstu, a następnie Zaczyna się od i wpisz /data/col1/backup/ w polu. Końcowy ukośnik jest ważny. Kliknij przycisk OK
  2. Kliknij strzałkę w dół w nagłówku Ostatnia zapisana data, wybierz opcję Filtry daty, a następnie Przed. Użyj selektora daty po prawej stronie okna dialogowego, aby wybrać datę sprzed 30 dni. Kliknij przycisk OK.
Pasek stanu u dołu pokazuje, ile wierszy pasuje do tego wyboru.

Additional Information

Polecenie lokalizacji zrzutu pliku (aktywna i w chmurze)

Istnieje sposób na zrzut listy plików ze wskazaniem, które są w warstwie aktywnej, a które w dowolnej jednostce chmury, czyli:

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

Dane wyjściowe w obu przypadkach są następującego typu:

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

Jednak powyższe polecenie wydaje się być nieadekwatne dla większości intencji, ponieważ na przykład rozmiar jest wyrażony w jednostkach czytelnych dla człowieka (a nie w bajtach, MiB lub dowolnym ustawionym mnożniku), a czas umieszczania odpowiada czasowi tworzenia kopii zapasowych w Data Domain dla plików w warstwie aktywnej, ale nie w przypadku plików w chmurze („Placement Time” dla plików w chmurze to data i godzina przeniesienia pliku do jednostki chmury).

Należy również pamiętać, że poniższe polecenie (i skrypt konwertujący z pliku innego niż CSV sfs_dump) wyprowadza dane w kolumnach oddzielonych tabulatorami. Znaki tabulacji obecne w danych wyjściowych muszą być zapisane w pliku rejestrowania, w przeciwnym razie opisane powyżej kroki importowania pliku CSV do programu Excel nie będą mogły poprawnie oddzielić pól.

sfs_dump -c

Podane instrukcje zakładają rozsądną znajomość programu Excel, ale można je przełożyć na inne oprogramowanie do obsługi arkuszy kalkulacyjnych.

Nowoczesne wersje programu Excel zezwalają na wiele wierszy, ale należy pamiętać, że każdy plik w danych wyjściowych sfs_dump do przetworzenia to pojedynczy wiersz, dlatego program Excel musi być w stanie szybko przetworzyć i zaktualizować arkusz kalkulacyjny z tyloma wierszami, ile jest plików w zestawie danych. Twardy limit wynosi nieco ponad 1 milion wierszy, ale nawet przy znacznie mniejszej liczbie plików program Excel może nie być odpowiedni do zadania (zbyt wolno).

Jeśli sfs_dump dane wyjściowe mają zbyt wiele plików dla wersji programu Excel lub do przetwarzania danych w mniejszych bitach w celu zwiększenia wydajności, spróbuj uruchomić procedurę raz dla każdego drzewa MTree, aby system miał wiele arkuszy kalkulacyjnych.

Nawet pojedynczy MTree sfs_dump dane wyjściowe mogą być zbyt duże dla programu Excel, w takim przypadku można użyć polecenia split Linux (lub dowolnego innego podobnego narzędzia do podzielenia dużego pliku tekstowego w trybie online), aby mieć kilka mniejszych plików CSV do przetworzenia pojedynczo, na przykład:

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

Na przykład aby podzielić wejściowy plik tekstowy na fragmenty po 200 MiB każdy, tak aby elementy miały nazwy zaczynające się od:

"sfs_dump.out.split"

Uruchom:

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


Skrypt używający polecenia "filesys sfs-dump" do zrzutu danych pliku w całym systemie plików.

Dla tych kilku wersji, w przypadku których nie było możliwości zrzutu szczegółów pliku w formacie CSV, skrypt przedstawiony poniżej jest dostarczany użytkownikom przez firmę Dell w niezmienionej postaci (bez gwarancji) w celu osiągnięcia podobnego rezultatu przez przetwarzanie danych wyjściowych sfs_dump innych niż CSV.

Ponieważ wersje nieobsługujące danych wyjściowych CSV to również te, które nie pozwalają na zrzucenie informacji dla wszystkich plików w FS jako całości, skrypt używa SSH do łączenia się z docelową Data Domain w celu iteracji po liście MTree, uruchamiając zrzut plików po jednym MTree na raz, aby zebrać listę plików dla wszystkich MTree, a następnie przekształcić do formatu CSV adekwatnego do dalszego przetwarzania:

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


Skrypt łączący dane wyjściowe z innych niż CSV "sfs-dump" i "filesys report generate file-location" w plik CSV z tymi samymi informacjami, co skrypt powyżej, oraz informacjami o warstwie pliku i czasie umieszczania.

Poniższy skrypt jest dostarczany użytkownikom w stanie, w jakim się znajduje (bez gwarancji) przez firmę Dell w celu dodania wartości do danych wyjściowych sfs_dump i powyższych poleceń filesys report generate file-location. Użytkownik może filtrować pliki na podstawie warstwy (aktywna lub dowolna z maksymalnie dwóch skonfigurowanych jednostek chmury), aby uzyskać dokładniejszy wgląd w dystrybucję plików na warstwę, dodając informacje o lokalizacji warstwy i czasie umieszczania do każdego wpisu pliku w wyjściowym pliku CSV.

Skrypty oczekują danych wyjściowych sfs-dump (nie sfs_dump -c) jako pierwszego parametru oraz danych wyjściowych filesys report generate file-location jako drugiego. Dane wyjściowe są zapisywane w zakodowanym na stałe pliku o nazwie „sfs-dump-output-tiers.csv”, który może być zmieniony w samym skrypcie.

Dane wyjściowe można przetworzyć za pomocą programu Excel w taki sam sposób, jak wyjaśniono powyżej.

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


Dla użytkowników Veritas NetBackup:

Wiadomo, że Veritas NetBackup (NBU) tworzy pliki w Data Domain ze znakami dwukropka będącymi częścią nazw plików. Na przykład poniżej przedstawiono prawidłowe ścieżki nazw plików NBU, gdy używa się Data Domain jako pamięci masowej zaplecza dla 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::

Stwarza to problem z powyższymi przykładowymi skryptami, ponieważ dwukropek jest używany jako separator danych wyjściowych polecenia sfs_dump dane wyjściowe polecenia, a uruchomienie powyższych skryptów dałoby nieprawidłowe wyniki.

W takich przypadkach skrypt musi być edytowany w sposób opisany poniżej:

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

Podczas gdy zmiany są udostępniane w skrypcie w celu iteracji po wszystkich MTree w Data Domain w celu pobrania danych sfs_dump dla poszczególnych MTree, zmiany są takie same dla drugiego skryptu. Ponieważ jednak dotyczy to również samych skryptów, powyższe zmiany są dostarczane przez firmę Dell bez żadnej gwarancji, w nadziei, że okażą się przydatne.

Produse afectate

Data Domain

Produse

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