Kinerja penulisan yang buruk pada ecryptfs

15

Saya melakukan sedikit pembandingan dengan ecryptfs dan dm-crypt, dan mendapatkan beberapa hasil yang menarik. Semua yang berikut ini dilakukan dengan sistem file Btrfs, gunakan dduntuk menyalin file ~ 700MB ke / dari ramdisk dengan conv=fdatasyncopsi untuk memaksa sinkronisasi data. Tembolok disk dibersihkan sebelum setiap tes.

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

Sekarang saya mengerti bahwa enkripsi lebih lambat daripada sistem file mentah, namun saya tidak berharap penurunan kinerja penulisan besar-besaran dengan ecryptfs. Apakah fakta bahwa saya memaksa sinkronisasi data membuat tes ini tidak realistis? Atau apakah ada opsi yang bisa saya sampaikan ke ecryptfs agar menulis lebih cepat?

Saya menggunakan enkripsi nama file di ecryptfs, tetapi selain itu semuanya diatur ke default.

Xenopathic
sumber
Benchmarking bisa sulit, dan kadang-kadang tes mencapai beberapa batas yang tidak terduga, terutama ketika memaksa menulis sinkron. Saya tidak terbiasa dengan cara kerja ecryptf, tetapi Anda harus memastikan untuk tidak mengesampingkan masalah penulisan amplifikasi. Ukuran blok apa yang digunakan ecryptf, dan apa yang Anda tentukan untuk dd? Jika ecryptfs mengenkripsi 16kb sekaligus dan Anda sedang menulis blok yang lebih kecil, setiap sinkronisasi akan memaksa membaca untuk mengambil blok, kemudian mengubah data, lalu mengenkripsi, dan akhirnya menulis. Itu bisa menjelaskan angka kinerja seperti ini.
ketil

Jawaban:

2

Halaman manual ddtentang fdatasyncreads:, physically write output file data before finishingsehingga hanya menulis data secara fisik "satu kali" (baca sebagai "tidak memaksakan flush setiap X blok atau byte, tetapi satu flush tunggal di akhir"). Jika Anda menggunakan dduntuk melakukan tes Anda, itu adalah cara terbaik untuk mendapatkan hasil yang paling akurat. Sebaliknya, tidak menggunakan bendera spesifik itu, akan membuat hasil Anda tidak realistis: menghilangkannya mungkin akan kehilangan waktu untuk enkripsi itu sendiri karena ddhanya menyalin data sekitar.

Namun demikian, saya juga berpikir ada sesuatu yang terjadi untuk hasil Anda, tetapi saya menemukan artikel ini yang menunjukkan hampir sama: ecryptfs sangat lambat. Dan pengujian Anda ( satu file disalin) adalah skenario terbaik untuk ecryptfs!

Ketika ecryptfs menulis file terenkripsi (dengan header khusus dengan metadata di dalamnya) untuk setiap versi teks-jelas, memiliki banyak file kecil menyiratkan penurunan kinerja yang lebih besar.

Namun, ecryptfs memiliki manfaat: Anda dapat mengirim file yang dienkripsi segera tanpa kehilangan enkripsi. Cadangan Anda (dengan asumsi Anda mencadangkan data terenkripsi ) akan lebih cepat karena Anda hanya akan menyalin file sebesar data Anda (dan bahkan lebih cepat jika bersifat inkremental, karena Anda hanya akan menyalin file yang dimodifikasi).

dm-crypt, di sisi lain, mungkin jauh lebih cepat tetapi Anda harus mengirim seluruh wadah (seluruh sistem file) untuk menjaga enkripsi seperti apa adanya. Dan cadangan juga akan terdiri dari seluruh wadah, tidak dapat melakukan cadangan tambahan dalam banyak kasus.

Saya telah menggunakan (dan masih menggunakan) kedua metode (bukan alat yang sama, meskipun) untuk menyimpan data terenkripsi: berbasis file (ecryptfs) lebih mudah untuk tetap disinkronkan melalui layanan hosting online seperti dropbox antar PC, tetapi cukup lambat ketika melakukan perubahan dan telah menyebabkan saya beberapa masalah dengan filesystem yang mendasari (diasumsikan dapat menulis file dan masalah yang berkaitan dengan batas pada filesystem cenderung memecah semuanya); Saya lebih suka enkripsi perangkat blok: Saya memperlakukan mereka sebagai partisi sederhana, sehingga batas dan masalah tidak rusak begitu buruk. Satu-satunya kelemahan adalah menyalin wadah, yang bisa memakan waktu lebih lama.

NuTTyX
sumber