Hiệu suất ghi kém trên ecryptfs


15

Tôi đã làm một chút điểm chuẩn với ecryptfs và dm-crypt, và nhận được một số kết quả thú vị. Tất cả những điều sau đây được thực hiện với hệ thống tệp Btrfs, sử dụng ddđể sao chép tệp ~ 700 MB vào / từ một đĩa RAM với conv=fdatasynctùy chọn để buộc đồng bộ hóa dữ liệu. Bộ nhớ cache đã bị xóa trước mỗi bài kiểm tra.

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

Bây giờ tôi hiểu rằng mã hóa chậm hơn hệ thống tệp thô, tuy nhiên tôi không mong đợi hiệu suất ghi lớn giảm với ecryptfs. Có phải thực tế là tôi đang buộc đồng bộ hóa dữ liệu làm cho thử nghiệm này không thực tế? Hoặc có bất kỳ tùy chọn nào tôi có thể chuyển qua ecryptfs để viết bài hoạt động nhanh hơn không?

Tôi đã sử dụng mã hóa tên tệp trên ecryptfs, nhưng khác với mọi thứ được đặt thành mặc định.


Điểm chuẩn có thể khó khăn và đôi khi thử nghiệm đạt một số giới hạn không mong muốn, đặc biệt là khi buộc ghi đồng bộ. Tôi không quen với hoạt động bên trong của ecryptfs, nhưng bạn nên đảm bảo loại trừ bất kỳ vấn đề khuếch đại ghi nào. Kích thước khối nào mà ecryptfs sử dụng và bạn đã chỉ định gì cho dd? Nếu ecryptfs mã hóa 16kb mỗi lần và bạn đang viết các khối nhỏ hơn, mỗi đồng bộ hóa sẽ buộc đọc để tìm nạp khối, sau đó thay đổi dữ liệu, sau đó mã hóa và cuối cùng là viết. Điều đó có thể giải thích số hiệu suất như thế này.
ketil

Câu trả lời:


2

Trang con người ddvề khoảng fdatasyncđọc: physically write output file data before finishingvì vậy nó chỉ ghi dữ liệu vật lý "một lần" (đọc nó là "không buộc tuôn ra mỗi khối X hoặc byte, nhưng chỉ một lần xả ở cuối"). Nếu bạn đang sử dụng ddđể làm bài kiểm tra của mình, đó là cách tốt nhất để có kết quả chính xác nhất. Ngược lại, không sử dụng cờ cụ thể đó, sẽ khiến kết quả của bạn không thực tế: bỏ qua nó có thể sẽ mất thời gian cho chính mã hóa vì ddchỉ là sao chép dữ liệu xung quanh.

Tuy nhiên, tôi cũng nghĩ rằng có một cái gì đó đang diễn ra đối với kết quả của bạn, nhưng tôi thấy bài viết này cho thấy gần như giống nhau: ecryptfs rất chậm. Và thử nghiệm của bạn ( một tệp duy nhất được sao chép) là trường hợp tốt nhất cho ecryptfs!

Vì ecryptfs viết một tệp được mã hóa (có tiêu đề tùy chỉnh với siêu dữ liệu bên trong) cho mọi phiên bản văn bản rõ ràng, có rất nhiều tệp nhỏ ngụ ý thậm chí giảm hiệu suất cao hơn.

Tuy nhiên, ecryptfs có lợi ích của nó: bạn có thể gửi một tệp được mã hóa ngay lập tức mà không mất mã hóa. Các bản sao lưu của bạn (giả sử bạn đang sao lưu dữ liệu được mã hóa ) sẽ nhanh hơn vì bạn chỉ sao chép các tệp lớn bằng dữ liệu của mình (và thậm chí nhanh hơn nếu chúng tăng dần, vì bạn chỉ sao chép các tệp đã sửa đổi).

dm-crypt, mặt khác, có thể nhanh hơn nhưng bạn sẽ cần gửi toàn bộ container (toàn bộ hệ thống tệp) để giữ mã hóa như hiện tại. Và các bản sao lưu cũng sẽ bao gồm toàn bộ container, không thể thực hiện sao lưu gia tăng trong hầu hết các trường hợp.

Tôi đã sử dụng (và vẫn sử dụng) cả hai phương thức (mặc dù không phải cùng một công cụ) để giữ dữ liệu được mã hóa: dựa trên tệp (ecryptfs) dễ dàng được đồng bộ hóa thông qua các dịch vụ lưu trữ trực tuyến như dropbox giữa các PC, nhưng khá chậm khi thực hiện các thay đổi và gây ra cho tôi một số vấn đề với hệ thống tập tin bên dưới (nó giả định rằng nó có thể ghi các tập tin và các vấn đề liên quan đến giới hạn trên hệ thống tập tin có xu hướng phá vỡ toàn bộ); Tôi thích mã hóa thiết bị khối: Tôi coi chúng là các phân vùng đơn giản, vì vậy các giới hạn và sự cố không bị hỏng quá nặng. Hạn chế duy nhất là sao chép container, có thể mất nhiều thời gian hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.