Veri tekilleştirme - Data deduplication

Bilgi işlemde , veri tekilleştirme , yinelenen verilerin yinelenen kopyalarını ortadan kaldırmak için bir tekniktir. Tekniğin başarılı bir şekilde uygulanması, depolama kapasitesi ihtiyaçlarını karşılamak için gereken toplam depolama ortamı miktarını azaltarak sermaye harcamasını azaltabilen depolama kullanımını iyileştirebilir . Gönderilmesi gereken bayt sayısını azaltmak için ağ veri aktarımlarına da uygulanabilir.

Veri tekilleştirme işlemi, benzersiz, bitişik veri blokları olan veri 'parçalarının' ('bayt kalıpları' olarak da bilinir) karşılaştırılmasını gerektirir. Bu parçalar, bir analiz süreci sırasında tanımlanır ve saklanır ve mevcut verilerdeki diğer parçalarla karşılaştırılır. Bir eşleşme gerçekleştiğinde, yedek yığın, depolanan yığına işaret eden küçük bir referansla değiştirilir. Aynı bayt modelinin düzinelerce, yüzlerce ve hatta binlerce kez meydana gelebileceği göz önüne alındığında (eşleşme sıklığı yığın boyutuna bağlıdır), saklanması veya aktarılması gereken veri miktarı büyük ölçüde azaltılabilir.

İlgili bir teknik, tüm dosya düzeyinde içeriğin birden çok kopyasını tek bir paylaşılan kopyayla değiştiren tek örnekli (veri) depolamadır . Bu, segment veya alt blok düzeyinde çalışabilen veri tekilleştirmeye yönelik modern yaklaşımlardan farklıdır.

Tekilleştirme, LZ77 ve LZ78 gibi veri sıkıştırma algoritmalarından farklıdır . Sıkıştırma algoritmaları tek tek dosyaların içindeki fazla verileri tanımlar ve bu fazla verileri daha verimli bir şekilde kodlarken, veri tekilleştirmenin amacı büyük hacimli verileri incelemek ve tüm dosyalar veya büyük dosya bölümleri gibi aynı olan büyük bölümleri belirlemek ve bunları değiştirmektir. Paylaşılan bir kopya ile.

çalışma prensibi

Örneğin, tipik bir e-posta sistemi, aynı 1 MB ( megabayt ) dosya ekinin 100 örneğini içerebilir . Her zaman e-posta platformu, yedeklenir eki her 100 örneklerini 100 MB depolama alanı gerektiren kaydedilir. Veri tekilleştirme ile, ekin yalnızca bir örneği gerçekten depolanır; sonraki örnekler, kabaca 100'e 1 olan tekilleştirme oranı için kaydedilen kopyaya geri başvurulur. Tekilleştirme, ek depolama tasarrufu için genellikle veri sıkıştırma ile eşleştirilir: Tekilleştirme, önce büyük tekrarlayan veri yığınlarını ortadan kaldırmak için kullanılır ve ardından, sıkıştırma, verimli bir şekilde kullanmak için kullanılır. saklanan parçaların her birini kodlayın.

Gelen bilgisayar kodu , tekilleştirme bilgiyi depolamak, örneğin, yapılır değişkenler bunlar bireysel olarak yazılmış olması gerekmez ama merkezi bir seferde hiç değişmedi şekilde başvurulan bir konumda. Örnekler CSS sınıfları ve adlandırılmış referanslar içinde MediaWiki .

Faydalar

Depolama tabanlı veri tekilleştirme, belirli bir dosya kümesi için gereken depolama miktarını azaltır. Çok benzer ve hatta aynı verilerin birçok kopyasının tek bir diskte depolandığı uygulamalarda en etkilidir. Veri kaybına karşı koruma sağlamak için rutin olarak gerçekleştirilen veri yedeklemelerinde, belirli bir yedeklemedeki çoğu veri önceki yedeklemeden farklı olarak kalır. Yaygın yedekleme sistemleri , değişmemiş dosyaları atlayarak (veya sabit bağlantı kurarak ) veya dosyalar arasındaki farklılıkları depolayarak bundan yararlanmaya çalışır . Ancak her iki yaklaşım da tüm fazlalıkları yakalamaz. Sabit bağlantı, e-posta veritabanı gibi yalnızca küçük şekillerde değişen büyük dosyalara yardımcı olmaz; farklılıklar yalnızca tek bir dosyanın bitişik sürümlerinde fazlalıklar bulur (silinmiş ve daha sonra yeniden eklenen bir bölümü veya birçok belgede bulunan bir logo görüntüsünü düşünün).

Hat içi ağ veri tekilleştirme, uç noktalar arasında aktarılması gereken bayt sayısını azaltmak için kullanılır, bu da gereken bant genişliği miktarını azaltabilir. Daha fazla bilgi için WAN optimizasyonuna bakın . Sanal sunucular ve sanal masaüstleri, her sanal makine için nominal olarak ayrı sistem dosyalarının tek bir depolama alanında birleştirilmesine izin verdiği için veri tekilleştirmeden yararlanır. Aynı zamanda, belirli bir sanal makine bir dosyayı özelleştirirse, veri tekilleştirme diğer sanal makinelerdeki dosyaları değiştirmez; bu, sabit bağlantılar veya paylaşılan diskler gibi alternatiflerin sunmadığı bir şeydir. Sanal ortamların yedeklenmesi veya kopyalarının oluşturulması da benzer şekilde iyileştirilmiştir.

sınıflandırma

İşlem sonrası ve satır içi veri tekilleştirme

Veri tekilleştirme, veri akarken "sırada" veya yazıldıktan sonra "işlem sonrası" olarak gerçekleşebilir.

İşlem sonrası tekilleştirme ile, yeni veriler önce depolama cihazında depolanır ve daha sonra bir işlem, çoğaltma arayan verileri analiz eder. Avantajı, verileri depolamadan önce karma hesaplamalarının ve aramanın tamamlanmasını beklemeye gerek olmaması ve böylece mağaza performansının düşmemesini sağlamasıdır. İlke tabanlı işlem sunan uygulamalar, kullanıcılara "etkin" dosyalar üzerinde optimizasyonu erteleme veya dosyaları tür ve konuma göre işleme olanağı verebilir. Potansiyel bir dezavantaj, yinelenen verilerin kısa bir süre için gereksiz yere saklanmasıdır; bu, sistem tam kapasiteye yaklaşıyorsa sorunlu olabilir.

Alternatif olarak, veri tekilleştirme karma hesaplamaları satır içi yapılabilir: veriler hedef cihaza girerken senkronize edilir. Depolama sistemi, önceden depolamış olduğu bir bloğu tanımlarsa, tüm yeni blok yerine yalnızca mevcut bloğa yapılan bir referans depolanır.

İşlem sonrası veri tekilleştirmeye göre hat içi tekilleştirmenin avantajı, yinelenen veriler hiçbir zaman depolanmadığından veya aktarılmadığından daha az depolama ve ağ trafiği gerektirmesidir. Negatif tarafta, hash hesaplamaları hesaplama açısından pahalı olabilir, bu nedenle depolama verimini azaltır. Bununla birlikte, hat içi tekilleştirmeye sahip bazı satıcılar, hat içi tekilleştirmeyi yüksek oranlarda gerçekleştirebilen ekipman göstermişlerdir.

İşlem sonrası ve satır içi veri tekilleştirme yöntemleri genellikle yoğun bir şekilde tartışılır.

Veri biçimleri

SNIA Sözlüğü iki yöntem tanımlar:

  • içerikten bağımsız veri tekilleştirme - belirli uygulama veri biçimlerinin bilinmesini gerektirmeyen bir veri tekilleştirme yöntemi.
  • İçeriğe duyarlı veri tekilleştirme - belirli uygulama veri biçimleri bilgisinden yararlanan bir veri tekilleştirme yöntemi.

Kaynağa karşı hedef tekilleştirme

Veri tekilleştirme yöntemlerini sınıflandırmanın başka bir yolu, nerede meydana geldiklerine göredir. Verilerin oluşturulduğu yerin yakınında meydana gelen tekilleştirme, "kaynak tekilleştirme" olarak adlandırılır. Verilerin depolandığı yerin yakınında meydana geldiğinde "hedef tekilleştirme" olarak adlandırılır.

Kaynak tekilleştirme, veri kaynağındaki verilerin tekilleştirilmesini sağlar. Bu genellikle doğrudan bir dosya sistemi içinde gerçekleşir. Dosya sistemi düzenli aralıklarla yeni dosyaları tarar ve karmalar oluşturur ve bunları mevcut dosyaların karmaları ile karşılaştırır. Aynı karmalara sahip dosyalar bulunduğunda, dosya kopyası kaldırılır ve yeni dosya eski dosyayı gösterir. Bununla birlikte, sabit bağlantılardan farklı olarak , çoğaltılan dosyalar ayrı varlıklar olarak kabul edilir ve çoğaltılan dosyalardan biri daha sonra değiştirilirse, yazma üzerine kopyala adı verilen bir sistem kullanılarak değiştirilen dosyanın veya bloğun bir kopyası oluşturulur. Tekilleştirme işlemi, kullanıcılar ve yedekleme uygulamaları için şeffaftır. Tekilleştirilmiş bir dosya sistemini yedeklemek, genellikle yedeklemelerin kaynak verilerden daha büyük olmasına neden olacak şekilde çoğaltmanın gerçekleşmesine neden olur.

Kaynak tekilleştirme, kopyalama işlemleri için açıkça bildirilebilir, çünkü kopyalanan verilerin tekilleştirmeye ihtiyacı olduğunu bilmek için herhangi bir hesaplamaya gerek yoktur. Dosya sistemleri üzerinde "bağlama" yeni bir forma Bu yol açar denilen referans linkinizi (Linux) veya clonefile bir veya daha fazla (MacOS), düğüm (dosya bilgisi kayıt) verilerinin bir kısmını veya tamamını paylaşmak için yapılır. İnode düzeyinde çalışan sabit bağlantılara ve dosya adı düzeyinde çalışan sembolik bağlantılara benzer şekilde adlandırılır . Bireysel girişler, örtüşmeyen bir yazma üzerine kopyalama davranışına sahiptir, yani daha sonra bir kopyanın değiştirilmesi diğer kopyaları etkilemeyecektir. Microsoft'un ReFS'si de bu işlemi destekler.

Hedef tekilleştirme, veriler o konumda oluşturulmadığında yinelenenleri kaldırma işlemidir. Bunun örneği, bir SAN/NAS'a bağlı bir sunucu olabilir, SAN/NAS, sunucu için bir hedef olabilir (Hedef tekilleştirme). Sunucu herhangi bir tekilleştirmeden haberdar değildir, sunucu aynı zamanda veri üretme noktasıdır. İkinci bir örnek yedekleme olacaktır. Genellikle bu, veri havuzu veya sanal teyp kitaplığı gibi bir yedekleme deposu olacaktır .

Tekilleştirme yöntemleri

Veri tekilleştirme uygulamalarının en yaygın biçimlerinden biri, yinelenenleri algılamak için veri parçalarını karşılaştırarak çalışır. Bunun olması için, her bir veri yığınına, yazılım tarafından tipik olarak kriptografik özet fonksiyonları kullanılarak hesaplanan bir kimlik atanır. Birçok uygulamada, kimlik özdeş ise, güvercin deliği ilkesi nedeniyle her durumda doğru olamasa da verilerin özdeş olduğu varsayımı yapılır ; diğer uygulamalar, aynı tanımlayıcıya sahip iki veri bloğunun aynı olduğunu varsaymaz, ancak aslında aynı tanımlamaya sahip verilerin aynı olduğunu doğrular. Yazılım, tekilleştirme ad alanında belirli bir kimliğin zaten var olduğunu varsayarsa veya uygulamaya bağlı olarak iki veri bloğunun kimliğini gerçekten doğrularsa, bu yinelenen öbeği bir bağlantıyla değiştirir.

Veriler tekilleştirildikten sonra, dosyanın geri okunması üzerine, bir bağlantının bulunduğu her yerde, sistem basitçe bu bağlantıyı referans verilen veri yığınıyla değiştirir. Veri tekilleştirme sürecinin, son kullanıcılar ve uygulamalar için şeffaf olması amaçlanmıştır.

Ticari veri tekilleştirme uygulamaları, yığınlama yöntemlerine ve mimarilerine göre farklılık gösterir.

  • Kümeleme. Bazı sistemlerde, parçalar fiziksel katman kısıtlamaları ile tanımlanır (örneğin, WAFL'de 4KB blok boyutu ). Bazı sistemlerde, yalnızca tek örnekli depolama veya SIS olarak adlandırılan tam dosyalar karşılaştırılır . Parçalamaya yönelik en akıllı (ancak CPU yoğun) yöntem genellikle kayan blok olarak kabul edilir. Kayan blokta, daha doğal olarak oluşan dahili dosya sınırlarını aramak için dosya akışı boyunca bir pencere geçirilir.
  • İstemci yedekleme tekilleştirme. Bu, tekilleştirme karma hesaplamalarının ilk olarak kaynak (istemci) makinelerde oluşturulduğu süreçtir. Halihazırda hedef cihazda bulunan dosyalarla aynı karmalara sahip dosyalar gönderilmez, hedef cihaz çoğaltılan verilere referans vermek için uygun dahili bağlantılar oluşturur. Bunun yararı, verilerin ağ üzerinden gereksiz yere gönderilmesini önleyerek trafik yükünü azaltmasıdır.
  • Birincil depolama ve ikincil depolama. Tanım olarak, birincil depolama sistemleri, mümkün olan en düşük maliyetten ziyade optimum performans için tasarlanmıştır. Bu sistemler için tasarım kriterleri, diğer hususlar pahasına performansı artırmaktır. Ayrıca, birincil depolama sistemleri, performansı olumsuz etkileyebilecek herhangi bir işleme karşı çok daha az toleranslıdır. Ayrıca tanım gereği, ikincil depolama sistemleri, verilerin birincil olarak yinelenen veya ikincil kopyalarını içerir. Bu veri kopyaları tipik olarak gerçek üretim işlemleri için kullanılmaz ve sonuç olarak artan verimlilik karşılığında bazı performans düşüşlerine karşı daha toleranslıdır.

Bugüne kadar, veri tekilleştirme ağırlıklı olarak ikincil depolama sistemlerinde kullanılmıştır. Bunun nedenleri iki yönlüdür. İlk olarak, veri tekilleştirme, yinelenen verileri keşfetmek ve kaldırmak için ek yük gerektirir. Birincil depolama sistemlerinde, bu ek yük performansı etkileyebilir. Tekilleştirmenin ikincil verilere uygulanmasının ikinci nedeni, ikincil verilerin daha fazla yinelenen verilere sahip olma eğiliminde olmasıdır. Özellikle yedekleme uygulaması, genellikle zaman içinde önemli miktarda yinelenen veri oluşturur.

Veri tekilleştirme, sistem tasarımının önemli bir ek yük veya etki performansı gerektirmediği bazı durumlarda birincil depolama ile başarıyla dağıtıldı.

Tek örnek depolama

Tek örnekli depolama (SIS), bir sistemin içerik nesnelerinin birden çok kopyasını alma ve bunları tek bir paylaşılan kopyayla değiştirme yeteneğidir. Veri tekrarını ortadan kaldırmak ve verimliliği artırmak için bir araçtır. SIS, dosya sistemlerinde , e-posta sunucusu yazılımında, veri yedeklemede ve depolamayla ilgili diğer bilgisayar yazılımlarında sıklıkla uygulanmaktadır . Tek örnekli depolama, veri tekilleştirmenin basit bir çeşididir. Veri tekilleştirme bir kesim veya alt blok düzeyinde çalışabilirken, tek örnekli depolama nesne düzeyinde çalışarak, tüm dosyalar veya e-posta mesajları gibi nesnelerin gereksiz kopyalarını ortadan kaldırır.

Dezavantajlar ve endişeler

Verileri tekilleştirmeye yönelik bir yöntem, yinelenen veri parçalarını tanımlamak için kriptografik karma işlevlerinin kullanımına dayanır . İki farklı bilgi parçası aynı hash değerini üretiyorsa, bu çarpışma olarak bilinir . Bir çarpışma olasılığı esas olarak karma uzunluğuna bağlıdır (bkz. doğum günü saldırısı ). Bu nedenle, bir karma çakışması meydana gelirse veri bozulmasının meydana gelebileceği endişesi ortaya çıkar ve verilerde bir fark olup olmadığını doğrulamak için ek doğrulama yöntemleri kullanılmaz. Hem sıralı hem de işlem sonrası mimariler, garantili veri bütünlüğü için orijinal verilerin bit-bit doğrulamasını sunabilir. Kullanılan karma işlevleri, SHA-1 , SHA-256 ve diğerleri gibi standartları içerir .

Sürecin hesaplamalı kaynak yoğunluğu, veri tekilleştirmenin bir dezavantajı olabilir. Performansı artırmak için bazı sistemler hem zayıf hem de güçlü karmaları kullanır. Zayıf karmaları hesaplamak çok daha hızlıdır ancak karma çarpışma riski daha yüksektir. Zayıf hash kullanan sistemler, daha sonra güçlü bir hash hesaplayacak ve bunu, aslında aynı veri olup olmadığının belirleyici faktörü olarak kullanacaktır. Karma değerlerin hesaplanması ve aranmasıyla ilişkili sistem ek yükünün öncelikle veri tekilleştirme iş akışının bir işlevi olduğunu unutmayın. Dosyaların yeniden oluşturulması bu işlemeyi gerektirmez ve veri parçalarının yeniden birleştirilmesiyle ilişkili herhangi bir artımlı performans cezasının uygulama performansını etkilemesi olası değildir.

Başka bir endişe, sıkıştırma ve şifrelemenin etkileşimidir. Şifrelemenin amacı, verilerdeki fark edilebilir kalıpları ortadan kaldırmaktır. Bu nedenle, temel alınan veriler gereksiz olsa bile şifrelenmiş veriler tekilleştirilemez.

Veri tekilleştirmede bir eksiklik olmamasına rağmen, büyük veri tekilleştirme havuzlarıyla yetersiz güvenlik ve erişim doğrulama prosedürleri kullanıldığında veri ihlalleri olmuştur. Bazı sistemlerde, tipik olarak bulut depolamada olduğu gibi, bir saldırgan, istenen verinin karma değerini bilerek veya tahmin ederek başkalarına ait verileri alabilir.

Uygulamalar

Veri tekilleştirme, ZFS veya Write Anywhere Dosya Düzeni gibi bazı dosya sistemlerinde ve farklı disk dizileri modellerinde uygulanır. Windows sunucularında hem NTFS hem de ReFS'de kullanılabilen bir hizmettir.

Ayrıca bakınız

Referanslar

Dış bağlantılar