Data Domain: Jak zobrazit seznam souborů v systému souborů Data Domain pomocí příkazu sfs-dump

Summary: Tento článek používá rozhraní příkazového řádku (CLI) Data Domain k výpisu výpisu souborů a adresářů pro jednotlivé fondy MTree nebo pro systém souborů (FS) jako celek.

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) je pasivní backendové úložné zařízení. Ukládá pouze to, co mu zálohovací aplikace řeknou, a data odstraní pouze tehdy, když mu zálohovací aplikace přikáže odstranit soubory. Systém Data Domain nikdy nevytváří ani neodstraňuje žádné soubory sám.

Bez ohledu na vložený protokol obsahuje systém Data Domain FS pouze soubory (v adresářích) uspořádané ve fondech MTree. Všechny soubory (jak v aktivních, tak v libovolných cloudových jednotkách) sdílejí stejný kořenový adresář a obor názvů. Existuje jeden obor názvů, což znamená, že výpisy souborů a adresářů zahrnují soubory v aktivních a cloudových jednotkách bez jakéhokoli rozdílu.

Získání podrobného výpisu stavu souboru může být užitečné z následujících důvodů:
  • Porovnání se seznamem souborů spravovaných zálohovací aplikací k vyhledání osamocených souborů pomocí této aplikace.
  • Výpis všech souborů, které překročily určitou prahovou hodnotu stáří, aby bylo možné zjistit, zda zálohovací aplikace vynucuje uchování záloh

Cause

Nástroj CLI pro vytváření seznamů souborů je sfs_dump.

Resolution

Ke shromáždění výstupu seznamu použijte protokolování relace SSH. Přesný příkaz, který je třeba spustit z rozhraní příkazového řádku DD za účelem shromáždění výpisů souborů, závisí na použité verzi operačního systému Data Domain (DDOS).

Rychlé odkazy

Podrobný výpis souborů v systému Data Domain z rozhraní příkazového řádku a případně proces získání informací o souborech uložených v systému Data Domain závisí na spuštěné verzi systému DDOS.

Jakmile je shromážděn textový výstupní soubor s podrobnostmi o souboru, zpracování výstupu do použitelnější podoby je vždy stejné, protože výstupní formát pro všechny verze systému DDOS je stejný (nebo jej lze převést do běžného formátu pomocí skriptu).

Protokolování relace SSH:

Společné pro všechny verze systému DDOS je požadavek přihlásit se do systému Data Domain jako uživatel admin, a to pomocí klienta SSH, který podporuje protokolování výstupu konzoly do textového souboru na straně klienta (v tomto případě dobře funguje nástroj PuTTY). Nakonfigurujte klienta SSH tak, aby zaznamenával výstup do textového souboru na klientovi (ujistěte se, že neexistují žádná omezení počtu zaznamenaných řádků nebo délky jednotlivých řádků). Soubor protokolu relace SSH (a tedy výpisy souborů DD) se nezapisuje do systému Data Domain, ale do (obvykle) klienta pro stolní počítače, ze kterého je připojení SSH inicializováno.

Při shromažďování výstupu relace SSH nezapomeňte dát souboru smysluplný název (například přidejte název hostitele Data Domain a název MTree, který se má vypisovat) a dostatek místa pro soubor protokolu, který může mít přibližně 200 MB pro systémy Data Domain s 1 milionem souborů.

Verze systému DDOS starší než 7.13.0.0, 7.10.1.15, 7.7.5.25 a 6.2.1.110:

Tyto verze stále podporují se sfs_dump (a možnost -c možnost výstupu podrobností o souboru přímo jako CSV bez dalšího zpracování), i když se z bezpečnostních důvodů nedoporučuje přejít do režimu Support Engineer (SE) a místo toho upgradovat na nejnovější dostupnou verzi systému DDOS.

Přihlaste se do systému Data Domain jako uživatel admin s klientem SSH nakonfigurovaným pro zápis výstupu na disk, přepněte do režimu oprávnění SE a poté spusťte následující příkaz pro každý fond MTree, který vyžaduje podrobnosti o souboru:

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

Příkaz v těchto verzích může také vytvořit výpis pro všechny soubory v sadě FS najednou (namísto postupně pro jednotlivé fondy MTree). Chcete-li vypsat podrobnosti pro všechny soubory v systému FS, ponechte cestu k fondu MTree:

# se sfs_dump -c

Po dokončení se ujistěte, že jste zastavili protokolování klienta SSH na disk, a odložte soubory stranou pro další zpracování.

Ve výstupu příkazu každý jeden řádek patří jednomu souboru. Pokud se nepoužívá -c, je formát shodný s formátem uvedeným výše pro pozdější verze. V případech, kdy -c (pro CSV výstup), formát je následující (včetně hlavičky zobrazené jako první řádek ve výstupu):

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 verze 7.13.0.0, 7.10.1.15, 7.7.5.25 a 6.2.1.110 nebo novější:

Fond MTree, který má být uveden, následuje po klíčovém slově "MTree":

# filesys sfs-dump mtree <mtree-path>

filesys sfs_dum ve srovnání s se sfs_dump:

  • Nový příkaz nepodporuje možnost -c pro výpis informací o souboru ve formátu CSV (sloupec)
  • Nový příkaz může současně spouštět pouze fond MTree, není k dispozici podpora spuštění na celém souboru FS v rámci jednoho vyvolání

Pokud je nutné vypsat všechny podrobnosti souboru MTree do souboru, iterujte celý seznam MTree v systému Data Domain FS a spusťte příkaz jednou pro každý z nich. Uživatel může získat seznam fondů MTree v systému příkazem:

# mtree list

Přihlaste se do systému Data Domain jako uživatel admin s klientem SSH nakonfigurovaným pro zápis výstupu na disk a poté spusťte následující příkaz pro každý fond MTree, který vyžaduje podrobnosti o souboru:

# filesys sfs-dump mtree <mtree-path>

Pokud jsou potřeba podrobnosti o souboru pro více než jeden fond MTree, vyberte možnost provést všechny výpisy do stejného výstupního souboru nebo přepněte konfiguraci klienta SSH na jiný soubor před spuštěním příkazu pro každý z fondů MTree.

Případně můžete výstupy shromáždit bezobslužně spuštěním příkazu pomocí 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

V obou případech patří jednotlivé řádky výstupních informací jednotlivým souborům a mají následující formát:

/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 verze 8.1.0.0, 7.13.1.10, 7.10.1.30 a 7.7.5.40 nebo novější:

filesys fs-dump:

  • Možnost přidat možnost -c , takže se výstup vytiskne ve formátu CSV (pole oddělená sloupci)
  • Možnost spustit informace o výpisu souborů pro všechny soubory v systému FS najednou
  • Ke shromáždění výstupu použijte protokolování relace ssh .

Příkaz zůstává stejný jako u předchozích verzí, a má vylepšení, která jsou shrnuta níže:

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


Tento příkaz bude i nadále „skrytý“, takže se nezobrazí v interaktivní nápovědě rozhraní příkazového řádku ani v dokumentaci.

Jak zpracovat data sfs_dump nebo filesys sfs-dump do něčeho užitečného:

Formát jednotlivých souborů, které jsou hlášeny ve výstupu při použití příkazu filesys sfs-dump nebo sfs_dump bez -c lze popsat následovně:

/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

Ve výše uvedeném příkladu má originál velikost 136 794 bajtů, což po průchodu kanálem příjmu Data Domain FS vypočítá použití 15 045 bajtů po odstranění duplicit a 8 760 bajtů, když jsou jedinečné segmenty souboru před zápisem na disk komprimovány. Proto:

  • Odstranění duplicitních souborů (neboli "gcomp" nebo globální komprese) je faktor x9,09 (136 794 až 15 045 bajtů)
  • Lokální komprese souboru (aka jako "lcomp" pro místní kompresi) je faktor x1,72 (15 045 až 8760 bajtů)
  • Odhadované celkové zmenšení velikosti souboru (označované jako „kompresní poměr“) má faktor x15,62 (136 794 až 8 760 bajtů)

Případně je výstup sfs_dump -c podobný, ale stručnější:

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

V tomto příkladu lze provést stejné výpočty jako u předchozího:

  • Odstranění duplicitních souborů (neboli "gcomp" nebo globální komprese) je faktor x0,99 (33 554 431 až 33 668 007 bajtů)
  • Lokální komprese souboru (aka "lcomp" pro místní kompresi) je faktor x0,98 (33 668 007 až 34 208 564 bajtů)
  • Odhadované celkové zmenšení velikosti souboru (označované jako „kompresní poměr“) má faktor x0,98 (33 554 431 až 34 208 564 bajtů)

Ve srovnání se souborem zobrazeným pro příklad bez -c tento příklad nedosahuje žádné deduplikace (žádné redundantní segmenty) ani žádné místní komprese. To znamená, že se jedná o komprimovaný soubor.
 

Upozornění: Údaje ve výstupních souborech týkající se jiné velikosti než "velikost souboru v bajtech" je třeba brát jako přibližné a nelze se na ně plně spolehnout. Metadata pro soubory se vytvářejí v době příjmu souborů, a i když jsou správná, od té doby se vůbec neaktualizují, takže časem zastarají. Zároveň pokud je uvedeno post_lc_size souboru, neznamená to, že místo na disku zabírané tímto souborem je identické s tímto množstvím, protože existuje mnoho režijních nákladů na úrovni systému FS, které nejsou brány v úvahu na úrovni jednotlivých souborů. Omezení jsou stejná jako u těch, která jsou již pro příkaz známa:
mtree show compression
Využití informací ve výše uvedených výstupních souborech spočívá ve zpracování číselných dat způsobem, který vyhovuje cílům uživatele. Zde je několik příkladů použití:
  • Určení gcomp a lcomp pro soubory odpovídající určité cestě (pokud lze cestu přiřadit k určitému zálohovacímu serveru, klientovi, zásadě, úloze atd.)
  • Výpočet množství dat (pre-comp) je uložen v daném umístění, které je starší než zadaná doba (pro určení sirotků nebo řešení problémů se zálohovací aplikací, která nevyprší platnost záloh po splatnosti)
  • Jakýkoli jiný užitečný typ statistiky
Pokud chcete mít jednotnou sadu instrukcí a kompenzovat ztrátu možnosti sfs_dump -c v novějších verzích doporučujeme nechat výstupní data převést do výše uvedeného formátu CSV a poté použít soubor ve formátu CSV k dalšímu zpracování, ale v závislosti na vašich dovednostech lze výstup bez CSV zpracovat přímo.

Převést na CSV:

Pro převod souboru v jiném formátu než CSV sfs_dump do takového, který je totožný s tím, co vytiskne příkaz sfs_dump -c by se vytiskl, lze použít následující příkazový řádek Linuxu:

# 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

 

Poznámka: Výše uvedený příkaz ignoruje vše ve vstupním souboru (sfs-dump-noCSV.txt), co nezačíná lomítkem, protože pouze řádky začínající na „/data“ mají obsahovat podrobnosti o souboru pro zpracování. Výstupní soubory mají první řádek jako záhlaví a jako oddělovač polí používají znak tabulátoru (\t).


Vše nad tímto bodem je uživatelům poskytováno tak, jak je. Na níže uvedené pokyny se nevztahuje žádná záruka ani závazek ze strany společnosti Dell. Získání informací z podrobností výpisu souborů je úkolem uživatele a způsob, jak toho dosáhnout, zcela závisí na sadě nástrojů používané pro získávání dat ve výstupu výpisu souboru, cíli, kterého chce uživatel dosáhnout, a vlastních odborných znalostech uživatele při zpracování dat z výše uvedeného výstupu příkazu. Jeden uživatel se může rozhodnout použít zpracování textových souborů příkazovou řádkou Linuxu k výpisu některých agregátů, jiný se může rozhodnout vytvořit vstup pro grafy hodnot pomocí "gnuplot", zatímco většina uživatelů se domnívá, že hledá jednodušší (ale omezený) přístup k vytvoření tabulky ze souboru CSV pro analýzu.

Společnost Dell vynaložila maximální úsilí, aby zajistila, že níže uvedené pokyny budou správné, funkční a užitečné pro uživatele, ale nemůže zaručit, že budou fungovat, stejně jako nebude poskytována podpora, protože jsou mimo rozsah poskytování podpory.

Import výstupu sfs_dump ve formátu CSV do sešitu (příklad pro Excel):

Jakmile je k dispozici verze CSV výpisu podrobností souboru, jedním ze způsobů, jak získat informace z dat, je načíst je do tabulkového procesoru. Jako příklad je použit Microsoft Excel, i když pokyny by měly být podobné i pro jiný software. Chcete-li importovat textový soubor CSV do aplikace Excel jako CSV, postupujte následovně:

  1. Otevřete Excel a vytvořte novou prázdnou tabulku
  2. Přejděte do nabídky Data v horní části a klikněte na ikonu s názvem Z Text/CSV
  3. Pomocí dialogového okna vyhledejte soubor s daty ve formátu CSV (sfs-dump-CSV.csv jako v ukázkovém skriptu pro převod z jiného formátu než CSV), vyberte jej a klikněte na tlačítko Importovat
  4. Pokud je formát vstupního souboru správný a aplikace Excel by mohla vykreslit formát z prvních 200 řádků (což by měla), měl by se v dialogovém okně zobrazit náhled tabulky, která má být vygenerována. Zkontrolujte informace a ujistěte se, že vypadají dobře, včetně toho, že je první řádek rozpoznán jako záhlaví
  5. Pokud s náhledem vše vypadá dobře, klikněte na Načíst tlačítko ve spodní části dialogového okna a nová tabulka se zobrazí s pěkným formátováním a záhlaví polí se změní na záhlaví polí s podporou vyhledávání a filtrování.

Data v tabulce jsou již užitečná, například použití číselného filtru na číselná pole, jako je velikost (pro zobrazení pouze souborů nad danou velikostí), nebo použití textového filtru na pole názvu, aby se zobrazily pouze soubory ve výstupu podrobností o souboru Data Domain, které odpovídají danému vzoru (pouze ty, které začínají cestou pro konkrétní fond MTree), a provádět další odvozené výpočty z těchto dat.

Správně importovaná excelová tabulka by měla obsahovat data ve sloupcích A–I. Pokud jsou data přítomna jenom ve sloupci A, ale roztahují se přes celou obrazovku, zavřete Excel a opakujte kroky 1 až 5 výše.

Přidání dalších počítaných polí:

Tabulku lze rozšířit o tolik vypočítaných polí, kolik uživatel potřebuje. Zajímavým polem, které je třeba přidat, je pro člověka čitelné datum a čas odpovídající času souborů (čas poslední změny, obvykle čas zápisu do systému DD). Výpočet a zobrazení některých hodnot komprese jednotlivých souborů může být také užitečné v závislosti na tom, k čemu se data používají. Nové sloupce se vyplní automaticky pomocí vzorců aplikace Excel, jak je popsáno níže.

Převod časového razítka:

Převedení časového razítka ve stylu UNIX na datum a čas čitelné pro člověka:

  1. Klikněte pravým tlačítkem na buňku J2 a vyberte možnost „Formát buněk
  2. V seznamu „Kategorie“ vlevo vyberte možnost „Vlastní“.
  3. Pokud není přítomen, vytvořte formát data a času čitelný pro člověka (příklad na konci obsahuje řetězec EST. Může být nahrazen textovou definicí časového pásma nebo zcela odstranit "EST", pokud nemá zájem): rrrr-mm-dd hh:mm:ss "EST"
  4. Po dokončení klikněte na tlačítko OK. Buňka J2 má nyní vlastní formát dat.
  5. Do buňky J2 přidejte následující vzorec. Ve vzorci nahraďte hodnotu (-6*3600) správným rozdílem časového pásma odpovídajícím UTC pro nakonfigurované časové pásmo v systému Data Domain v době získání dat „sfs-dump“. Například východoamerický čas je v létě o 6 hodin pozadu za UTC, proto je zde „-6“.
Pokud nemáte zájem o tak přesnou úpravu času, můžete místo toho použít zkrácenou formu vzorce. Nejjednodušší způsob, jak přidat vzorec a vyhnout se přepsání formátu data a času, je zkopírovat kteroukoli ze dvou níže uvedených verzí a vložit ji do buňky J2 po zadání znaku "rovná se" (=), abyste mohli začít buňku upravovat:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Poznámka: Pokud je text vložen do J2, aniž by byla buňka nejprve uvedena do režimu úprav (tzv. call), formát buňky se přepíše. Případně předepište vzorec znakem "=", zkopírujte celý text a klikněte pravým tlačítkem myši na buňku J2 pro Vložit jinak, poté vyberte Jako text a klikněte na OK. Mělo by to mít stejný účinek. Pokud se to povedlo, aplikace Excel automaticky provede několik věcí:
  • Vloží vzorec do buňky J2 a také do každé buňky ostatních řádků v tabulce 
  • Vypočítá vzorec pro celou tabulku a zobrazí hodnotu data a času v nakonfigurovaném formátu
  • Pěkně naformátujte sloupec jako existující a mějte záhlaví nakonfigurované jako Datum s možností použít filtry data, jediné, co musíte udělat, je nastavit správný název sloupce (Date)

Informace o kompresi:

Sloupce lze přidat pro informace o kompresi jednotlivých souborů, a to tak, jak je vysvětleno výše. Tentokrát se vzorce zobrazují včetně "=", takže je třeba zkopírovat celý text a Vložit jinak jako text:

  • Zkopírujte následující vzorec a vložte jinak jako text do buňky K2, abyste vytvořili sloupec pro odstranění duplicit pro jednotlivé soubory, nebo gcomp:
    =IF(H2=0,0,D2/H2)
  • Zkopírujte následující vzorec a vložte jinak jako text do buňky L2, abyste vytvořili sloupec pro místní kompresi pro jednotlivé soubory, nebo lcomp:
    =IF(I2=0,0,H2/I2)
  • Zkopírujte následující vzorec a vložte jej jinak jako text do buňky M2, abyste vytvořili sloupec pro celkový kompresní poměr jednotlivých souborů:
    =K2*L2

Dejte novým sloupcům správný název. Chcete-li, aby hodnoty komprese byly v jiném formátu (například aby se omezil počet desetinných míst), proveďte stejný postup jako v příkladu pro datum a čas a před vložením vzorce nastavte číselný formát buňky předem.

Nezapomeňte si svou práci uložit v nabídce Soubor, výběrem možnosti Uložit jako. Tak zajistíte, že typ uloženého souboru je nastaven na Sešit Excelu (*.xlsx), aby bylo zachováno formátování a filtrování.

Po dokončení popsaných akcí bude tabulka obsahovat následující (relevantní) sloupce:

  • A obsahuje název souboru
  • B obsahuje datumové razítko (v epoše UNIX v nanosekundách), kdy byl soubor naposledy zapsán
  • D je původní velikost souboru
  • H je velikost po globální kompresi
  • I je velikost po globální a místní kompresi
  • J obsahuje datové razítko posledního zápisu souboru ve formě čitelné pro člověka.
  • K obsahuje globální kompresi (deduplikaci) souboru
  • L obsahuje místní kompresi souboru
  • M obsahuje celkovou kompresi souboru

Všechny velikosti souborů jsou uvedeny v bajtech.
Excel teď může být filtrován nebo řazen podle potřeby pro vytváření sestav dat.

  • Chcete-li například zobrazit pouze soubory ve fondu MTree /data/col1/backup, které jsou starší než 30 dní:
  1. Klikněte na šipku dolů v záhlaví Název, vyberte možnost Textové filtry, pak Začíná na a zadejte do pole /data/col1/backup/ . Koncové lomítko je důležité. Klikněte na tlačítko OK.
  2. Klikněte na šipku dolů v záhlaví Datum posledního zápisu, vyberte Datové filtry a poté možnost Před. Pomocí nástroje pro výběr data v pravé části dialogového okna vyberte datum před 30 dny. Klikněte na tlačítko OK.
Stavový řádek v dolní části ukazuje, kolik řádků odpovídá tomuto výběru.

Additional Information

Příkaz k výpisu umístění souboru (aktivní a cloudová jednotka)

Existuje způsob, jak vypsat výpis souborů s uvedením toho, které jsou v aktivních a které v jakýchkoli cloudových jednotkách:

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

Výstup je v obou případech následujícího 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
-------------------------      ----------------------      ----------------------      ---------------------------

Výše uvedený příkaz však bývá většinou nedostatečný, protože například velikost je uvedena v jednotkách čitelných pro člověka (nikoli v bajtech, MiB nebo jakémkoli nastaveném násobiteli) a čas umístění odpovídá času, kdy byly provedeny zálohy do systému Data Domain pro soubory v režimu Active, ale ne pro soubory v cloudu (údaj „Placement Time“ představuje datum a čas, kdy byl soubor přesunut na cloudovou jednotku).

Upozorňujeme také, že níže uvedený příkaz (a skript pro převod z jiného typu než CSV sfs_dump) vypíše data ve sloupcích, které jsou odděleny tabulátory. Znaky tabulátoru přítomné ve výstupu musí být uloženy v souboru protokolu, jinak pomocí výše uvedených kroků pro import souboru CSV do aplikace Excel nebude možné pole správně oddělit.

sfs_dump -c

Uvedené pokyny předpokládají přiměřenou znalost aplikace Excel, ale mohou být přeloženy do jiného tabulkového softwaru.

Moderní verze aplikace Excel umožňuje mnoho řádků, ale mějte na paměti, že každý soubor ve výstupu sfs_dump , který se má zpracovat, představuje jeden řádek, takže aplikace Excel musí být schopna rychle zpracovat a aktualizovat tabulku s tolika řádky, kolik je souborů ve vaší datové sadě. Pevný limit je mírně přes 1 milion řádků, ale i při počtu souborů, který je výrazně nižší, nemusí být Excel pro úlohu vhodný (příliš pomalý).

V případě, že sfs_dump výstup má příliš mnoho souborů pro verzi Excelu nebo pro zpracování dat v menších bitech pro výkon, zkuste spustit postup jednou pro každý MTree, takže pro systém existuje více tabulek.

Dokonce i jediný fond MTree sfs_dump výstup může být pro Excel příliš velký, v takovém případě lze použít příkaz split Linux (nebo jakýkoli jiný podobný nástroj k rozdělení velkého textového souboru online koncové hranice), abyste měli několik menších souborů CSV ke zpracování jeden po druhém, například:

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

Chcete-li například rozdělit vstupní textový soubor na bloky po 200 MiB, aby názvy těchto částí začínaly na:

"sfs_dump.out.split"

, spusťte příkaz:

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


Skript pro použití příkazu "filesys sfs-dump" pro úplný FS výpis souborových dat.

U těch několika verzí, které postrádaly možnost výpisu podrobností o souboru ve formátu CSV, poskytuje společnost Dell uživatelům skript uvedený níže tak, jak je (bez záruky), aby bylo možné dosáhnout podobného výsledku zpracováním výstupu v jiném formátu než CSV sfs_dump .

Protože verze, které nepodporují výstup CSV, neumožňují výpis informací pro všechny soubory v systému FS jako celek, skript se pomocí SSH připojí k cílové datové doméně a iteruje přes seznam fondů MTree, přičemž spustí výpis souborů postupně u fondů MTree, shromáždí výpis souborů pro všechny fondy MTree a poté je převede do formátu CSV vhodného pro další zpracování:

#!/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 pro kombinování výstupu jiných formátů než CSV "sfs-dump" a "filesys report generate file-location" do souboru CSV se stejnými informacemi jako ve výše uvedeném skriptu a informacemi o čase pro jednotlivé soubory a umístění.

Následující skript je společností Dell poskytován uživatelům tak, jak je (bez záruky), jako prostředek k navýšení hodnoty výstupu sfs_dump a výše uvedených příkazů filesys report generate file-location. Uživatel může filtrovat soubory na základě vrstvy (aktivní nebo kterákoli z až dvou nakonfigurovaných cloudových jednotek) a získat přesnější přehled o distribuci souborů podle vrstev přidáním informací o umístění ve vrstvě a čase umístění do každé položky souboru ve výstupním souboru CSV.

Skripty očekávají výstup sfs-dump (nikoli sfs_dump -c) jako první parametr a výstup filesys report generate file-location jako druhý. Výstup se zapisuje do pevně zakódovaného souboru s názvem „sfs-dump-output-tiers.csv“, který lze změnit v rámci samotného skriptu.

Výstup lze zpracovat pomocí aplikace Excel stejným způsobem, jak je vysvětleno výše.

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


Pro uživatele služby Veritas NetBackup:

Je známo, že služba Veritas NetBackup (NBU) vytváří soubory v systému Data Domain s dvojtečkou v názvech souborů. Například níže jsou uvedeny platné cesty k souborům NBU, pokud je systém Data Domain použit jako backendové úložiště pro 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::

To představuje problém s výše uvedenými ukázkovými skripty, protože znak dvojtečky se používá jako oddělovač pro výstup příkazu sfs_dump výstup příkazu a spuštěním výše uvedených skriptů by došlo k nesprávným výsledkům.

V takových případech musí být skript upraven následujícím způsobem:

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

Zatímco jsou změny sdílené, aby skript iteroval přes všechny fondy MTree v systému Data Domain a vyžádal si je pro data v jednotlivých fondech MTree sfs_dump , změny jsou stejné i pro druhý skript. Stejně jako v případě samotných skriptů však výše uvedené změny poskytuje společnost Dell bez jakékoli záruky v naději, že budou užitečné.

Affected Products

Data Domain

Products

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