Data Domain: Så här listar du filer i Data Domain-filsystemet, sfs-dump

Summary: I den här artikeln beskrivs hur du använder Data Domain CLI för att dumpa fil- och kataloglistorna för enskilda MTrees eller för filsystemet (FS) som helhet. Det gör det möjligt för användare att ta reda på vad som finns lagrat i Data Domain från säkerhetskopieringsprogrammet. ...

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 är en passiv backend-lagringsenhet. Den lagrar bara det som säkerhetskopieringsprogrammen säger åt den att göra och tar bara bort data när säkerhetskopieringsprogrammet säger åt den att ta bort filer. Data Domain skapar eller tar aldrig bort några filer på egen hand.

Oavsett inmatat protokoll innehåller Data Domain FS endast filer (i kataloger) som är ordnade i MTrees. Alla filer (både för filer i aktiva och i alla molnenheter) delar samma rot och namnområde. Det finns ett enda namnområde, vilket innebär att fil- och kataloglistorna innehåller filerna i de aktiva enheterna och molnenheterna utan någon åtskillnad.

Att hämta en detaljerad fildump kan vara användbart av orsaker som:
  • Att jämföra mot en lista med filer som hanteras av ett säkerhetskopieringsprogram för att kontrollera om det finns överblivna filer från säkerhetsprogrammet.
  • Visa en lista över alla filer över ett visst ålderströskelvärde för att avgöra om säkerhetskopieringsprogrammet tillämpar böterna för kvarhållande av säkerhetskopior
På grund av de senaste ändringarna i DDOS har kommandona som ska användas för att samla in listor över filer från Data Domain-system ändrats över tid. Dessa är endast tillgängliga från DD CLI och beroende på version är:
  • För DDOS tidigare än 7.13.0.0, 7.10.1.15, 7.7.5.25 och 6.2.1.110
se sfs_dump
  • För alla DDOS som är lika med eller senare än 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110
filesys sfs-dump

Cause

DDOS-versionerna 7.13.0.0, 7.10.1.15, 7.7.5.25 och 6.2.1.110 och senare ger inte längre åtkomst till kommandot nedan i SE-läge:
sfs_dump
SE-läget, som var nödvändigt för att komma åt den här funktionen, har tagits bort enligt beskrivningen i DSA-2023-412: Dell Technologies PowerProtect-säkerhetsuppdatering för flera säkerhetsproblem

Under en övergångsperiod har en del av funktionerna i den gamla sfs_dump Kommandot i SE-läge var inte tillgängligt, men återinfördes i ett senare skede. Därför försöker denna KB förklara skillnaderna och hur man hanterar kommandoutdata i varje enskilt fall.

Resolution

För att få en detaljerad lista över filer i en Data Domain från CLI, och så småningom processen för att få information om filer som lagras i Data Domain, beror på vilken DDOS-version som körs. När textutdatafilen med filinformationen har samlats in är bearbetningen av utdata till ett mer användbart format alltid detsamma, eftersom utdataformatet för alla DDOS-versioner är detsamma (eller kan konverteras till ett vanligt format med hjälp av ett skript).

Gemensamt för alla DDOS-versioner är kravet på att logga in på Data Domain som administratörsanvändare, och göra det med en SSH-klient som stöder loggning av konsolens utdata till en textfil på klientsidan (PuTTY fungerar bra för detta). En användare måste konfigurera SSH-klienten så att den loggar utdata till textfilen på klientdatorn (se till att det inte finns några begränsningar för antalet rader som loggas eller den enskilda radlängden). SSH-sessionsloggfilen (och därmed DD-fillistor) skrivs inte på Data Domain, utan på den (vanligtvis) stationära dator som SSH-anslutningen initieras från.

När du samlar in SSH-sessionsutdata ska du se till att ge filen ett beskrivande namn (t.ex. lägga till Data Domain-värdnamnet och MTree-namnet som ska dumpas) och se till att det finns tillräckligt med utrymme för loggfilen, som kan vara cirka 200 MB för system med 1 miljon filer.

Det exakta kommandot som ska köras från DD CLI för att samla in listor över filer beror på vilken DDOS-version som används, de sammanfattas nedan.
 

DDOS-versioner före 7.13.0.0, 7.10.1.15, 7.7.5.25 och 6.2.1.110:

Dessa versioner har fortfarande stöd för se sfs_dump kommandot (och -c alternativ för att mata ut filinformation direkt som CSV utan ytterligare bearbetning), även om det inte rekommenderas att gå till SE-läge av säkerhetsskäl, och istället uppgradera till den senaste tillgängliga LTS DDOS-versionen.

Se till att du är inloggad i Data Domain som administratörsanvändare, med en SSH-klient konfigurerad för att skriva utdata till disk, ändra till SE-privilegieläge och kör sedan följande kommando för varje MTree som du vill ha filinformationen för:
#### 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>
Kommandot i dessa versioner kan också skapa listan för alla filer i FS på en gång (istället för ett MTree åt gången). Om du vill dumpa filinformationen för alla filer i FS lämnar du MTree-sökvägen borta:
# se sfs_dump -c
När det är klart ska du se till att stoppa loggningen av SSH-klienten till disken och lägga filerna åt sidan för vidare bearbetning.

Formatet för kommandoutdata är en enda rad för varje fil. Om du inte använder -c Formatet är identiskt med det som visas ovan för senare versioner. I de fall där -c användes (för CSV-utdata) är formatet så här (inklusive en rubrik som visas som den första raden i utdata):
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-versionerna 7.13.0.0, 7.10.1.15, 7.7.5.25 och 6.2.1.110 eller senare:

Den här versionen ger inte längre åtkomst till sfs_dump från SE-läge (följande är inte tillgängligt):
se sfs_dump
SE-läget är inaktuellt på grund av säkerhetsproblem som hittats. Det alternativa kommandot att använda finns nedan. Observera det något annorlunda kommandonamnet och att i det här fallet går MTree som ska listas efter nyckelordet "MTree":
# filesys sfs-dump mtree <mtree-path>
För versioner i rubriken är detta sfs-dump kommando, jämfört med se sfsa_dump:
  • Det nya kommandot stöder inte -c Alternativ för att dumpa filinformation i CSV-format (kolumn)
  • Det nya kommandot kan bara köra ett MTree åt gången, det finns inget stöd för att köra mot hela FS i ett enda anrop
För kunder i dessa versioner, om man behöver dumpa alla MTrees filinformation till filen, måste man iterera över hela listan med MTrees i Data Domain FS och köra kommandot en gång för var och en av dem. En användare kan hämta en lista över MTrees i systemet genom att köra:
# mtree list
Utdata från kommandot nedan är identiska med dem för föregående se sfs_dump kommando när det används utan -c .
filesys sfs-dump
Se till att du är inloggad på Data Domain som administratörsanvändare, med en SSH-klient konfigurerad för att skriva utdata till disk, och kör sedan följande kommando för varje MTree som du vill ha filinformationen för:
# filesys sfs-dump mtree <mtree-path>

Om du får filinformationen för mer än ett MTree väljer du att göra alla dumpar till samma utdatafil eller växla SSH-klientkonfigurationen till en annan fil innan du kör kommandot för vart och ett av MTrees.

Du kan också samla in utdata på ett obevakat sätt genom att köra kommandot via SSH så här:

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

I båda fallen har utdatainformationen en rad för varje fil, med följande format:

/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-versionerna 8.1.0.0, 7.13.1.10, 7.10.1.30 och 7.7.5.40 eller senare:

På grund av kundernas efterfrågan har vissa av funktionerna i den gamla se sfs_dump kommandot har återinförts och är nu tillgängliga för filesys sfs-dump kommandot, nämligen:
  • Möjligheten att lägga till -c så att utdata skrivs ut i en CSV-liknande formaterad version (fält åtskilda av kolumner)
  • Möjligheten att köra fildumpinformationen för alla filer i FS samtidigt
Kommandot fortsätter att vara detsamma som för de omedelbart föregående versionerna, med de förbättringar som nämns och sammanfattas nedan:
 
#### 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

Det här kommandot fortsätter att vara "dolt" så att det inte visas i den interaktiva CLI-hjälpen eller i dokumenten.
 

Hur man bearbetar sfs_dump eller filesys sfs-dump data till något användbart:

Formatet för de enskilda filer som rapporteras i utdata när du använder filesys sfs-dump eller sfs_dump utan att -c kan sammanfattas på följande sätt:
/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
I exemplet ovan har vi en fil med den ursprungliga storleken 136 794 byte, som efter att ha skickats genom Data Domain FS-inmatningspipelinen beräknas använda 15 045 byte efter deduplicering och 8 760 byte när de unika segmenten för filen komprimeras innan de skrivs till disken. Därför:
  • Fildedupliceringen (det vi kallar "gcomp" eller global komprimering) är en faktor x9,09 (136 794 till 15 045 byte)
  • Den fillokala komprimeringen (det vi kallar "lcomp" för lokal komprimering) är en faktor x1,72 (15 045 till 8 760 byte)
  • Den totala uppskattade minskningen av filstorleken (känt som "komprimeringsförhållande") är en faktor x15,62 (136 794 till 8 760 byte)
Växelvis sfs_dump -c Utdata är liknande, men mer kortfattade:
/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)
I det här exemplet kan vi göra samma beräkningar som för det föregående:
  • Fildedupliceringen (det vi kallar "gcomp" eller global komprimering) är en faktor x0,99 (33 554 431 till 33 668 007 byte)
  • Filens lokala komprimering (det vi kallar "lcomp" för lokal komprimering) är en faktor x0,98 (33 668 007 till 34 208 564 byte)
  • Den totala uppskattade minskningen av filstorleken (känd som "komprimeringsförhållande") är en faktor x0,98 (33 554 431 till 34 208 564 byte)
Jämfört med filen som visas för nej -c Den här uppnår till exempel ingen deduplicering (inga redundanta segment) eller någon lokal komprimering. Detta indikerar att filen är komprimerad.
 
Viktigt! Data i utdatafilerna om annan storlek än "pre-comp size for the file in bytes" ska tas som ungefärliga och kan inte helt lita på. Metadata för filer skapas vid tidpunkten för filinmatningen, och även om de är korrekta då har de inte uppdaterats sedan dess, så de blir inaktuella med tiden. Att en fils post_lc_size är en viss mängd innebär inte att diskutrymmet som används av filen är identiskt med den mängden, eftersom det finns många omkostnader på FS-nivå som inte beaktas på filnivå. Begränsningarna är desamma som för de som redan är kända för kommandot:
mtree show compression
Att utnyttja informationen i utdatafilerna ovan består av att bearbeta numeriska data på ett sätt som passar användarens mål. Några exempel på användningsfall kan vara:
  • Bestämma gcomp och lcomp för filer som motsvarar en viss sökväg (om en sökväg kan matchas med en viss säkerhetskopieringsserver, klient, princip, jobb osv.)
  • Beräkna hur mycket data (förkompilering) som lagras på en viss plats som är äldre än en viss tid (för att fastställa överblivna filer eller felsöka problem med säkerhetskopieringsprogram som inte upphör att gälla, säkerhetskopieringar som är försenade i tid)
  • Alla andra typer av statistik som man kan ha användning för
Att ha en enda uppsättning instruktioner och att kompensera för förlusten av sfs_dump -c i nyare versioner är våra rekommendationer att konvertera utdata till CSV-formatet ovan och sedan använda filen i CSV-format för att bearbetas ytterligare, men beroende på dina kunskaper kan du bearbeta icke-CSV-utdata direkt.

Så här konverterar du en icke-CSV-fil sfs_dump utdata till en som är identisk med den som sfs_dump -c skulle ha skrivit ut, kan du använda följande Linux-kommandorad:
# 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
 
Obs! Kommandot ovan ignorerar allt i indatafilen (sfs-dump-noCSV.txt) som inte börjar med ett snedstreck, eftersom endast rader som börjar med "/data" ska innehålla filinformation för bearbetning. Utdatafiler har en första rad som rubrik och använder tabulatortecknet (\t) som fältavgränsare.

Allt utöver den här punkten tillhandahålls användarna i befintligt skick. Det finns ingen garanti eller skyldighet från Dells sida att följa nedanstående instruktioner. Att få information från fillistningsinformation är en användares uppgift, och hur man uppnår det beror helt på vilken verktygsuppsättning som används för att utvinna data i fildumputdata, målet som ska uppnås och användarens egen expertis när det gäller att bearbeta data från kommandoutdata som beskrivs ovan. En användare kan välja att använda Linux kommandoradsbehandling av textfiler för att dumpa vissa aggregeringar, andra kan välja att producera indata för diagramvärden med hjälp av "gnuplot", medan majoriteten av användarna tros söka ett enklare (men begränsat) tillvägagångssätt för att bygga ett kalkylblad från CSV-filen för analys.

Dell har ansträngt sig för att se till att instruktionerna nedan är korrekta, fungerar och användbara för användare, men vi kan inte garantera att de fungerar för dig, och vi ger inte support för dem, eftersom de ligger utanför supportintervallet.


Importera CSV-formaterade sfs_dump mata ut till ett kalkylblad (exempel för Excel):

När CSV-versionen av filinformationslistan är tillgänglig är ett sätt att få information från data att ladda upp data i ett kalkylprogram. Microsoft Excel används som exempel, även om instruktionerna bör vara liknande för annan programvara. Följ följande steg för att få CSV-textfilen importerad till Excel som CSV:
  1. Öppna Excel och skapa ett nytt tomt kalkylblad
  2. Gå till menyn Data högst upp och klicka sedan på ikonen som heter Från text/CSV
  3. Använd dialogrutan för att hitta fildata i CSV-format (sfs-dump-CSV.csv som i exemplet på konverteringsskript från icke-CSV-format), markera det och klicka på Importera
  4. Om indatafilformatet är korrekt och Excel kan rita formatet från de första 200 raderna (vilket det borde), bör en dialogruta visa förhandsgranskningen av kalkylbladet som ska genereras. Granska informationen för att säkerställa att den ser bra ut, inklusive att den första raden identifieras som rubriker
  5. Om allt ser bra ut med förhandsgranskningen klickar du på Ladda knappen längst ned i dialogrutan, så presenteras ditt nya kalkylblad för dig med snygg formatering och fältrubrikerna förvandlas till sök- och filteraktiverade rubriker.
Data i kalkylbladet är redan användbara, du kan göra saker som att tillämpa ett nummerfilter på numeriska fält som storlek (för att bara visa filer över en viss storlek), eller tillämpa ett textfilternamnfältet så att endast filer i Data Domain-filens utdata som matchar ett givet mönster (endast de som börjar med sökvägen för ett visst MTree) visas, och göra andra härledda beräkningar från dessa data.

Ett korrekt importerat Excel-kalkylblad bör innehålla data i kolumnerna A till I. Om data bara finns i kolumn A, men sträcker sig över skärmen, stänger du Excel och försöker igen med steg 1 till 5 ovan.

Lägga till extra beräknade fält

Kalkylbladet kan utökas med så många beräknade fält som en användare behöver. Ett intressant fält att lägga till är det läsbara datum och den tid som motsvarar filernas mtime (senaste ändringstid, vanligtvis den tid då den skrevs till DD). Det kan också vara bra att beräkna och visa vissa komprimeringsvärden per fil beroende på vad data används till. De nya kolumnerna fylls i automatiskt med hjälp av Excel-formler enligt beskrivningen nedan.

Konvertering av tidsstämpel:

Så här konverterar du UNIX-liknande tidsstämpel till datum och tid som kan läsas av människor:
  1. Högerklicka på cell J2 och välj "Format Cells"
  2. I listan "Category" till vänster väljer du "Custom".
  3. Om det inte redan finns där skapar du formatet för det läsbara datum/tid-formatet (exemplet innehåller EST-strängen i slutet. Du kan ersätta den med din textuella tidszonsdefinition, eller ta bort "EST" helt och hållet om du inte är intresserad): åååå-mm-dd hh:mm:ss "EST"
  4. Klicka på "OK" när du är klar. Nu har cell J2 ett anpassat format för data.
  5. Lägg till följande formel i cell J2. I formeln ersätter du (-6*3600) med rätt tidszonsskillnad som motsvarar UTC för den konfigurerade tidszonen i Data Domain vid tidpunkten för hämtningen av "sfs-dump"-data. Till exempel är östamerikansk tid 6 timmar efter UTC under sommaren, därav "-6" här.
Om du inte är intresserad av en sådan exakt tidsjustering kan du använda en förkortad form av formeln istället. Det enklaste sättet att få formeln tillagd och undvika att datum- och tidsformatet skrivs över är att kopiera någon av de två versionerna nedan och klistra in i cell J2 när du har skrivit tecknet "lika med" = i cellen för att börja redigera cellen:
(((B2/1000000000+(-6*3600))/86400)+25569)
(((B2/1000000000)/86400)+25569)
Obs! Om du klistrar in text i J2 utan att först sätta cellen i redigeringsläge (så att säga) skriver du över cellens format. Alternativt kan du föregå formeln med ett "=", kopiera hela texten och högerklicka på cell J2 för att klistra in special, sedan välja Som text och klicka på OK. Det borde få samma effekt. Om detta gjordes på ett bra sätt gör Excel automatiskt några saker:
  • Klistra in formeln i cell J2 och även i varje cell på resten av raderna i kalkylbladet 
  • Beräkna formeln för hela kalkylbladet och visa datum- och tidsvärdet i det konfigurerade formatet
  • Formatera kolumnen som de befintliga, och ha rubriken konfigurerad som ett datum med möjlighet att använda datumfilter, det enda du behöver göra är att ange ett egennamn för kolumnen (datum)

Information om komprimering

Du kan lägga till kolumner för komprimeringsinformation per fil genom att göra enligt beskrivningen ovan. Den här gången visar vi formlerna inklusive "=", så du måste kopiera hela texten och klistra in special som text:
  • Kopiera följande formel och klistra in special som text i cell K2 för att skapa en kolumn för deduplicering per fil, eller gcomp:
    =IF(H2=0,0,D2/H2)
  • Kopiera följande formel och klistra in special som text i cell L2 för att skapa en kolumn för lokal komprimering per fil, eller lcomp:
    =IF(I2=0,0,H2/I2)
  • Kopiera följande formel och klistra in special som text i cell M2 för att skapa en kolumn för filkomprimeringsförhållandet per fil:
    =K2*L2
Ge de nya kolumnerna ett riktigt namn. Om du vill att formatet för komprimeringsvärdena ska vara ett annat (t.ex. för att begränsa antalet decimaler) gör du som i exemplet för datum och tid och anger cellens numeriska format i förväg innan du klistrar in formeln.

Kom ihåg att skydda ditt arbete genom att gå till Arkiv-menyn och göra. Spara som Se till att typen för den sparade filen är inställd på Excel-arbetsbok (*.xlsx), så att formatering och filtrering behålls.

När de beskrivna åtgärderna har slutförts innehåller kalkylarket följande (relevanta) kolumner:
  • A innehåller ett filnamn
  • B innehåller datumstämpeln (i UNIX-epoken i nanosekunder) för när filen senast skrevs
  • D är filens ursprungliga storlek
  • H är storleken efter global komprimering
  • I är storleken efter global och lokal komprimering
  • J innehåller datumstämpeln för när filen senast skrevs, i läsbar form
  • K innehåller den globala komprimeringen (deduplicering) för filen
  • L innehåller den lokala komprimeringen för filen
  • M innehåller filens totala komprimering
Alla filstorlekar anges i byte.
Nu kan du använda Excel för att filtrera eller sortera efter behov för att rapportera om dina data.
  • Om du till exempel bara vill visa filer i MTree /data/col1/backup som är äldre än 30 dagar:
  1. Klicka på nedåtpilen i rubriken Namn, välj Textfilter, sedan Börjar med och skriv /data/col1/backup/ in i lådan. Det avslutande snedstrecket är viktigt. Klicka på OK
  2. Klicka på nedåtpilen i rubriken Senast skrivna datum, välj Datumfilter och sedan Före. Använd datumväljaren till höger i dialogrutan för att välja ett datum för 30 dagar sedan. Klicka på OK.
Statusfältet längst ned visar hur många rader som matchar det här valet.

Additional Information

Kommando för att dumpa filplats (aktiv och molnbaserad)

Det finns ett sätt att dumpa listan över filer med en indikation på vilka som finns i Active och vilka i alla molnenheter, vilket är:
#### 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

Utdata i båda fallen är av följande typ:

-------------------------      ----------------------      ----------------------      ---------------------------
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
-------------------------      ----------------------      ----------------------      ---------------------------
Kommandot ovan tenderar dock att vara otillräckligt för de flesta ändamål, eftersom till exempel storleken är i enheter som kan läsas av människor (i stället för i byte eller MiB eller någon inställd multiplikator) och placeringstiden matchar den tidpunkt då säkerhetskopieringen gjordes till Data Domain för filer i Active, men det gör den inte för filer i Cloud ("Placeringstid" för filer i molnet är det datum och den tid då filen flyttades till molnenheten).

Tänk också på att kommandot nedan (och skriptet som konverterar från icke-CSV sfs_dump) matar ut data i kolumner som avgränsas med tabbar. Fliktecknen som finns i utdata måste sparas i loggningsfilen, annars kan stegen som beskrivs ovan för att importera CSV-filen till Excel inte separera fälten korrekt.
sfs_dump -c
Instruktionerna som ges förutsätter en rimlig kunskap om Excel, men kan översättas till andra kalkylprogram.

Moderna versioner av Excel tillåter många rader, men tänk på att varje fil på sfs_dump Utdata som ska bearbetas är en enda rad, så Excel måste snabbt kunna bearbeta och uppdatera ett kalkylblad med lika många rader som filer i datauppsättningen. Den hårda gränsen är något över 1 miljon rader, men även vid filantal långt under det kanske Excel inte är lämpligt för jobbet (för långsamt).

Om din sfs_dump utdata har för många filer för din version av Excel eller vill bearbeta data i mindre bitar för prestanda, kan du prova att köra proceduren en gång för varje MTree, så att du har flera kalkylblad för systemet.

Till och med ett enda MTree sfs_dump utdata kan vara för stora för Excel, i så fall kan du använda kommandot dela Linux (eller något annat liknande verktyg för att dela en stor textfil online-slutgränser) för att ha flera mindre CSV-filer att bearbeta en i taget, till exempel:
# 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)

Om du till exempel vill dela upp en indatatextfil i segment på 200 MiB vardera, så att delarna får namnet starting:

"sfs_dump.out.split"

Kör sedan:

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


Skript som ska användas "filesys sfs-dump" för dumpning av fildata i hela FS

För de få versioner som saknade möjligheten att dumpa filinformation i CSV-format tillhandahålls skriptet nedan i befintligt skick (utan garanti) av Dell till användare för att uppnå liknande resultat genom bearbetning av icke-CSV-filer sfs_dump utdata.

Eftersom de versioner som inte stöder CSV-utdata också är de som inte tillåter att dumpa informationen för alla filer i FS som helhet, använder skriptet SSH för att ansluta till måldatadomänen för att iterera över listan över MTrees, köra fildumpen ett MTree i taget, för att samla in fillistan för alla MTrees, omvandla sedan till ett CSV-format som är lämpligt för vidare bearbetning:
#!/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 för att kombinera utdata från icke-CSV "sfs-dump" och "filesys report generate file-location" till en CSV-fil med samma information som skriptet ovan och per filnivå och placeringstidsinformation

Följande skript tillhandahålls i befintligt skick (utan garanti) av Dell till användare som ett sätt att förhoppningsvis tillföra värde till resultatet av sfs_dump och filesys report genererar filplaceringskommandon ovan. En användare kan filtrera bort filer baserat på nivå (aktiv eller någon av de två konfigurerade molnenheterna) för att få en mer exakt inblick i fildistributionen per nivå genom att lägga till information om nivåplats och placeringstid till varje filpost i CSV-utdatafilen.

Skript förväntar sig sfs-dump (inte sfs_dump -c) som den första parametern, och filessys-rapporten genererar filplatsutdata som den andra. Utdata skrivs till ett hårdkodat filnamn "sfs-dump-output-tiers.csv", som kan ändras i själva skriptet.

Utdata kan bearbetas med Excel på samma sätt som förklarats ovan.
#!/bin/bash

#### WARNING
####     This script is provided to you by Dell Technologies with NO GUARANTEE, as best-effort sample code to match the output from commands :
####       * sfs-dump (in non CSV format)
####       * filesys report generate file-location
####     So that a new CSV with the file paths appearing on both is created for all the data in sfs-dump file with the added tier and placement time information from location report
####
####     This script is not part of Dell PowerProtect / Data Domain, and hence it is not supported
####
####     Usage : extend-sfs-dump-with-tier.sh sfs-dump-output.csv file-location-output.log
####     Output : static "sfs-dump-output-tiers.csv" file name (may be changed below)

#### Replace values below to suit your needs
OUTPUT_FILENAME="sfs-dump-output-tiers.csv"
#### NO CHANGES NEEDED BEYOND THIS POINT

clear

if [ ! $# == 2 ]; then
    echo "Combine output from sfs-dump and tier location report into a CSV file with tier and placement time information"
    echo
    echo "Usage : $0 SFS-DUMP-OUTPUT-FILE    REPORT-FILE-LOCATION-FILE"
    echo "NOTE : SFS-DUMP-OUTPUT-FILE has to be in non-CSV format"
    exit 1
fi

INPUT_SFSDUMP="$1"
INPUT_LOCATION="$2"


echo -n "1/6 : Sanity checking input files..."
if [ ! -s "${INPUT_SFSDUMP}" ]; then
    echo "Input file ${INPUT_SFSDUMP} does not exist"
    exit 1
fi
if [ ! -s "${INPUT_LOCATION}" ]; then
    echo "Input file ${INPUT_LOCATION} does not exist"
    exit 1
fi
n_files_sfsdump=`grep ^/ ${INPUT_SFSDUMP} | wc -l`
n_files_location=`grep ^/ ${INPUT_LOCATION} | wc -l`
if [ ${n_files_sfsdump} -eq ${n_files_location} ]; then
    echo -n "both have the same amount of files (${n_files_location}). "
else
    echo -n "sfs-dump has ${n_files_sfsdump} files whereas location report has ${n_files_location} files, this may be normal if the difference is small. "
fi
echo "Done."


echo -n "2/6 : Sanitize \"file-location\" input..."
cat ${INPUT_LOCATION} | awk 'BEGIN {rejected="temp-location-rejected.log"; accepted="temp-location-accepted.log"} { if ( $0 ~ "Missing -unit") { gsub(/Missing -unit/, "Missing-Cloud-Unit", $0); print $0 > rejected } else { if ($0 ~ "^/" ) print $0 > accepted } }'
if [ -s "temp-location-rejected.log" ]; then
    REJECTS_EXIST="yes"
    echo -n "Some files in location report sit in unavailable or deleted cloud units, you may need to re-run this script after fixing the issue and gathering a new location report. "
    cat temp-location-rejected.log temp-location-accepted.log | sed -e 's/\t/:\t/' | sort > temp-location-report-sorted.log
    rm temp-location-rejected.log
else
    cat temp-location-accepted.log | sed -e 's/\t/:\t/' | sort > temp-location-report-sorted.log
    REJECTS_EXIST="no"
fi
rm temp-location-accepted.log
echo "Done."


echo -n "3/6 : Sanitize \"sfs-dump\" input..."
cat ${INPUT_SFSDUMP} | grep ^/ | sort > temp-sfs-dump.log
echo "Done."


echo -n "4/6 : Merging information for sfs-dump and location report..."
join -1 1 -2 1 temp-sfs-dump.log temp-location-report-sorted.log > temp-merged-information.log
rm temp-sfs-dump.log
rm temp-location-report-sorted.log
n_files_combined=`grep ^/ temp-merged-information.log | wc -l`
if [ ${n_files_combined} -eq 0 ]; then
    echo "No files matched from input files. sfs-dump output must NOT be in CSV format. Exiting."
    rm temp-merged-information.log
    exit 1
fi
echo -n "Input files matched on ${n_files_combined} files. "
echo "Done."


echo -n "5/6 : Converting merged sfs-dump / location-report output to CSV format..."
cat temp-merged-information.log | grep ^/ | grep -v ^$ | awk '
BEGIN {print "name\tmtime\tfileid\tsize\tseg_bytes\tseg_count\tredun_seg_count\tpre_lc_size\tpost_lc_size\ttier\tplacement_time"}
{
    colon_index = index($0, ":")
    filename = substr($0, 1, colon_index - 1)
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", filename)
    n = split(substr($0, colon_index + 1), fields, " ")
    print filename "\t" fields[2] "\t" fields[4] "\t" fields[6] "\t" fields[10] "\t" fields[12] "\t" fields[14] "\t" fields[17] "\t" fields[19] "\t" fields[27] \
        "\t" fields[length(fields)-4] " " fields[length(fields)-3] " " fields[length(fields)-2] " " fields[length(fields)-1] " " fields[length(fields)]
}' > ${OUTPUT_FILENAME}
rm temp-merged-information.log
echo "Done."


echo -n "6/6 : Summary"
echo
echo
echo "Merging information from sfs-dump (${INPUT_SFSDUMP}) and location-report ${INPUT_LOCATION} output completed."
echo "Output file (${OUTPUT_FILENAME}) includes information for a total ${n_files_combined} files, out of ${n_files_sfsdump} in input sfs-dump, and ${n_files_location} in input location report."
if [ "${REJECTS_EXIST}" == "yes" ]; then
    echo "Note there are some files in disconnected or deleted cloud units, for which the \"tier\" field has been replaced with \"Missing-Cloud-Unit\"."
fi
echo
echo "Start of file shown below for your convenience :"
echo "===================="
head -5 ${OUTPUT_FILENAME}
echo "===================="
echo
echo "You may follow the instructions in https://www.dell.com/support/kbdoc/000081345 to process this CSV file in an spreadhseet"
echo
echo "Done."

exit 0


För Veritas NetBackup-användare:

Veritas NetBackup (NBU) är känt för att skapa filer i en Data Domain med kolontecken som en del av filnamnen. Följande är till exempel giltiga sökvägar för NBU-filnamn när Data Domain används som serverdelslagring för 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::
Detta utgör ett problem med exempelskripten ovan, eftersom kolontecknet används som avgränsare för sfs_dump kommandoutdata och körning av skripten ovan skulle ge felaktiga resultat.

I sådana fall måste du redigera skriptet på ett sätt som liknar nedan:
--- 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."
Även om ändringarna delas för att skriptet ska iterera över alla MTrees i en Data Domain för att hämta per MTree sfs_dump data, är ändringarna desamma för det andra skriptet. Precis som för själva skripten tillhandahålls dock ändringarna ovan av Dell till dig utan några garantier, i hopp om att de är användbara.

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.