Veri tekilleştirme - Data deduplication

İçinde bilgi işlem, veri tekilleştirme yinelenen verilerin yinelenen kopyalarını ortadan kaldırmak için bir tekniktir. İlişkili ve biraz eşanlamlı bir terim tek örnekli (veri) depolama. Bu teknik, depolama kullanımını iyileştirmek için kullanılır ve ayrıca gönderilmesi gereken bayt sayısını azaltmak için ağ veri aktarımlarına da uygulanabilir. Veri tekilleştirme sürecinde, benzersiz veri yığınları veya bayt kalıpları, bir analiz işlemi sırasında tanımlanır ve depolanır. Analiz devam ederken, diğer yığınlar depolanmış kopyayla karşılaştırılır ve bir eşleşme gerçekleştiğinde, yedek yığın, depolanan parçayı işaret eden küçük bir referansla değiştirilir. Aynı bayt modelinin düzinelerce, yüzlerce veya 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), depolanması veya aktarılması gereken veri miktarı büyük ölçüde azaltılabilir.[1][2]

Veri tekilleştirme, veri sıkıştırma algoritmalarından farklıdır. LZ77 ve LZ78. Sıkıştırma algoritmaları tek tek dosyaların içindeki fazlalık verileri tanımlarken ve bu fazlalık verileri daha verimli bir şekilde kodlarken, tekilleştirmenin amacı büyük hacimli verileri incelemek ve büyük bölümleri (tüm dosyalar veya büyük dosya bölümleri gibi) tanımlamak ve bunları değiştirmektir. paylaşılan bir kopya ile.

Çalışma prensibiÖrneğin, tipik bir e-posta sistemi aynı 1 MB'ın 100 örneğini içerebilir (megabayt ) dosya eklentisi. Her seferinde e-posta platform yedeklenir, ekin 100 örneğinin tümü kaydedilir ve 100 MB depolama alanı gerektirir. Veri tekilleştirme ile, ekin yalnızca bir örneği gerçekte depolanır; sonraki örnekler, kabaca 100'e 1 tekilleştirme oranı için kaydedilmiş kopyaya geri gönderilmektedir. Veri tekilleştirme, ek depolama tasarrufu için genellikle veri sıkıştırmayla eşleştirilir: Veri tekilleştirme ilk olarak büyük yinelenen veri yığınlarını ortadan kaldırmak için kullanılır ve ardından sıkıştırma verimli bir şekilde kullanılır depolanan parçaların her birini kodlayın.[3]

Faydaları

Depolama tabanlı veri tekilleştirme, belirli bir dosya kümesi için gereken depolama miktarını azaltır. Şaşırtıcı derecede yaygın bir senaryo olan, çok benzer veya 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 yedeklemeleri durumunda, belirli bir yedeklemedeki çoğu veri önceki yedeklemeden değişmeden kalır. Yaygın yedekleme sistemleri, bunu atlayarak (veya sert bağlama ) değişmeyen veya depolamayan dosyalar farklılıklar dosyalar arasında. Bununla birlikte, 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 dosyalar için yardımcı olmaz; farklılıklar yalnızca tek bir dosyanın bitişik sürümlerinde fazlalık bulur (silinen ve daha sonra tekrar 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, gerekli bayt sayısını azaltmak için kullanılır Uç noktalar arasında aktarılabilir, bu da gereken bant genişliği miktarını azaltabilir. Görmek WAN optimizasyonu 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 tekilleştirmeden yararlanır. Aynı zamanda, belirli bir sanal makine bir dosyayı özelleştirirse, 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 yinelenen kopyalarının oluşturulması da benzer şekilde geliştirildi.

Sınıflandırma

Sıralı tekilleştirmeye karşı işlem sonrası

Veri akarken "satır içi" veya yazıldıktan sonra "işlem sonrası" tekilleştirme gerçekleşebilir.

İşlem sonrası tekilleştirme ile, yeni veriler önce depolama cihazında depolanır ve daha sonra bir işlem, çoğaltmayı arayan verileri analiz eder. Bunun faydası, beklemeye gerek olmamasıdır. karma veriler saklanmadan önce hesaplamalar ve aramanın tamamlanması, böylece mağaza performansının düşmemesi sağlanır. Politika tabanlı işlem sunan uygulamalar, kullanıcılara "etkin" dosyalarda optimizasyonu erteleme veya dosyaları tür ve konuma göre işleme yeteneği verebilir. Olası bir dezavantaj, yinelenen verilerin kısa bir süre için gereksiz yere depolanabilmesidir; bu, sistem tam kapasiteye yaklaştığında sorun yaratabilir.

Alternatif olarak, veri tekilleştirme hash hesaplamaları satır içinde yapılabilir: veriler hedef cihaza girdikçe senkronize edilir. Depolama sistemi önceden depoladığı bir bloğu tanımlarsa, tüm yeni blok yerine sadece mevcut bloğa bir referans kaydedilir.

Sıralı tekilleştirmenin işlem sonrası tekilleştirmeye göre avantajı, yinelenen veriler asla depolanmadığı veya aktarılmadığı için daha az depolama ve ağ trafiği gerektirmesidir. Olumsuz tarafı, hash hesaplamaları hesaplama açısından pahalı olabilir ve bu nedenle depolama verimini azaltır. Bununla birlikte, sıralı veri tekilleştirme özelliğine sahip bazı satıcılar, yüksek oranlarda sıralı veri tekilleştirmeyi gerçekleştirebilen ekipman gösterdiler.

İşlem sonrası ve sıralı veri tekilleştirme yöntemleri genellikle yoğun bir şekilde tartışılır.[4][5]

Veri formatları

SNIA Sözlüğü iki yöntemi tanımlar:[2]

  • içerikten bağımsız veri tekilleştirme - belirli uygulama veri biçimleri hakkında farkındalık gerektirmeyen bir veri tekilleştirme yöntemi.
  • içeriğe duyarlı veri tekilleştirme - belirli uygulama veri biçimleri hakkındaki bilgileri kullanan bir veri tekilleştirme yöntemi.

Kaynak ve hedef tekilleştirme karşılaştırması

Veri tekilleştirme yöntemlerini sınıflandırmanın başka bir yolu, oluştukları yere göredir. Verinin oluşturulduğu yere yakın gerçekleşen tekilleştirme, "kaynak tekilleştirme" olarak adlandırılır. Verilerin depolandığı yerin yakınında meydana geldiğinde, buna "hedef tekilleştirme" denir.

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 karma oluşturarak yeni dosyaları tarayacak ve bunları mevcut dosyaların karmalarıyla karşılaştıracaktır. Aynı karmalara sahip dosyalar bulunduğunda, dosya kopyası kaldırılır ve yeni dosya eski dosyayı gösterir. Aksine sabit bağlantılar ancak, yinelenen dosyalar ayrı varlıklar olarak kabul edilir ve yinelenen dosyalardan biri daha sonra değiştirilirse, o zaman adı verilen bir sistemi kullanarak yazma üzerine kopyalama değiştirilen dosyanın veya bloğun bir kopyası oluşturulur. Veri tekilleştirme süreci, kullanıcılar ve yedekleme uygulamaları için şeffaftır. Tekilleştirilen bir dosya sistemini yedeklemek, çoğu zaman yinelemenin meydana gelmesine ve yedeklemelerin kaynak verilerden daha büyük olmasına neden olur.[6][7]

Kopyalanan verilerin tekilleştirmeye ihtiyaç duyduğunu bilmek için herhangi bir hesaplamaya gerek olmadığından, kaynak tekilleştirme açıkça kopyalama işlemleri için bildirilebilir. Bu, dosya sistemlerinde yeni bir "bağlanma" biçimine yol açar: reflink (Linux) veya klon dosyası (MacOS), bir veya daha fazla düğümler (dosya bilgisi girişleri) verilerinin bir kısmını veya tamamını paylaşmak için yapılır. Benzer şekilde adlandırılır sabit bağlantılar, inode düzeyinde çalışan ve sembolik bağlar dosya adı düzeyinde çalışır.[8] Bireysel girişler, örtüşme olmayan bir yazma üzerine kopyalama davranışına sahiptir, yani daha sonra bir kopyayı değiştirmek diğer kopyaları etkilemeyecektir.[9] Microsoft'un ReFS bu işlemi de desteklemektedir.[10]

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

Tekilleştirme yöntemleri

Veri tekilleştirme uygulamalarının en yaygın biçimlerinden biri, yinelemeleri algılamak için veri yığınlarını karşılaştırarak çalışır. Bunun gerçekleşmesi için, her veri yığınına, yazılım tarafından, tipik olarak kriptografik karma işlevler kullanılarak hesaplanan bir kimlik atanır. Pek çok uygulamada, kimlik belirleme aynı ise verilerin aynı olduğu varsayılır, ancak bu durum her durumda doğru olmayabilir. güvercin deliği ilkesi; diğer uygulamalar, aynı tanımlayıcıya sahip iki veri bloğunun özdeş olduğunu varsaymaz, ancak gerçekte aynı kimliğe sahip verilerin aynı olduğunu doğrular.[11] 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 kopya yığınını bir bağlantıyla değiştirecektir.

Veriler tekilleştirildikten sonra, dosyanın geri okunduğunda, nerede bir bağlantı bulunursa bulunsun, sistem basitçe bu bağlantıyı referans verilen veri yığınıyla değiştirir. Veri tekilleştirme işleminin son kullanıcılar ve uygulamalar için şeffaf olması amaçlanmıştır.

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

  • Kümeleme. Bazı sistemlerde, yığınlar fiziksel katman kısıtlamalarıyla tanımlanır (ör. 4KB blok boyutu WAFL ). Bazı sistemlerde yalnızca tam dosyalar karşılaştırılır ve buna tek örnekli depolama veya SIS. Parçalama için 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ı bulmak için dosya akışı boyunca bir pencere geçirilir.
  • İstemci yedekleme tekilleştirme. Bu, veri tekilleştirme hash hesaplamalarının başlangıçta kaynak (istemci) makinelerde oluşturulduğu süreçtir. Zaten hedef cihazda bulunan dosyalara özdeş karmalara sahip dosyalar gönderilmez, hedef cihaz sadece ç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 maliyet yerine 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 yönde etkileyebilecek herhangi bir işleme çok daha az toleranslıdır. Ayrıca tanım gereği, ikincil depolama sistemleri birincil olarak yinelenen veya verilerin 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 veriye sahip olma eğiliminde olmasıdır. Özellikle yedekleme uygulaması, zaman içinde önemli miktarda yinelenen veri oluşturur.

Veri tekilleştirme, sistem tasarımının önemli bir ek yük gerektirmediği veya performansı etkilemediği bazı durumlarda birincil depolamayla başarıyla dağıtılmıştır.

Tek Örnek Depolama

Tek örnekli depolama (SIS), bir sistemin içerik nesnelerinin birden çok kopyasını alma ve bunları tek bir paylaşılan kopya ile değiştirme yeteneğidir. Veri tekrarını ortadan kaldırmak ve verimliliği artırmak için bir araçtır. SIS sıklıkla dosya sistemleri, e-posta sunucusu yazılım, veri destek olmak ve depolama ile ilgili diğer bilgisayar yazılımları. Tek örnekli depolama basit bir varyantıdır veri tekilleştirme. Veri tekilleştirme bir segment veya alt blok seviyesinde çalışabilirken, tek örnekli depolama, nesne seviyesinde çalışır ve tüm dosyalar veya e-posta mesajları gibi nesnelerin gereksiz kopyalarını ortadan kaldırır.[12]

Dezavantajlar ve endişeler

Verilerin tekilleştirilmesi için bir yöntem, kriptografik hash fonksiyonları yinelenen veri segmentlerini tanımlamak için. İki farklı bilgi parçası aynı hash değerini oluşturuyorsa bu, çarpışma. Bir çarpışma olasılığı esas olarak hash uzunluğuna bağlıdır (bkz. doğum günü saldırısı ). Böylece endişe ortaya çıkıyor: veri bozulması eğer ortaya çıkabilir karma çarpışma 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.[13] Kullanılan hash fonksiyonları aşağıdaki gibi standartları içerir: SHA-1, SHA-256 ve diğerleri.

İşlemin hesaplama 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 hash'lerin hesaplanması çok daha hızlıdır ancak hash çarpışması riski daha yüksektir. Zayıf karmalar kullanan sistemler, daha sonra güçlü bir karma hesaplayacak ve bunu, gerçekte aynı veri olup olmadığı konusunda belirleyici faktör olarak kullanacaktır. Karma değerlerin hesaplanması ve aranmasıyla ilişkili sistem ek yükünün, öncelikle 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 artan performans cezasının uygulama performansını etkilemesi olası değildir.

Diğer bir endişe, sıkıştırma ve şifreleme etkileşimidir. Şifrelemenin amacı, verilerdeki fark edilebilir kalıpları ortadan kaldırmaktır. Bu nedenle, şifrelenmiş veriler, temeldeki veriler gereksiz olsa bile tekilleştirilemez.

Veri tekilleştirmede bir eksiklik olmasa da, veri tekilleştirmenin büyük havuzlarıyla yetersiz güvenlik ve erişim doğrulama prosedürleri kullanıldığında veri ihlalleri olmuştur. Bulut depolamada olduğu gibi bazı sistemlerde,[kaynak belirtilmeli ] bir saldırgan, istenen verilerin karma değerini bilerek veya tahmin ederek başkalarının sahip olduğu verileri alabilir.[14]

Uygulamalar

Tekilleştirme, aşağıdaki gibi bazı dosya sistemlerinde uygulanır. ZFS[15] veya Her Yerde Dosya Düzenini Yazın ve farklı disk dizileri modeller.

Ayrıca bakınız

Referanslar

  1. ^ "Veri Tekilleştirmeyi Anlama". Druva. 2009-01-09. Arşivlenen orijinal 2019-08-06 tarihinde. Alındı 2019-08-06.
  2. ^ a b SNIA Sözlüğü »Sözlük D
  3. ^ Sıkıştırma, tekilleştirme ve şifreleme: Fark nedir?, Stephen Bigelow ve Paul Crocetti
  4. ^ "Satır içi veya işlem sonrası tekilleştirme mi? (6-08 güncellendi)". Yedekleme Merkezi. Arşivlenen orijinal 2009-12-06 tarihinde. Alındı 2009-10-16.
  5. ^ "Satır içi ve işlem sonrası tekilleştirme araçları". Searchdatabackup.techtarget.com. Alındı 2009-10-16.
  6. ^ "Windows Server 2008: Windows Storage Server 2008". Microsoft.com. Arşivlenen orijinal 2009-10-04 tarihinde. Alındı 2009-10-16.
  7. ^ "Ürünler - Platform İşletim Sistemi". NetApp. Alındı 2009-10-16.
  8. ^ "Reflink (2) sistem çağrısı v5". lwn.net.
  9. ^ "ioctl_ficlonerange (2)". Linux Kılavuz Sayfası.
  10. ^ Kazuki MATSUDA. "Windows'a ReFS desteği üzerinden klon dosyası ekle". GitHub.
  11. ^ Kimlik için tanımlandığını varsaymak yerine kontrol eden bir uygulama örneği "ABD Patent başvurusu # 20090307251".
  12. ^ İstemcilere veri tekilleştirme oranlarını ve tek örnekli depolamayı açıklama. George Crump, Storage İsviçre
  13. ^ Veri Tekilleştirme - Neden, Ne Zaman, Nerede ve Nasıl, Değerlendirici Grubu, alındı 2011-07-05
  14. ^ HIRİSTİYAN KAŞE; MATTHIAS SCHUNTER (Aralık 2011). "Güvenebileceğiniz Bir Bulut". IEEE Spektrumu. IEEE. Alındı 2011-12-21.
  15. ^ Yazar, Misafir. "ZFS Tekilleştirme". blogs.oracle.com. Alındı 25 Kasım 2019.

Dış bağlantılar