Data Domain: Data Domain Dosya Sistemi'ndeki (sfs-dump) Dosyaları Listeleme
摘要: Bu makalede, ayrı MTree'ler veya bir bütün olarak dosya sistemi (FS) için dosya ve dizin listelerinin dökümünü almak üzere Data Domain CLI'nın nasıl kullanılacağı açıklanmaktadır. Bu, kullanıcıların yedekleme uygulamasından Data Domain'de nelerin depolandığını öğrenmesini sağlar. ...
症狀
Alınan protokol ne olursa olsun Data Domain FS yalnızca MTree'lerde düzenlenmiş dosyaları (dizinler içindeki) içerir. Tüm dosyalar (hem Aktif hem de herhangi bir bulut birimindeki dosyalar için) aynı kökü ve ad alanını paylaşır; tek bir ad alanı vardır; bu, dosya ve dizin listelerinin Aktif ve bulut birimlerindeki dosyaları herhangi bir ayrım olmaksızın içerdiği anlamına gelir.
Ayrıntılı bir dosya dökümü almak, aşağıdaki gibi nedenlerle yararlı olabilir:
- Bir yedekleme uygulaması tarafından yönetilen dosyaların listesiyle karşılaştırma yaparak bu yedekleme uygulamasından artık kalan dosyaları kontrol etme.
- Yedekleme uygulamasının yedekleme tutma cezasını uygulayıp uygulamadığını belirlemek için belirli bir yaş eşiğinin üzerindeki tüm dosyaları listeleme
- 7.13.0.0, 7.10.1.15, 7.7.5.25 ve 6.2.1.110'dan önceki DDOS sürümleri için
se sfs_dump
- 7.13.0.0, 7.10.1.15, 7.7.5.25, 6.2.1.110 veya sonraki DDOS sürümleri için
filesys sfs-dump
原因
sfs_dumpBu işlevselliğe erişmek için gerekli olan SE modu, DSA-2023-412: Birden Fazla Güvenlik Açığı için Dell Technologies PowerProtect Güvenlik Güncelleştirmesi
içinde açıklandığı gibi kullanım dışı bırakılmıştır. Geçici bir süre için SE modundaki eski
sfs_dump komutta işlevlerin bir kısmı mevcut değildi ancak daha sonraki bir aşamada yeniden tanıtıldı. Dolayısıyla; bu KB, farklılıkları ve her durumda komut çıktısının nasıl ele alınacağını açıklamaya çalışır.解析度
CLI'dan bir Data Domain'deki dosyaların ayrıntılı listesini almak ve nihayetinde Data Domain'de depolanan dosyalar hakkında bilgi sahibi olma süreci, çalıştırılan DDOS sürümüne bağlıdır. Dosya ayrıntılarını içeren metin çıktı dosyası toplandıktan sonra, tüm DDOS sürümlerinin çıktı biçimi aynı olduğundan (veya bir komut dosyası kullanılarak ortak bir biçime dönüştürülebildiğinden) çıktının daha kullanışlı bir biçime işlenmesi her zaman aynıdır.
Tüm DDOS sürümlerinde ortak olan şey, Data Domain'de yönetici kullanıcı olarak oturum açma ve bunu konsol çıktısının istemci tarafındaki bir metin dosyasına kaydedilmesini destekleyen bir SSH istemcisi kullanarak yapma gereksinimidir (PuTTY bu konuda iyi çalışır). Kullanıcı; SSH istemcisini, çıktıyı istemci bilgisayardaki metin dosyasına kaydedecek şekilde yapılandırmalıdır (günlüğe kaydedilen satır sayısında veya tek tek satır uzunluğunda sınır olmadığından emin olun). SSH oturum günlük dosyası (ve dolayısıyla DD dosya listeleri) Data Domain'e değil, SSH bağlantısının başlatıldığı (genellikle) masaüstü bilgisayara yazılır.
SSH oturumu çıktısını toplarken dosyaya anlamlı bir ad verdiğinizden (Data Domain ana bilgisayar adını ve MTree adını dökümü alınacak şekilde ekleme gibi) ve günlük dosyası için yeterli alan bulunduğundan emin olun. Bu alan, 1 milyon dosya içeren sistemler için yaklaşık 200 MB olabilir.
Dosya listelerini toplamak için DD CLI'dan çalıştırılması gereken tam komut, kullanılan DDOS sürümüne bağlıdır. Bu komutlar aşağıda özetlenmiştir.
7.13.0.0, 7.10.1.15, 7.7.5.25 ve 6.2.1.110'dan önceki DDOS sürümleri:
Bu sürümler halase sfs_dump komutunu (ve -c dosya ayrıntılarını daha fazla işlemeye gerek kalmadan doğrudan CSV olarak çıktı alma seçeneğini) destekler ancak güvenlik nedeniyle SE moduna geçilmesi önerilmez; bunun yerine mevcut en son LTS DDOS sürümüne yükseltme önerilir.
Data Domain'de diske çıktı yazmak üzere yapılandırılmış bir SSH istemcisiyle yönetici kullanıcı olarak oturum açtığınızdan emin olun, SE ayrıcalık moduna geçin ve ardından dosya ayrıntılarını almak istediğiniz her MTree için aşağıdaki komutu çalıştırın:
#### 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>Bu sürümlerdeki komut ayrıca FS'deki tüm dosyaların listesini bir seferde (bir seferde bir MTree yerine) oluşturabilir. FS'deki tüm dosyaların dosya bilgileri ayrıntılarının dökümünü almak için MTree yolunu bırakın:
# se sfs_dump -cİşlem tamamlandığında SSH istemcisinin diske kaydedilmesini durdurduğunuzdan emin olun ve dosyaları daha fazla işleme için ayırın.
Komut çıktısının biçimi, her dosya için tek bir satırdır. Şunu kullanmıyorsanız:
-c biçim, sonraki sürümler için yukarıda gösterilenle aynıdır. -c kullanılan durumlarda (CSV çıktısı için), biçim şu şekildedir (çıktıda ilk satır olarak gösterilen bir başlık dahil):
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
7.13.0.0, 7.10.1.15, 7.7.5.25 ve 6.2.1.110 veya sonraki DDOS sürümleri:
Bu sürüm artık SE modundan şunlara erişim sağlamaz sfs_dump (aşağıdakiler mevcut değildir):
se sfs_dumpSE modu, bulunan güvenlik sorunları nedeniyle kullanım dışı bırakıldı. Kullanılacak alternatif komut aşağıdadır. Komut adının biraz farklı olduğunu ve bu durumda listelenecek MTree'nin "MTree" anahtar sözcüğünden sonra geldiğini unutmayın:
# filesys sfs-dump mtree <mtree-path>Başlıktaki sürümler için şuna kıyasla bu sfs-dump komutu
se sfsa_dump:
- Yeni komut, dosya bilgilerinin
-cCSV (sütun) biçiminde dökümünü alma seçeneğini desteklemez - Yeni komut bir seferde yalnızca bir MTree çalıştırabilir, tek bir çağrıda tüm FS'ye karşı çalıştırma desteği yoktur
# mtree listAşağıdaki komuttan alınan
se sfs_dump çıktı, -c seçeneği olmadan kullanıldığında önceki komutla aynıdır.
filesys sfs-dumpDiske çıktı yazmak üzere yapılandırılmış bir SSH istemcisiyle Data Domain'de yönetici kullanıcı olarak oturum açtığınızdan emin olun ve ardından dosya ayrıntılarını almak istediğiniz her MTree için aşağıdaki komutu çalıştırın:
# filesys sfs-dump mtree <mtree-path>
Birden fazla MTree için dosya ayrıntılarını alıyorsanız tercihinize göre tüm dökümleri aynı çıktı dosyasına almayı seçin veya MTree'lerin her biri için komutu çalıştırmadan önce SSH istemci yapılandırmasını farklı bir dosyaya geçirin.
Alternatif olarak, komutu SSH aracılığıyla aşağıdaki gibi çalıştırarak çıktının toplanmasını katılımsız bir şekilde yapabilirsiniz:
#### 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
Her iki durumda da çıktı bilgilerinde her dosya için aşağıdaki biçime sahip bir satır bulunur:
/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
8.1.0.0, 7.13.1.10, 7.10.1.30 ve 7.7.5.40 veya sonraki DDOS sürümleri:
Müşteri talebine bağlı olarak, eskise sfs_dump komuttaki bazı özellikler yeniden eklendi ve artık filesys sfs-dump komutu için kullanılabilir, örneğin:
- Çıktının CSV benzeri biçimlendirilmiş bir sürümde yazdırılması için
-cseçeneğini ekleyebilme (alanlar sütunlarla ayrılır) - FS'deki tüm dosyalar için dosya dökümü bilgilerini bir seferde çalıştırma imkanı
#### 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
Bu komut "gizli" olarak kalmaya devam eder, böylece CLI etkileşimli yardımda veya belgelerde görünmez.
Verileri işleme sfs_dump veya filesys sfs-dump yararlı bir şeye dönüştürme:
Çıktıda raporlanan bağımsız dosyaların biçimi filesys sfs-dump veya sfs_dump şu olmadan: -c seçeneği aşağıdaki şekilde özetlenebilir:
/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 ignoreYukarıdaki örnekte, orijinal boyutu 136.794 bayt olan bir dosyamız var ve bu dosya Data Domain FS alma işlem hattından geçirildikten sonra tekilleştirme sonrasında 15.045 bayt ve diske yazılmadan önce dosyanın benzersiz segmentleri sıkıştırıldığında 8760 bayt kullanacak şekilde hesaplanmıştır. Bu nedenle:
- Dosya tekilleştirme ("gcomp" veya genel sıkıştırma olarak adlandırdığımız işlem) x9,09 faktörüdür (136.794 ila 15.045 bayt)
- Dosya yerel sıkıştırması (yerel sıkıştırma için "lcomp" olarak adlandırdığımız işlem) x1,72 faktörüdür (15.045 ila 8760 bayt)
- Tahmini toplam dosya boyutu azalması ("sıkıştırma oranı" olarak bilinir) x15,62 faktörüdür (136.794 ila 8760 bayt)
sfs_dump -c çıktısı benzerdir ancak daha kısadır:
/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)Bu örnek için öncekiyle aynı hesaplamaları yapabiliriz:
- Dosya tekilleştirme ("gcomp" veya genel sıkıştırma olarak adlandırdığımız işlem) x0,99 faktörüdür (33.554.431 ila 33.668.007 bayt)
- Dosya yerel sıkıştırması (yerel sıkıştırma için "lcomp" olarak adlandırdığımız) işlem x0,98 faktörüdür (33.668.007 ila 34.208.564 bayt)
- Tahmini toplam dosya boyutu azalması ("sıkıştırma oranı" olarak bilinir) x0,98 faktörüdür (33.554.431 ila 34.208.564 bayt)
-c bu sefer tekilleştirme (gereksiz segment yok) veya yerel sıkıştırma elde edilemez. Bu, dosyanın sıkıştırılmış bir dosya olduğunu gösterir.
post_lc_size belirli bir miktarda olması, dosya başına dikkate alınmayan çok sayıda FS düzeyi ek yükü olduğundan, bu dosya tarafından kullanılan disk alanının bu miktarla aynı olduğu anlamına gelmez. Sınırlamalar, komut için bilinen sınırlamalarla aynıdır:
mtree show compressionYukarıdaki çıktı dosyalarındaki bilgilerden yararlanmak, sayısal verilerin kullanıcının hedeflerine uygun bir şekilde işlenmesinden oluşur. Kullanım durumlarına verilebilecek birkaç örnek şu şekildedir:
- Belirli bir yola karşılık gelen dosyalar için gcomp ve lcomp belirleme (bir yol belirli bir yedekleme sunucusu, istemcisi, politikası, işi vb. ile eşleştirilebiliyorsa)
- Belirli bir süreden daha eski olan belirli bir konumda (sıkıştırma öncesi) ne kadar veri depolandığını hesaplama (artık verileri belirlemek veya yedekleme uygulamasının süresi geçmiş yedeklemeleri zamanında sona erdirmemesiyle ilgili sorunları gidermek için)
- Şunun için kullanabilecek başka herhangi bir istatistik türü
sfs_dump -c seçeneğinin kaybını telafi etmek için önerilerimiz, çıktı verilerinin yukarıdaki CSV biçimine dönüştürülmesini sağlamak ve ardından dosyayı daha fazla işlenmek üzere CSV biçiminde kullanmaktır ancak becerilerinize bağlı olarak CSV olmayan çıktıyı doğrudan işleyebilirsiniz.
CSV olmayan bir
sfs_dump çıktıyı yazdırılacak olanla aynı olacak şekilde sfs_dump -c dönüştürmek için aşağıdaki Linux komut satırını kullanabilirsiniz:
# 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
Bu noktanın ötesindeki her şey kullanıcılara olduğu gibi sağlanır. Aşağıda paylaşılan talimatlar için Dell tarafında herhangi bir garanti veya yükümlülük bulunmamaktadır. Dosya listeleme ayrıntılarından bilgi edinmek kullanıcının görevidir ve bunun nasıl başarılacağı tamamen dosya dökümü çıktısında veri madenciliği yapmak için kullanılan araç setine, ulaşılacak hedefe ve kullanıcının yukarıda ayrıntıları verilen komut çıktısından veri işleme konusundaki kendi uzmanlığına bağlıdır. Bir kullanıcı, bazı toplamları dökmek için metin dosyalarının Linux komut satırı işlemesini kullanmayı seçebilir, diğerleri "gnuplot" kullanarak grafik değerleri için girdi üretmeyi seçebilirken, kullanıcıların çoğunluğunun analiz için CSV dosyasından bir elektronik tablo oluşturmak için daha basit (ancak sınırlı) bir yaklaşım aradığına inanılmaktadır.
Dell, aşağıdaki talimatların doğru, çalışır ve kullanıcılar için yararlı olmasını sağlamak amacıyla çaba sarf etmiştir ancak bunların sizin tarafınızda işe yarayacağını garanti edemeyiz ve Destek kapsamı dışında olduğundan bunlar için destek sağlamayız.
CSV olarak biçimlendirilmiş sfs_dump çıktıyı bir elektronik tabloya aktarma (Excel örneği):
Dosya ayrıntıları listesinin CSV sürümü kullanılabilir olduğunda, verilerden bilgi edinmenin bir yolu, verileri bir elektronik tablo yazılımına yüklemektir. Örnek olarak Microsoft Excel kullanılmıştır ancak talimatlar diğer yazılımlar için benzer olmalıdır. CSV metin dosyasının CSV olarak Excel'e aktarılmasını sağlamak için aşağıdaki adımları izleyin:
- Excel'i açın ve yeni bir boş elektronik tablo oluşturun
- Üstteki Veri menüsüne gidin, ardından Metinden/CSV'den adlı simgeye tıklayın
- CSV biçimindeki dosya verilerini bulmak için iletişim kutusunu kullanın (
sfs-dump-CSV.csvCSV olmayan biçimden dönüşüm komut dosyası örneğinde olduğu gibi), dosya verilerini seçin ve İçe Aktar öğesine tıklayın - Giriş dosyası biçimi doğruysa ve Excel ilk 200 satırdan biçimi çıkarabiliyorsa (çıkarması gerekir) bir iletişim kutusu oluşturulacak elektronik tablonun önizlemesini göstermelidir. Doğru olduğundan emin olmak için ilk satırın başlık olarak algılanması da dahil olmak üzere bilgileri gözden geçirin
- Önizlemede her şey yolunda görünüyorsa iletişim kutusunun altındaki Yükle düğmesine tıkladığınızda yeni elektronik tablonuz size güzel bir biçimlendirme ile sunulur ve alan başlıkları arama ve filtre özellikli olanlara dönüştürülür.
Düzgün bir şekilde içe aktarılan bir Excel elektronik tablosu, A'dan I'ya kadar olan sütunlarda veri içermelidir. Veriler yalnızca A sütununda bulunuyor ancak ekrana yayılıyorsa Excel'i kapatın ve yukarıdaki 1'den 5'e kadar olan adımları yeniden deneyin.
Fazladan hesaplanan alanlar ekleme
Elektronik tablo, kullanıcının ihtiyaç duyduğu kadar hesaplanan alanla genişletilebilir. Eklenmesi gereken ilginç bir alan, dosyaların mtime'ına (son değişiklik zamanı, genellikle DD'ye yazıldığı zaman) karşılık gelen, kullanıcı tarafından okunabilir tarih ve saattir. Ayrıca verilerin ne için kullanıldığına bağlı olarak bazı dosya başına sıkıştırma değerlerinin hesaplanması ve gösterilmesi yardımcı olabilir. Yeni sütunlar, aşağıda açıklandığı gibi Excel formülleri kullanılarak otomatik olarak doldurulur.Zaman damgası dönüştürme:
UNIX benzeri zaman damgasının kullanıcı tarafından okunabilir tarih ve saate dönüştürülmesini sağlamak için:- J2 hücresine sağ tıklayın ve "Hücreleri Biçimlendir"i seçin
- Soldaki "Kategori" listesinde "Özel"i seçin.
- Henüz orada değilseniz kullanıcı tarafından okunabilir tarih-saat biçimi için biçimi oluşturun (örnek, sonunda EST dizesini içerir. Bunu metinsel saat dilimi tanımınızla değiştirebilir veya ilgilenmiyorsanız "EST"yi tamamen kaldırabilirsiniz): yyyy-aa-gg ss:dd:ss "EST"
- Bittiğinde "Tamam"a tıklayın. Artık, J2 hücresinin veriler için özel bir biçimi var.
- J2 hücresine aşağıdaki formülü ekleyin. Formüldeki (-6*3600) değerini, "sfs-dump" verisinin alındığı sırada Data Domain'de yapılandırılan saat dilimi için UTC'ye karşılık gelen doğru saat dilimi farkıyla değiştirin. Örneğin, Doğu ABD saati yaz aylarında UTC'nin 6 saat gerisindedir, bu nedenle burada "-6"dır.
(((B2/1000000000+(-6*3600))/86400)+25569) (((B2/1000000000)/86400)+25569)
- Formülü J2 hücresine ve ayrıca elektronik tablodaki diğer satırların her bir hücresine yapıştırma
- Tüm elektronik tablo için formülü hesaplama, tarih ve saat değerini yapılandırılan biçimde gösterme
- Sütunu mevcut olanlar gibi biçimlendirme ve başlığı Tarih Filtreleri uygulama olanağına sahip bir Tarih olarak yapılandırma. Yapmanız gereken tek şey sütun için uygun bir ad ayarlamaktır (Tarih)
Sıkıştırma bilgileri
- Dosya başına tekilleştirme veya gcomp için bir sütun oluşturmak üzere aşağıdaki formülü kopyalayın ve K2 hücresine Metin Olarak Özel Yapıştır'ı seçin:
=IF(H2=0,0,D2/H2)
- Dosya başına yerel sıkıştırma veya lcomp için bir sütun oluşturmak üzere aşağıdaki formülü kopyalayın ve L2 hücresine Metin Olarak Özel Yapıştır'ı seçin:
=IF(I2=0,0,H2/I2)
- Dosya başına toplam dosya sıkıştırma oranı için bir sütun oluşturmak üzere aşağıdaki formülü kopyalayın ve M2 hücresine Metin Olarak Özel Yapıştır'ı seçin:
=K2*L2
Dosya menüsüne giderek çalışmanızı güvende tutmayı unutmayın. Biçimlendirme ve filtrelemenin korunması için kaydedilen dosya türünün Excel Çalışma Kitabı (*.xlsx) olarak ayarlandığından emin olarak kaydedin.
Açıklanan işlemlerin tamamlanmasının ardından, elektronik tablonuz aşağıdaki (ilgili) sütunları içerir:
- A, bir dosya adı içerir
- B, dosyanın en son yazıldığı tarih damgasını (nanosaniye cinsinden UNIX tarihinde) içerir
- D, dosyanın orijinal boyutudur
- H, genel sıkıştırmadan sonraki boyuttur
- I, genel ve yerel sıkıştırmadan sonraki boyuttur
- J, dosyanın en son yazıldığı tarih damgasını kullanıcı tarafından okunabilir biçimde içerir
- K, dosya için genel sıkıştırmayı (tekilleştirme) içerir
- L, dosya için yerel sıkıştırmayı içerir
- M, dosya için toplam sıkıştırmayı içerir
Artık verilerinizi raporlamak üzere gerektiği gibi filtrelemek veya sıralamak için Excel'i kullanabilirsiniz.
- Örneğin, MTree /data/col1/backup içinde yalnızca 30 günden eski dosyaları göstermek için:
- Ad başlığındaki aşağı oka tıklayın, Metin Filtreleri ve ardından Şununla Başlar'ı seçin ve kutuya
/data/col1/backup/yazın. Sondaki eğik çizgi önemlidir. Tamam öğesine tıklayın - Son Yazıldığı Tarih Başlığındaki aşağı oka tıklayın,Tarih Filtreleri'ni ve ardından Önce'yi seçin. 30 gün önceki bir tarihi seçmek için iletişim kutusunun sağındaki tarih seçiciyi kullanın. OK öğesine tıklayın.
其他資訊
Dosya konumunu dökme komutu (Aktif ve Bulut)
Dosyaların listesini, hangilerinin Aktif ve hangilerinin herhangi bir bulut biriminde olduğunu gösteren bir gösterge ile dökmenin bir yolu vardı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
Her iki durumda da çıktı aşağıdaki tiptedir:
------------------------- ---------------------- ---------------------- --------------------------- 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 ------------------------- ---------------------- ---------------------- ---------------------------Ancak yukarıdaki komut, çoğu amaç için yetersiz olabilir. Örneğin, boyut kullanıcı tarafından okunabilir birimlerdedir (bayt veya MiB ya da ayarlanmış bir çarpan yerine) ve yerleştirme zamanı, Aktif birimindeki dosyalar için yedeklemelerin Data Domain'e yapıldığı zamanla eşleşir ancak Bulut birimindeki dosyalar için eşleşmez (buluttaki dosyalar için "Yerleştirme Zamanı", dosyanın Bulut birimine taşındığı tarih ve saattir).
Ayrıca aşağıdaki komut (ve CSV olmayandan dönüştürülen komut dosyası
sfs_dump), verileri sekmelerle ayrılmış sütunlar halinde verir. Çıktıda bulunan sekme karakterleri günlük dosyasına kaydedilmelidir. Aksi takdirde CSV'yi Excel'e aktarmak için yukarıda ayrıntıları verilen adımlar, alanları doğru şekilde ayıramaz.
sfs_dump -cVerilen talimatlarda yeterince Excel bilgisi olduğu varsayılmıştır ancak diğer elektronik tablo yazılımlarına çevrilebilir.
Excel'in modern sürümleri birçok satıra izin verir ancak çıktıda işlenecek her dosyanın
sfs_dump tek bir satır olduğunu unutmayın. Bu nedenle Excel'in veri kümenizdeki dosya sayısı kadar satır içeren bir elektronik tabloyu hızlı bir şekilde işleyebilmesi ve güncelleştirebilmesi gerekir. Sabit sınır 1 milyon satırın biraz üzerindedir ancak bunun çok altındaki dosya sayılarında bile Excel iş için uygun olmayabilir (çok yavaş).
Çıktınızda
sfs_dump Excel sürümünüz için çok fazla dosya varsa veya performans için verileri daha küçük bitler halinde işlemek istiyorsanız prosedürü, her MTree için bir kez çalıştırmayı deneyebilirsiniz. Böylece sistem için birden çok elektronik tablonuz olur.
Tek bir MTree
sfs_dump çıktısı bile Excel için çok büyük olabilir ve bu durumda, her seferinde bir tane işlemek amacıyla birkaç küçük CSV dosyasına sahip olmak için bölünmüş Linux komutunu (veya büyük bir metin dosyasını çevrimiçi uç sınırlara bölmek için başka herhangi bir benzer aracı) kullanabilirsiniz, örneğin:
# 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)
Örneğin, bir giriş metin dosyasını şundan başlayarak adlandırılacak şekilde her biri 200 MiB'lik parçalara bölmek için:
"sfs_dump.out.split"
Ardından şunu çalıştırın:
# split -b 200M sfs_dump.out sfs_dump.out.split
Dosya verilerinin tüm FS dökümü için "filesys sfs-dump" kullanılacak komut dosyası
Dosya ayrıntılarını CSV biçiminde dökme özelliğine sahip olmayan birkaç sürüm için aşağıda daha ayrıntılı olarak gösterilen komut dosyası, CSV olmayan çıktıları işleyerek benzer bir sonuç elde etmek üzere Dell tarafından kullanıcılara olduğu gibi (garanti verilmeksizin) sfs_dump sağlanır.
CSV çıktısını desteklemeyen sürümler aynı zamanda bir bütün olarak FS'deki tüm dosyalar için bilgilerin dökümünü almaya izin vermeyen sürümler olduğundan, komut dosyası MTree'lerin listesini yinelemek için hedef Data Domain'e bağlanmak üzere SSH'yi kullanır, tüm MTree'lerin dosya listesini toplamak için dosya dökümünü bir seferde bir MTree için çalıştırır ve daha fazla işlemek için yeterli olan bir CSV biçimine dönüştürür:
#!/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
CSV olmayan "sfs-dump" ve "filesys report generate file-location" çıktısını, yukarıdaki komut dosyasıyla aynı bilgileri ve dosya başına katman ve yerleştirme zamanı bilgilerini içeren bir CSV dosyasında birleştirmek için komut dosyası
Aşağıdaki komut dosyası, yukarıdakisfs_dump ve filesys report generate file-location komutlarının çıktısına değer katmak amacıyla Dell tarafından kullanıcılara olduğu gibi (hiçbir garanti verilmeksizin) sağlanır. Kullanıcı, çıktı CSV'sindeki her dosya girişine katman konumu ve yerleştirme zamanı bilgilerini ekleyerek katman başına dosya dağıtımı hakkında daha kesin bir içgörü elde etmek için dosyaları katmana göre (Aktif veya yapılandırılmış en fazla iki Bulut Biriminden herhangi biri) filtreleyebilir.
Komut dosyaları, sfs-dump (
sfs_dump -cdeğil) çıktısını ilk parametre ve filesys report generate file-location çıktısını ikinci parametre olarak bekler. Çıktı, komut dosyasının içinde değiştirilebilen, "sfs-dump-output-tiers.csv" adındaki sabit kodlanmış bir dosyaya yazılır.
Çıktı, yukarıda açıklandığı gibi Excel kullanılarak işlenebilir.
#!/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
Veritas NetBackup kullanıcıları için:
Veritas NetBackup'ın (NBU), bir Data Domain'de dosya adlarının bir parçası olarak iki nokta üst üste karakterleri içeren dosyalar oluşturduğu bilinmektedir. Örneğin, Data Domain NBU için arka uç depolaması olarak kullanıldığında geçerli NBU dosya adı yolları aşağıdadır:
/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::İki nokta üst üste karakteri,
sfs_dump komut dosyası çıktısı için bir sınırlayıcı olarak kullanıldığından, bu durum yukarıdaki örnek komut dosyalarında bir sorun oluşturur ve yukarıdaki komut dosyalarını çalıştırmak yanlış sonuçlar verir.
Bu gibi durumlarda, komut dosyasını aşağıdaki gibi bir şekilde düzenlemeniz gerekir:
--- 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."
MTree başına veri çekmek için değişiklikler bir Data Domain'deki tüm MTree'lerde yinelenmek üzere komut dosyası için paylaşılırken sfs_dump değişiklikler diğer komut dosyası için aynıdır. Bununla birlikte, komut dosyalarında olduğu gibi yukarıdaki değişiklikler, yararlı olacağı umuduyla Dell tarafından herhangi bir garanti verilmeksizin size sunulmaktadır.