Cloud Depolama İçin Dosya Çoğaltma Önleme Stratejileri
Dosya çoğaltma önlemeyle depolama maliyetlerini azaltın. Blok düzeyi, dosya düzeyi ve satır içi çoğaltma önleme teknikleri açıklandı.
Dosya tekilleştirme, üç teknikten birini kullanarak iş yüküne bağlı olarak bulut depolamayı %20-90 oranında düşürür: dosya düzeyi (özdeş dosyaları SHA-256 karmasıyla anahtarlanmış olarak bir kez saklayın), blok düzeyi (dosyaları 4-128 KB bloklara parçalayın ve blok başına tekilleştirme yapın) veya Rabin parmak izleriyle içerik tanımlı parçalama (CDC) aracılığıyla değişken uzunluklu parçalama. VM yedeklemeleri 10:1 azalma görür; genel ofis dosyaları 2:1; medya kitaplıkları neredeyse hiçbir şey görmez. Verinize uyan tekniği seçin — zaten benzersiz .mp4 dosyalarından oluşan bir kütüphane üzerinde blok tekilleştirme çalıştırmak, kazanım olmaksızın CPU harcar.
Dosya Düzeyi Tekilleştirme: En Basit Kazanım
Dosya düzeyi tekilleştirme, tüm dosya karmalarını karşılaştırır. Aynı SHA-256'ya sahip iki dosya özdeştir; birini tutun, diğerini ona yönlendirin. Uygulama bir hafta sonu alır:
- Bucket içeriklerini envantere alın (S3 Inventory, Azure Inventory, GCS bucket listesi)
- Her nesne için SHA-256 hesaplayın (veya uyarılarla birlikte sağlayıcı tarafından sağlanan ETag'leri kullanın)
- Karmaya göre gruplayın, grup başına standart bir anahtar seçin, referansları güncelleyin, kopyaları silin
Uyarılar: S3 ETag'leri yalnızca 5 GB'ın altındaki tek parçalı yüklemeler için SHA-256 ile eşleşir. Çok parçalı yüklemeler farklı bir formül kullanır (karmalar karmalaması). Güvenilir tekilleştirme için kendi karmanızı aws s3 cp s3://bucket/key - | sha256sum ile hesaplayın veya yükleme sırasında hesaplayıp meta veride saklayın.
Dosya düzeyi tekilleştirme, kullanıcılar aynı dosyaları rutin olarak yüklediğinde parlar — satıcı PDF'leri, şirket şablonları, paylaşılan resimler. Tipik ofis iş yüklerinde %10-30 tasarruf bekleyin.
Blok Düzeyi Tekilleştirme: Büyük Çarpan
Blok düzeyi, her dosyayı sabit boyutlu parçalara (4 KB, 16 KB, 64 KB) böler ve her parçayı karma alır. Parçalarının %80'ini paylaşan iki dosya yalnızca benzersiz %20'yi artı paylaşılan bloklardan bir kopya depolar. Yedekleme ürünleri (Veeam, Rubrik, Commvault), dosya sistemleri (ZFS ile dedup=on, Btrfs) ve bazı yedekleme bulutları (istemci tarafı tekilleştirmeyle Backblaze B2) bunu kullanır.
Avantajlar: Dosyaların büyük aralıkları paylaştığı VM görüntüleri, veritabanı yedekleri ve günlük arşivleri üzerinde büyük sıkıştırma. Dezavantajlar: yüksek bellek kullanımı (tekilleştirme indeksi RAM'de yaşar), yazma sırasındaki CPU maliyeti ve indeks bozulursa yıkıcı büyütme.
Bulut nesne depolama için blok tekilleştirme genellikle yerel özellik yerine yedekleme ürününün içinde gerçekleşir. S3 tekilleştirmez; Backblaze B2, istemci önce blok karmaları gönderdiğinde yükleme sırasında tekilleştirir.
İçerik Tanımlı Parçalama (CDC)
Sabit boyutlu parçalama, bir dosyanın başına bir bayt eklendiğinde bozulur — her sonraki blok farklı karmalanır. İçerik Tanımlı Parçalama, içerik desenlerine dayalı parça sınırları tanımlamak için dönen karma (Rabin-Karp parmak izi) kullanır. Bir bayt ekleyin ve yalnızca hemen parça değişir.
CDC, restic, BorgBackup, Duplicacy ve Kopia'nın temelini oluşturur. Bu açık kaynak araçlar, ortalama 1-4 MB değişken parçalarla istemci tarafında tekilleştirme yapar. Artımlı olarak değişen 500 GB dosyayı yedeklediğinizde, CDC tabanlı yedeklemeler genellikle 50 GB'ın altında benzersiz depolama kullanır.
Bir yedekleme veya senkronizasyon sistemi oluşturuyorsanız fastcdc-rs veya chunky gibi bir kütüphane aracılığıyla CDC modern seçimdir. Kendi dönen karmanızı geliştirmeyin — kenar durumlar ince ve karmaşıktır.
Satır İçi ve İşlem Sonrası Tekilleştirme
Satır içi tekilleştirme, yazma sırasında çalışır — veri diske ulaşmadan sistem bloğun zaten var olup olmadığını kontrol eder. Evet ise bir referans yaz; hayır ise bloğu yaz. ZFS, çoğu yedekleme cihazı ve bazı bulut depolama katmanları tarafından kullanılır.
İşlem sonrası tekilleştirme önce yazar, ardından kopyaları bulmak ve alanı geri kazanmak için arka plan işi çalıştırır. Windows Server'ın Veri Tekilleştirmesi, NetApp'ın SnapVault'u ve çoğu kullanıcı alanı aracı tarafından kullanılır. İşlem sonrası, daha düşük yazma gecikmesine sahiptir ancak daha fazla tepe depolama gerektirir (kopyalar geri kazanımdan önce kısa süre var olur).
Bulut iş yükleri için satır içi tekilleştirme genellikle mevcut değildir — S3 bunu sunmaz. Zamanlanmış işle işlem sonrası (günlük envanter, günlük tekilleştirme çalıştırması) pratik desendir.
Tekilleştirmenin Yardım Etmediği Yer
Zaten sıkıştırılmış veya şifrelenmiş veriler kötü tekilleştirir. İki farklı .mp4 dosyası, benzer içerikte olsa bile neredeyse hiç bayt paylaşmaz. Aynı düz metnin iki şifrelenmiş .zip dosyası, şifreleme sonrası sıfır bayt paylaşır — şifrelemenin tüm amacı bu zaten.
Bu, uçtan uca şifreli dosya depolamamın kullanıcılar arasında tekilleştirme yapamayacağı anlamına gelir. Yakınsak şifreleme (düz metni karma al, karmayı anahtar olarak kullan), E2EE genelinde tekilleştirmeyi etkinleştirme girişimiydi; ancak güvenlik sorunları vardır — dosya onaylama saldırılarını mümkün kılar. E2EE dosya hizmetleri için, tekilleştirmenin kullanıcılar genelinde değil bir kullanıcının kendi dosyaları içinde gerçekleştiğini kabul edin.
Tekilleştirmenin Güvenlik Boyutu
E2EE olmayan sistemlerde kullanıcılar arası tekilleştirme bir yan kanal oluşturur: yüklediğiniz bir dosya mevcut bir blokla tekilleşirse, sunucu başka birinin de o dosyaya sahip olduğunu öğrenir. Dropbox bunu 2011'de gün yüzüne çıkardı; başka bazı hizmetler de öyle. Paylaşılan iş hesapları için sorun yoktur, ancak gizlilik iddia eden hizmetler için bu bir sızıntıdır.
Gizlilik önemli ise, tüm sistem genelinde değil yalnızca kullanıcının kendi verileri içinde (kullanıcıya özgü bir anahtarla tuzlanmış) tekilleştirme yapın. Ya da E2EE'nin tekilleştirme anlamına gelmediğini kabul edin ve depolamayı buna göre boyutlandırın. Gizliliği önceleyen araçlar — örneğin şifreli geçici transferler için HexaTransfer — hizmet dahil kimsenin iki kullanıcının aynı dosyaya sahip olup olmadığını anlayamayacağı garantisi karşılığında tekilleştirme verimliliğinden vazgeçer.
Tekilleştirme Etkinliğini Ölçme
Tekilleştirmeyi yalnızca etkinleştirip umut etmeyin. Oranı ölçün:
tekilleştirme_oranı = mantıksal_bayt / fiziksel_bayt
2:1 oranı, her 1 fiziksel bayt için 2 mantıksal bayt sakladığınız anlamına gelir. Raporlama araçları: ZFS'de zpool get dedupratio, Windows Server'da Get-DedupStatus, restic/Borg'da depo başına istatistikler.
İş yüküne göre sağlıklı oranlar:
- VM görüntüleri: 8-20:1
- Veritabanı yedekleri: 10-30:1
- Dosya sunucusu (ofis belgesi): 1,5-3:1
- E-posta arşivleri: 2-5:1
- Medya kitaplıkları: 1,0-1,1:1 (zahmet etmeyin)
- Şifreli arşivler: 1,0:1 (imkansız)
Bir iş yükü oranı 1,5:1'in altındaysa tekilleştirmeyi kapatın — CPU ve bellek kendi ücretlerini karşılamıyor.
Yedekleme Ürün Entegrasyonu
Çoğu kuruluş tekilleştirmeyi sıfırdan uygulamaz — bunu yapan bir yedekleme ürünü kullanır. Seçim yaparken karşılaştırma noktaları:
- Veeam: Satır içi blok tekilleştirme, varsayılan 512 KB parça, tekilleştirme sonrası sıkıştırma
- Rubrik: İçerik tanımlı değişken parçalar, alt blok tekilleştirme
- Commvault: İstemci başına ve genel havuzlarla istemci tarafı tekilleştirme
- restic/Borg/Kopia: Açık kaynak CDC, istemci tarafı, S3/B2/Azure arka uçları
- BackupPC: Sabit bağlantı tabanlı dosya düzeyi, basit ama eski
2 TB'ı S3 Glacier'a yedekleyen küçük bir işletme için restic ile Glacier Instant Retrieval, 5:1 tekilleştirmeyle aylık yaklaşık 500 TL'ye mal olur. 500 TB'lık kurumsal veri varlığı için tekilleştirmeli uygun bir yedekleme platformu kendisini birinci yılın depolama tasarruflarında amorti eder.
Üstüne Sıkıştırma Ekleme Zamanı
Tekilleştirme yinelenen baytları kaldırır; sıkıştırma benzersiz baytlardaki artıklığı kaldırır. İkisi üst üste gelir. Tekilleştirmenin ardından, metin ağırlıklı veriler için başka 1,5-2x azalma amacıyla zstd sıkıştırması uygulayın. BorgBackup --compression zstd destekler; restic'in --compression max seçeneği vardır; AWS EFS, OneZone-IA için şeffaf sıkıştırmaya sahiptir.
Sıra önemlidir: önce tekilleştirme (yinelenen blokları açığa çıkarmak için), ardından benzersiz blokları sıkıştırın. Önce sıkıştırma genellikle tekilleştirmeyi bozar çünkü küçük giriş değişiklikleri sıkıştırılmış çıktı boyunca yayılır. Tüm ciddi yedekleme ürünleri bunu doğru halleder — yalnızca düğmeleri seçersiniz.
Tekilleştirme sıkıcı, gösterişsizdir ve karma iş yükleri için depolama maliyeti üzerindeki tek en büyük kaldıraçtır. Veriyi envantere alın, içerikle uyuşan tekniği seçin, oranı ölçün ve bütçeyi geri kazanın.
hexatransfer.com'da deneyin — ücretsiz, hesap gerekmez, maksimum 10 GB.
Uçtan uca şifreleme ile büyük dosyaları güvenle gönderin
Uçtan uca şifreleme ile 10 GB'a kadar dosya ücretsiz aktarın. Hesap gerekmez. Dosyalarınız yüklenmeden önce tarayıcınızda şifrelenir — başka kimse okuyamaz.
Dosya gönder