Ecryptfs'de kötü yazma performansı


15

Ecryptfs ve dm-crypt ile biraz kıyaslama yaptım ve bazı ilginç sonuçlar aldım. Aşağıdakilerin tümü, veri senkronizasyonunu zorlama seçeneğiyle dd~ 700MB'lık bir dosyayı ramdisk'e / ramdisk'ten kopyalamak için kullanılan bir Btrfs dosya sistemi ile yapıldı conv=fdatasync. Disk önbellekleri her testten önce temizlendi.

No encryption:
 read - 165MB/s
 write - 120MB/s
ecryptfs:
 read - 125MB/s
 write - 15MB/s
dm-crypt:
 read - 150MB/s
 write - 115MB/s
dm-crypt + ecryptfs:
 read - 120MB/s
 write - 15MB/s

Artık şifrelemenin ham dosya sisteminden daha yavaş olduğunu anlıyorum, ancak ecryptfs ile büyük yazma performansı düşüşü beklemiyordum. Veri senkronizasyonunu zorladığım gerçeği bu testi gerçekçi değil mi? Yoksa yazımların daha hızlı çalışmasını sağlamak için ecryptfs'e iletebileceğim herhangi bir seçenek var mı?

Ecryptfs dosya adı şifreleme kullanıyordum, ama bunun dışında her şey varsayılan olarak ayarlanmış.


Kıyaslama zor olabilir ve bazen test, özellikle senkron yazmaları zorlarken beklenmedik sınırlara ulaşır. Ecryptf'lerin iç işleyişine aşina değilim, ancak herhangi bir yazma amplifikasyonu sorununu dışladığınızdan emin olmalısınız. Ecryptfs hangi blok boyutunu kullanıyor ve dd için ne belirttiniz? Ecryptfs bir kerede 16kb şifreliyorsa ve daha küçük bloklar yazıyorsanız, her senkronizasyon bir okumayı bloğu almaya zorlar, ardından verileri değiştirir, sonra şifreler ve son olarak yazar. Bu, bunun gibi performans sayılarını açıklayabilir.
ketil

Yanıtlar:


2

Man sayfası ddyaklaşık olarak fdatasyncokur: physically write output file data before finishingbu nedenle verileri yalnızca fiziksel olarak "bir kez" yazar ("her X bloğunu veya baytını bir floş zorlamak değil, sonunda tek bir floş" olarak okuyun). ddTestlerinizi yapmak için kullanıyorsanız , en doğru sonuçları almanın en iyi yoludur. Aksine, bu belirli bayrağı kullanmamak sonuçlarınızı gerçekçi kılar: ddsadece veri kopyalamak olduğu için şifrelemenin zamanını kaçırır .

Yine de, sonuçlarınızla ilgili bir şeyler olduğunu düşündüm, ancak neredeyse aynı gösteren bu makaleyi buldum : ecryptfs acı verici yavaş. Ve testiniz ( kopyalanan tek bir dosya ) ecryptfs için en iyi senaryodur!

Ecryptfs, her açık metin sürümü için şifrelenmiş bir dosya (içinde metadata içeren özel bir başlık ile) yazarken, çok sayıda küçük dosyaya sahip olmak daha büyük bir performans düşüşü anlamına gelir.

Bununla birlikte, ecryptfs'nin faydaları vardır: şifrelemeyi kaybetmeden hemen şifreli bir dosya gönderebilirsiniz. Yedeklemeleriniz ( şifrelenmiş verilerinizi yedeklediğinizi varsayarsak ) daha hızlı olur çünkü yalnızca verileriniz kadar büyük dosyaları kopyalarsınız (ve yalnızca değiştirilmiş dosyaları kopyalayacağınız gibi artımlıysa daha hızlı).

dm-crypt, diğer taraftan, çok daha hızlı olabilir, ancak şifrelemeyi olduğu gibi tutmak için tüm kapsayıcıyı (bütün bir dosya sistemi) göndermeniz gerekir. Ve yedeklemeler, çoğu durumda artımlı yedeklemeler yapamayan tüm kaptan oluşur.

Şifrelenmiş verileri tutmak için her iki yöntemi de kullandım (ve yine de aynı araçları kullanmadım): dosya tabanlı (ecryptfs) bilgisayarlar arasında dropbox gibi çevrimiçi barındırma hizmetleri aracılığıyla senkronize tutmak daha kolaydır, ancak ne zaman oldukça yavaştır değişiklikler yapmak ve altta yatan dosya sistemiyle ilgili bazı sorunlara neden oldu (dosyaları yazabileceğini varsayar ve dosya sistemindeki sınırlarla ilgili sorunlar her şeyi parçalama eğilimindedir); Blok cihaz şifrelemesini tercih ederim: Onlara basit bölümler olarak davranıyorum, bu yüzden sınırlar ve sorunlar o kadar da kötü değil. Tek dezavantajı, daha uzun sürebilen kabı kopyalamaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.