Veri Tekilleştirme — Data Deduplication

Ömer Faruk Akyazan
Turk Telekom Bulut Teknolojileri
7 min readJan 25, 2022

Bilgi teknolojilerinde çalışıyorsanız ve büyük miktarda veriyi yedeklemekten veya aktarmaktan sorumluysanız veri tekilleştirme terimini muhtemelen duymuş olmalısınız. Bu yazıda tekilleştirmenin ne olduğuna ve dünyada neden bu kadar kritik öneme sahip olduğunu göreceğiz.

Günümüzde muhteşem bir ivme ile büyüyen ve artan Verilerin nasıl yönetilip hangi şekilde yedekleneceği durumunu çözebilmek gelecek yıllar için ciddi bir önem taşımakta. Bu kargaşayı ve kaosu çözebilmek adına birçok veri depolama ve yönetimi ile ilgili optimizasyon uygulaması mevcut. Fakat bunlardan biri gerçekten işini çok iyi yapıyor. Dünyada şu an birçok firma tarafından talep edilen ve çeşitli türevleri bulunan Deduplication yani tekilleştirme. Peki nedir bu tekilleştirme?

Deduplication Nedir?

Veri tekilleştirme yani Deduplication teknik olarak tekrarlayan aşırı veri kopyalarını ortadan kaldıran ve depolama kapasitesi gereksinimlerini önemli bir ölçüde azaltan bir optimizasyon sürecidir. Mantık olarak birebir aynı kopyası olan verilerin tek kopyasını tutup bu veri üzerinden linkleme yani referans gösterme işlemi yapılmasıdır.

Deduplication Ne Amaçla Kullanılır?

Örneğin elinizde müşterilerinizin adreslerine ait şehir bilgilerinin tutulduğu bir veri tabanınız var ve yaklaşık olarak 2 milyon müşteriniz İstanbul’da yaşıyor varsayalım. 2 milyon İstanbul verisi için ayrı ayrı BackUp yani yedekleme oluşturmak ve bunları yönetmek zamanla zorlaşacak ve işlerinizi verimsiz hale getirecektir. Peki ya İstanbul verisini bir kere yazsak ve yanına x2000000 bilgisini eklesek ve dilediğimiz zaman bu çarpımı yapabilsek. Bundan dolayı da normalde 100mb alan kaplayacak verilerimiz 1mb yer kaplasa… İşte Deduplication tam olarak bu işe yaramaktadır. Bu bahsettiğimiz örneği Kurumsal Firmalar bazında düşünecek olursak devasa bir veri kümesinden neler çıkabileceğini hayal edebilirsiniz. Genelde kurumlardaki verilerin %80 i aynıdır. Ağ üzerinden iletilecek veri miktarını azaltmak, depolama maliyetlerini düşürmek ve yedekleme hızını artırma açısından harika bir tasarruf aracıdır deduplication.

Bu yöntem ile disk şişmesi engellenir ve disk kapasitesi artmış olur.

Deduplication Çeşitleri

Veri tekilleştirme yaygın bir kavram olsa da, tüm veri tekilleştirme teknikleri aynı değildir. Veri tekilleştirmedeki ilk atılımlar, depolama kapasitesini azaltarak ve sunuculara ve teybe daha güvenilir veri yedeklemesi getirerek, zamanın zorluğunu kırmak için tasarlandı. Bunların üzerine başka firmalar bu teknolojiyi daha verimli hale getirebilmek için değişen veri segmentlerinin yedeklenmesini gerektiren değişken blok tabanlı teknikleri ile sürdüler.

In-line: En etkin ve ekonomik yöntemdir.Veriler diske yazılmadan önce tekilleştirme işleminden geçirilir. Bundan dolayı ihtiyaç duyulan disk kapasitesi azdır.

Post-Process: Önce verilerin tamamı diske yazılır,sonrasında tekilleştirme işlemi yapılır. Bundan dolayı başlangıçta ihtiyaç duyulan disk kapasitesi oldukça büyüktür. Ek olarak işlem süresi de daha uzundur.

Source ve Target Deduplication

Source ve Target Deduplication (Kaynakta Tekilleştirme ve Hedefte Tekilleştirme) In-line ve Post-process gibi tekilleştirme yöntemi değil verileri bloklara parçalamanın gerçekleştiği yerlerdir.

  • Source Deduplication: Sunucu tarafında yani kaynakta gerçekleşen tekilleştirme işlemidir. Yedek alınan sunucu üzerinde veri tekilleştirildikten sonra Backup cihazına aktarım sağlanır. Tüm Backup dosyasını göndermez sadece değişen kısmı gönderir ve bunu o gün ki hash dosyası üzerinde varolmayan verileri tespit ederek yapar. Uzak bölgelerden backup alabilmek için uygun bir yoldur.
  • Target Deduplication: Veriyi tekilleştirmeden Backup cihazına aktarılıp ilgili cihazda tekilleştirme işlemi yapılır yani veri çıkış yerinde değil varış yerinde işlem görür. Büyük boyutlu dosyaları kaynakta tekilleştirmek yerine tekilleştirme yapılacak hedefte yapılması daha az Cpu kullanımı sağlayacaktır.

Hangi Optimizasyon Yaklaşımı Ne Zaman Kullanılmalı?

  • Hedef cihazda disk kapasitesi tahsisinde kısıtlamalar olduğunda, tam ham veriler için gerekli alan olmadığında, yalnızca tekilleştirilmiş ve sıkıştırılmış veriler için depolama alanı sağlanabileceği için, In-Line Deduplication tercih edilir.
  • Performansın sürekli olarak sağlanması gerektiğinde ve depolama optimizasyon potansiyeli ve bunun performansı nasıl etkileyeceği konusunda belirsizlik olduğunda, Post-process Deduplication tercih edilen bir yaklaşım olacaktır. Kapasite optimizasyonu, veriler depolandıktan sonra gerçekleştiğinden, veriler yazıldığında çok fazla performans etkisi olmaz.
  • Yazılacak veriler depolama optimizasyonu için bariz daha büyük bir potansiyele sahip olduğunda (örneğin, tekilleştirilecek çok fazla fazla veri var, daha yüksek sıkıştırma oranlarını destekleyen belirli veri türleri var), In-line Deduplication daha yüksek alan verimliliği ve muhtemelen yazarken daha da iyi depolama performansı sağlayacaktır. operasyonlar en aza indirilir ve disk üzerindeki aşınma buna göre düşürülür. Ancak bu, depolama/BT yöneticisinin, yazılan verilerin doğasını anlamasını ve veri azaltmanın verimliliğini önceden tahmin etmesini gerektirir.
  • Depolama optimizasyonunun ne zaman gerçekleşeceğini kontrol etmek istediğinizde, fazla uygulama etkinliğinin olmadığı zamanlar için planlanabileceğinden, Post-process Deduplication daha iyi bir seçenek olacaktır. Bu, özellikle yoğun yük ve uygulama faaliyeti olduğunda olumsuz performans etkisi riskinin önlenmesine de yardımcı olabilir.

Deduplication Dezavantajları

Veri tekilleştirme, yedekleme yükünü azaltmanın oldukça etkili bir yolu olabilir. Ancak, veri tekilleştirme yalnızca artıklık yani fazlalık varsa çalışır. Her depolama bloğu benzersizse, tekilleştirilecek hiçbir şey yoktur (ancak bazı veri tekilleştirme algoritmaları alt blok düzeyinde çalışır).

Tekilleştirmenin ikincil bir dezavantajı, tekilleştirme sürecinin yoğun işlem hacmi eğiliminde olmasıdır. Örneğin,In-line Deduplication genellikle önemli miktarda bellek ve CPU zamanı gerektirirken, Post-process Deduplication az bellek ve CPU zamanı gerektirir ve ayrıca önemli miktarda depolama Girdi/Çıktı’sı oluşturur. Bu nedenle, veri tekilleştirme kullanımını desteklemek için yeterli donanım kaynağına sahip olduğunuzdan emin olmanız gerekir.

Tekilleştirme Sıkıştırma Türlerini Etkileyen Faktörler

In-line ve Post-process veri azaltma yaklaşımları için depolama tasarrufu hedefleri belirlerken, depolama performansını olumlu veya olumsuz yönde etkilemede etkili olan veri tekilleştirme ve sıkıştırma verimliliği oranlarını etkileyen aşağıdaki belirleyici faktörleri göz önünde bulundurmalısınız:

  • Veri türü : Verinin türü, verinin ne kadar tekilleştirilebileceğini veya sıkıştırılabileceğini belirlemede önemli bir rol oynar. Veritabanlarında, uygulama düzeyinde zaten bir miktar fazlalık kaldırma teknolojisi vardır. Dolayısıyla veritabanları tekilleştirme ve sıkıştırma ile yüksek tasarruf sağlamayabilir. İşletim sistemi görüntülerinin anlık görüntülerinin (örneğin bir VDI ortamında) daha yüksek kapasite optimizasyon oranları sağlaması beklenebilir.
  • Veri değişim hızı: Verilerde daha az değişiklik yapıldığında, veri tekilleştirme ve sıkıştırma yapmak o kadar kolay ve hızlı olur. Verilerde yapılan ve diske kaydedilen her değişiklik, yinelenen veri kümelerini belirlemek ve sıkıştırma algoritmasını yürütmek için ayrı bir inceleme döngüsü gerektirir. Bu daha sonra sunucu üzerindeki ek yükü artıracaktır.
  • Veri yedekleme sıklığı: Daha önce de bahsedildiği gibi, özellikle tam yedekleme durumunda, yedekleme sıklığı ne kadar yüksek olursa, o kadar fazla yedek veri üretilir. Bu, tekilleştirildiğinde ve sıkıştırıldığında daha fazla alan tasarrufu sağlar.

Dosya Düzeyinde Tekilleştirme İle Blok Düzeyinde Veri Tekilleştirme

Veri tekilleştirme genellikle dosya veya blok düzeyinde çalışır. Dosya tekilleştirme, yinelenen dosyaları ortadan kaldırır, ancak etkin bir veri tekilleştirme yöntemi değildir.

Dosya düzeyinde veri tekilleştirme, yedeklenecek veya arşivlenecek bir dosyayı önceden depolanmış kopyalarla karşılaştırır. Bu, özniteliklerini bir dizine göre kontrol ederek yapılır. Dosya benzersiz ise depolanır ve dizin güncellenir; değilse, yalnızca mevcut dosyaya yönelik bir işaretçi saklanır. Sonuç olarak, dosyanın yalnızca bir örneği kaydedilir ve sonraki kopyalar, orijinal dosyaya işaret eden bir saplama ile değiştirilir.

Blok düzeyinde veri tekilleştirme bir dosyanın içine bakar ve her bloğun benzersiz yinelemelerini kaydeder. Tüm bloklar aynı sabit uzunlukta parçalara ayrılır. Her veri yığını, MD5 veya SHA-1 gibi bir karma algoritma kullanılarak işlenir.

Bu işlem, her parça için benzersiz bir numara üretir ve bu numara daha sonra bir dizinde saklanır. Bir dosya güncellenirse, belgenin veya sunumun yalnızca birkaç baytı değişmiş olsa bile yalnızca değiştirilen veriler kaydedilir. Değişiklikler tamamen yeni bir dosya oluşturmaz. Bu davranış, blok veri tekilleştirmesini çok daha verimli hale getirir. Bununla birlikte, blok veri tekilleştirme daha fazla işlem gücü gerektirir ve ayrı parçaları izlemek için çok daha büyük bir dizin kullanır.

Değişken uzunluklu veri tekilleştirme, bir dosya sistemini çeşitli boyutlardaki parçalara bölen ve veri tekilleştirme çabasının sabit uzunluklu bloklardan daha iyi veri azaltma oranları elde etmesine olanak tanıyan bir alternatiftir. Dezavantajları, aynı zamanda daha fazla meta veri üretmesi ve daha yavaş olma eğiliminde olmasıdır.

Hash çarpışmaları, veri tekilleştirmeyle ilgili potansiyel bir sorundur. Bir veri parçası bir hash numarası aldığında, bu sayı daha sonra mevcut diğer hash sayılarının indeksi ile karşılaştırılır. Bu karma numarası zaten dizindeyse, veri parçası bir kopya olarak kabul edilir ve yeniden depolanması gerekmez. Aksi takdirde yeni hash numarası dizine eklenir ve yeni veriler saklanır. Nadir durumlarda, karma algoritması iki farklı veri parçası için aynı karma numarasını üretebilir. Bir hash çakışması meydana geldiğinde, sistem yeni verileri saklamaz çünkü onun hash numarasının indekste zaten var olduğunu görür. Buna yanlış pozitif denir ve veri kaybına neden olabilir. Bazı satıcılar, karma çakışma olasılığını azaltmak için karma algoritmaları birleştirir. Bazı satıcılar ayrıca verileri tanımlamak ve çakışmaları önlemek için meta verileri inceliyor.

Veri Tekilleştirme Neden Önemlidir?

Disk kapasiteleri artmaya devam etse bile, veri depolama satıcıları sürekli olarak müşterilerinin genişleyen büyük veri yığınlarını depolama aygıtlarına sıkıştırarak atabilecekleri metotlar arıyorlar. Sonuçta, daha büyük disklerde bile, bu disklerin potansiyel kapasitesini en üst düzeye çıkarmak için fırsatları araştırmak mantıklıdır. Veri tekilleştirmenin genel depolama kullanımı üzerinde her zaman büyük olumlu etkileri olacaktır, bu da maliyetleri düşürür, ancak verimliliği doğru bir şekilde en üst düzeye çıkarmak için hangi tür tekilleştirme yönteminin gerekli olduğunu bilmek önemlidir. Bazı yöntemler bant genişliği gereksinimlerini azaltır, diğerleri yerelleştirilmiş depolama bağımlılıklarını azaltır ve diğerleri doğrudan bulut bilişim hizmetleriyle bütünleşir.

Kısacası

Veri tekilleştirme ne gibi kazançlar sağlar?

- Doğru ve tutarlı yedek verisi sağlar.

- Yedeklenen veriler üzerinde değişimi ve kontrolü daha kolay takip edilebilir.

- Üzerinde çalışılması gereken verinin azaltılması sayesinde segmentasyon gibi işlemlerin daha hızlı yürütülmesini sağlar.

- Disk alanı ve donanım ihtiyacının azalmasını sağlar.

- Yüksek depolama alanı kullanımından ötürü ortaya çıkan maliyetleri düşürür.

- Gereksiz veya tekrarlayan bilgileri kaldırarak veri aktarımlarını optimize eder.

--

--