Data Domain: Jak vypsat soubory v systému souborů Data Domain, sfs-dump

Summary: Tento článek vysvětluje, jak pomocí rozhraní příkazového řádku Data Domain vypsat výpis souborů a adresářů pro jednotlivé fondy MTree nebo pro systém souborů (FS) jako celek. Uživatelé tak mohou zjistit, co se ze zálohovací aplikace ukládá do systému Data Domain. ...

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

Systém Data Domain 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
Vzhledem k nedávným změnám v systému DDOS se v průběhu času změnily příkazy, které se používají ke shromažďování výpisů souborů ze systémů Data Domain. Jsou k dispozici pouze v rozhraní příkazového řádku DD a závisí na verzi:
  • Pro systémy DDOS starší než 7.13.0.0, 7.10.1.15, 7.7.5.25 a 6.2.1.110
se sfs_dump
  • Pro všechny systémy DDOS verze 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110 nebo novější
filesys sfs-dump

Cause

Systém DDOS verze 7.13.0.0, 7.10.1.15, 7.7.5.25 a 6.2.1.110 a novější již v režimu SE neposkytuje přístup k níže uvedeným příkazům:
sfs_dump
Režim SE, který byl nezbytný pro přístup k této funkci, je zastaralý, jak je vysvětleno v části DSA-2023-412: Aktualizace zabezpečení Dell Technologies PowerProtect kvůli několika bezpečnostním chybám

Na přechodnou dobu nebyly některé funkce ve starém příkazu sfs_dump v režimu SE k dispozici, ale byly znovu zavedeny v pozdější fázi. Proto se tento článek znalostní databáze snaží vysvětlit rozdíly a jak se v každém případě vypořádat s výstupem příkazu.

Resolution

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

Společný pro všechny verze systému DDOS je také požadavek na přihlášení do systému Data Domain jako uživatel admin, a to pomocí klienta SSH, který podporuje protokolování výstupu konzole do textového souboru na straně klienta (v tomto případě dobře funguje nástroj PuTTY). Uživatel musí nakonfigurovat klienta SSH tak, aby zaznamenával výstup do textového souboru v klientském počítači (aby bylo zajištěno, ž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 (obvykle) do stolního 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 fondu MTree, který chcete vypsat) a zajistěte dostatek místa pro soubor protokolu, který může u systémů s 1 milionem souborů zabírat přibližně 200 MB.

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 systému DDOS – ty jsou shrnuty níže.
 

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í příkaz se sfs_dump (a možnost -c pro získání podrobností o souboru přímo ve formátu CSV bez nutnosti dalšího zpracování), i když se z bezpečnostních důvodů nedoporučuje přejít do režimu SE. Místo toho proveďte upgrade na nejnovější dostupnou verzi LTS DDOS.

Ujistěte se, že jste přihlášeni do systému Data Domain jako uživatel admin s klientem SSH nakonfigurovaným pro zápis výstupu na disk, změňte jej na režim oprávnění SE a poté spusťte následující příkaz u každého fondu MTree, pro který chcete získat 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 , formát je shodný s formátem uvedeným výše pro pozdější verze. V případech, kdy byl použit parametr -c (pro výstup CSV), je formát následující (včetně hlavičky zobrazené na prvním řádku 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ší:

Tato verze již neposkytuje přístup k sfs_dump z režimu SE (následující nastavení není k dispozici):
se sfs_dump
Režim SE je zastaralý kvůli zjištěným problémům se zabezpečením. Alternativní příkaz, který je třeba použít, je uveden níže. Všimněte si mírně odlišného názvu příkazu a toho, že v tomto případě se požadovaný fond MTree uvádí za klíčovým slovem „MTree“:
# filesys sfs-dump mtree <mtree-path>
Pro verze v záhlaví je tento příkaz sfs-dump ve srovnání s příkazem se sfsa_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 jeden fond MTree, není k dispozici podpora spuštění v celém systému FS v rámci jednoho volání
Pokud zákazníci v těchto verzích potřebují vypsat všechny podrobnosti o souborech MTree do souboru, je nutné projít celý seznam fondů MTree v systému Data Domain FS a spustit příkaz pro každý z nich samostatně. Uživatel může získat seznam fondů MTree v systému příkazem:
# mtree list
Výstup níže uvedeného příkazu je stejný jako u předchozího příkazu se sfs_dump při použití bez možnosti -c .
filesys sfs-dump
Ujistěte se, že jste přihlášeni 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, pro který chcete získat podrobnosti o souboru:
# filesys sfs-dump mtree <mtree-path>

Pokud získáváte podrobnosti o souborech pro více než jeden fond MTree, vyberte možnost pro provedení všech výpisů do stejného výstupního souboru, nebo před spuštěním příkazu pro každý z fondů MTree přepněte konfiguraci klienta SSH na jiný soubor.

Případně můžete provést sběr výstupu bezobslužným způsobem pomocí příkazu přes 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ší:

Vzhledem k poptávce zákazníků byly některé funkce ve starém příkazu se sfs_dump znovu zavedeny a jsou nyní k dispozici pro příkaz filesys sfs-dump , jmenovitě:
  • 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
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 užitečného formátu:

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áme soubor s původní velikostí 136 794 bajtů, pro který je podle výpočtu po průchodu kanálem Data Domain FS potřeba 15 045 bajtů po deduplikaci a 8 760 bajtů, když jsou jedinečné segmenty souboru před zápisem na disk zkomprimovány. Proto:
  • Deduplikace souborů (to, čemu říkáme „gcomp“ neboli globální komprese) má faktor x9,09 (136 794 na 15 045 bajtů)
  • Místní komprese souborů (kterou nazýváme „lcomp“ pro místní kompresi) má faktor x1,72 (15 045 na 8 760 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 můžeme provést stejné výpočty jako v předchozím příkladu:
  • Deduplikace souborů (to, čemu říkáme „gcomp“ nebo globální komprese) má faktor x0,99 (33 554 431 na 33 668 007 bajtů)
  • Místní komprese souborů (kterou nazýváme „lcomp“ pro místní kompresi) má faktor x0,98 (33 668 007 na 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ž „pre-comp size for the file in bytes“ 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, kolik dat (pre-comp) je uloženo v daném umístění, které je starší než dané množství (pro určení osamocených souborů nebo řešení problémů se zálohovací aplikací, ve které nedochází k vypršení platnosti záloh)
  • 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 převést výstupní data do výše uvedeného formátu CSV a poté použít soubor ve formátu CSV k dalšímu zpracování, nicméně v závislosti na vašich dovednostech můžete přímo zpracovat výstup i v jiném formátu než 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 , můžete použít následující příkazový řádek systému Linux:
# cat sfs-dump-noCSV.txt | grep ^/ | awk '
BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size"}
{
    colon_index = index($0, ":")
    filename = substr($0, 1, colon_index - 1)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
    n = split(substr($0, colon_index + 1), fields, " ")
    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19]
}' > sfs-dump-CSV.csv
 
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ů pomocí příkazového řádku systému Linux k výpisu některých agregátů, jiný se může rozhodnout vytvořit vstup pro grafy pomocí „gnuplot“, zatímco většina uživatelů zřejmě hledá jednodušší (ale omezený) přístup k vytvoření tabulky ze souboru CSV pro analýzu.

Společnost Dell se snaží zajistit, aby níže uvedené pokyny byly pro uživatele správné, funkční a užitečné, ale nemůžeme zaručit, že vám budou vyhovovat, a nezajišťujeme jim podporu, protože jsou mimo její rozsah.


Import výstupu ve formátu CSV sfs_dump do tabulky (příklad pro aplikaci 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 vše vypadá správně, včetně toho, že je první řádek rozpoznán jako záhlaví.
  5. Pokud s náhledem vše vypadá v pořádku, klikněte na tlačítko Načíst ve spodní části dialogového okna a vaše nová tabulka se vám zobrazí s pěkným formátováním a záhlaví polí umožní vyhledávání a filtrování.
Data v tabulce jsou již užitečná: můžete například použít číselný filtr na číselná pole, jako je velikost (zobrazit pouze soubory nad danou velikostí), nebo použít textový filtr 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 až I. Pokud jsou data přítomna jenom ve sloupci A, ale roztahují se přes celou obrazovku, zavřete aplikaci Excel a opakujte kroky 1 až 5 výše.

Přidání dalších vypočí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ůžete jej nahradit textovou definicí časového pásma nebo část „EST“ zcela odstranit): dd-mm-rrrr 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 jednu ze dvou níže uvedených verzí a vložit ji do buňky J2, jakmile do buňky zadáte znak „rovná se“ = a začnete buňku upravovat:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Poznámka: Pokud do buňky J2 vložíte text, aniž byste buňku nejprve přepnuli do tzv. režimu úprav, přepíšete formát buňky. Případně můžete před vzorec vložit znak =, zkopírovat celý text a kliknout pravým tlačítkem na buňku J2, vybrat možnost Vložit jinak, poté vybrat možnost Jako text a kliknout na tlačítko 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átuje sloupec podle stávajících a nakonfiguruje záhlaví jako Datum s možností použít filtry data. Jediné, co byste museli udělat, je nastavit správný název sloupce (Datum)

Informace o kompresi

Můžete přidat sloupce pro informace o kompresi jednotlivých souborů podle výše popsaného postupu. Tentokrát zobrazujeme vzorce včetně =, takže je třeba zkopírovat celý text, kliknout na možnost Vložit jinak a vložit jej jako text:
  • Zkopírujte následující vzorec a vložte jej jinak jako text do buňky K2, abyste vytvořili sloupec pro deduplikaci u jednotlivých souborů neboli gcomp:
    =IF(H2=0,0,D2/H2)
  • Zkopírujte následující vzorec a vložte jej jinak jako text do buňky L2 a vytvořte sloupec pro místní kompresi pro jednotlivé soubory neboli 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.
Nyní můžete pomocí aplikace Excel filtrovat nebo řadit svá data podle potřeby.
  • 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 mírně přesahuje 1 milion řádků, ale i při počtu souborů, který je výrazně nižší, nemusí být aplikace Excel pro úlohu vhodná (je příliš pomalá).

Pokud váš výstup sfs_dump má příliš mnoho souborů pro vaši verzi aplikace Excel nebo chcete zpracovávat data v menších bitech pro výkon, můžete zkusit spustit postup jednou pro každý fond MTree, abyste měli pro systém více tabulek.

Dokonce i jediný výstup fondu MTree sfs_dump může být pro aplikaci Excel příliš velký; v takovém případě můžete použít příkaz split systému Linux (nebo jakýkoli jiný podobný nástroj k rozdělení velkého textového souboru), abyste měli několik menších souborů CSV k postupnému zpracování, 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, který se má použít "filesys sfs-dump" pro celý výpis FS 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.60.36.172"
#### NO CHANGES NEEDED BEYOND THIS POINT

clear
echo "Script collects a full FS sfs-dump from \"${DD_HOSTNAME}\", using the command \"filesys sfs-dump\", one MTree at a time"
echo "    * Script has to be configured by settting the \"USERNAME\" and \"DD_HOSTNAME\" variables within the top of the script"
echo "    * Script expects passwordless SSH connection as \"USERNAME\" to the \"DD_HOSTNAME\" configured"
echo "    * To configure passwordless SSH login to a DataDomain, check KB at https://www.dell.com/support/kbdoc/000004033 "
echo "    * Test passwordless login is configured and working prior to going ahead with this script"
echo "    * If passwordless login is not configured, script will ask for the \"${USERNAME}\" password "
echo "          - Once for getting the MTree list"
echo "          - And once for each one of the MTrees in \"${DD_HOSTNAME}\" "
echo
echo -n "Are you sure you want to continue? (y/n) : "
read -n 1 answer
echo
if [ "${answer}" = "y" ]; then
    echo "Going ahead with the script."
    echo
else
    echo "Stopping script now. Re-run when passwordless login to \"${DD_HOSTNAME}\" as \"${USERNAME}\" works. Bye."
    exit 1
fi

echo -n "1/6 : Collecting list of MTrees from DD..."
ssh ${USERNAME}@${DD_HOSTNAME} "mtree list" 2>/dev/null | grep ^/ | awk '{print $(NF-3)}' > mtree-list.txt
echo "Done."

n_mtrees=$( wc -l mtree-list.txt | cut -d" "  -f1 )
echo -n "2/6 : Collecting per-Mtree sfs-dump information for ${n_mtrees} MTrees ..."
for mtree in `cat mtree-list.txt`; do
    name=$(echo $mtree | cut -d/ -f4)
    ssh ${USERNAME}@${DD_HOSTNAME} "filesys sfs-dump mtree ${mtree}" 2>/dev/null | grep ^/ > sfs-dump-${name}.txt
    echo -n "."
done
echo "Done."

echo -n "3/6 : Putting all the files together..."
for file in `ls sfs-dump-*.txt`; do 
    if [ -s "${file}" ]; then cat ${file} >> sfs-dump-noCSV.txt; fi
done
echo "Done."

echo -n "4/6 : Converting sfs-dump output to CSV format..."
cat sfs-dump-noCSV.txt | grep ^/ | grep -v ^$ | awk '
BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size"}
{
    colon_index = index($0, ":")
    filename = substr($0, 1, colon_index - 1)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
    n = split(substr($0, colon_index + 1), fields, " ")
    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19]
}' > sfs-dump-CSV.csv
echo "Done."

echo -n "5/6 : Cleaning up..."
for mtree in `cat mtree-list.txt`; do name=$(echo $mtree | cut -d/ -f4); rm -f sfs-dump-${name}.txt ; done
rm sfs-dump-noCSV.txt
rm mtree-list.txt
echo "Done."


echo -n "6/6 : Summary"
echo
n_files=$( wc -l sfs-dump-CSV.csv | cut -d" "  -f1 )
echo
echo "Collecting whole FS sfs-dump data from ${HOSTNAME} completed"
echo "File includes output for ${n_mtrees} MTrees, with a combined $(( ${n_files} - 1 )) files across Active and Cloud Tiers (if applicable)"
echo "Start of file shown below for your convenience :"
echo "===================="
head -5 sfs-dump-CSV.csv
echo "===================="
echo
echo "Done."

exit 0

Skript pro zkombinování výstupu příkazů „sfs-dump“ a „filesys report generate file-location“ v jiném formátu než CSV do souboru CSV se stejnými informacemi jako ve výše uvedeném skriptu a informacemi o čase pro každou vrstvu souboru 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 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 je nutné upravit skript 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ám však společnost Dell poskytuje výše uvedené změny bez jakékoli záruky a doufá, že budou užitečné.

Affected Products

Data Domain

Products

Data Domain
Article Properties
Article Number: 000081345
Article Type: Solution
Last Modified: 27 May 2025
Version:  21
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.