SSD chậm + dm-crypt với mã hóa Luks trong Ubuntu 12.10


9

Tôi có ổ SSD 128 GB được cài đặt trong máy tính xách tay của mình (Samsung 840 Pro) trên giao diện Sata 3. Máy tính xách tay này cũng có bộ xử lý Intel Bridge i5 3210m và RAM 8 GB.

Tôi đã cài đặt Ubuntu 12.10, sử dụng trình cài đặt đồ họa để mã hóa toàn bộ đĩa. Tôi hơi thất vọng, vì tôi đã mong đợi thông số kỹ thuật tôi phải mang lại kết quả tốt hơn những gì tôi nhận được.

Trong khi nhìn vào trang Điểm chuẩn SSD này, nó tuyên bố rằng bộ xử lý của tôi có thể thực hiện:

  • ~ 500 MB / s: Với AES-NI
  • ~ 200 MB / s: Không có AES-NI

Nhìn vào những con số tôi nhận được, tôi nghĩ rằng tôi có thể không kích hoạt AES-NI. Nhưng trước tiên ...

Đọc dữ liệu không được mã hóa là nhanh chóng:

# hdparm -Tt /dev/sda1

/dev/sda1:
 Timing cached reads:   14814 MB in  2.00 seconds = 7411.70 MB/sec
 Timing buffered disk reads: 242 MB in  0.48 seconds = 502.75 MB/sec

Điều đó thực sự gần với thông số kỹ thuật của SSD của tôi là "lên tới 530 MB / s" và thực hiện ddthử nghiệm mang lại kết quả tương tự như trên.

Việc ghi dữ liệu được mã hóa cũng nhanh chóng với dm-crypt (nếu không với eCryptfs, hiệu suất khi viết rất tệ, thấp hơn 100 MB / s), các con số gần với thông số SSD (tôi đoán việc ghi được đệm hoặc một cái gì đó):

# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.93896 s, 365 MB/s

Đọc dữ liệu được mã hóa là một câu chuyện khác:

# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.85956 s, 183 MB/s

Trong khi viết tin nhắn này, tôi thực sự đã may mắn nhận được 183 MB / s, vì con số này thay đổi. Thông thường, khoảng 150 MB / giây, nhưng tôi cũng đạt gần 300 MB / giây khi khởi động mới, nhưng sau đó hiệu suất giảm dần xuống dưới 200 MB / giây mà không cần tôi khởi động bất kỳ ứng dụng nào. Xin lưu ý rằng trong khi tiến hành kiểm tra này, tôi không có quy trình nào khác đang thực hiện I / O (như đã thấy iotop).

Ngoài ra, đây là thử nghiệm hdparmmang lại kết quả tồi tệ hơn:

 # hdparm -Tt /dev/mapper/sda2_crypt 

 /dev/mapper/sda2_crypt:
  Timing cached reads:   14816 MB in  2.00 seconds = 7412.86 MB/sec
  Timing buffered disk reads: 422 MB in  3.01 seconds = 140.11 MB/sec

Tôi cũng đã thử nghiệm bằng cách xem xét htop... không biết làm thế nào để diễn giải những gì tôi thấy, vì bộ xử lý i5 thực hiện Hyper-Threading, nhưng 2 luồng trong số 4 trong đó sẽ chiếm khoảng 73% lượng sử dụng trong quá trình thử nghiệm, trong khi cái còn lại 2 chủ đề còn lại không sử dụng. Thật vậy, nếu tôi bắt đầu 2 quá trình đang đọc ddtừ 2 tệp riêng biệt (để ngăn chặn bộ đệm), thì iotopbáo cáo tổng cộng khoảng 400 MB / s. Vì vậy, điều này chắc chắn cảm thấy như nó bị ràng buộc CPU.

Sự thất vọng của tôi đến từ việc bộ xử lý i5 của tôi có khả năng AES-NI . Dữ liệu không được mã hóa đang được đọc với tốc độ trên 500 MB / s bằng các thử nghiệm tương tự tôi đã làm ở trên. Vì vậy, chúng ta đang nói về một phân vùng được mã hóa chậm hơn ít nhất 3 lần.

Tôi thực sự không biết nếu cài đặt dm-crypt của tôi đang sử dụng AES-NI. Đây là đầu ra của lsmod:

 # lsmod | grep aes
 aesni_intel            51038  35 
 cryptd                 20404  10 ghash_clmulni_intel,aesni_intel
 aes_x86_64             17256  1 aesni_intel

Đây là đầu ra của cryptsetup:

 # cryptsetup status sda2_crypt
 /dev/mapper/sda2_crypt is active and is in use.
   type:    LUKS1
   cipher:  aes-xts-plain64
   keysize: 512 bits
   device:  /dev/sda2
   offset:  4096 sectors
   size:    249565184 sectors
   mode:    read/write
   flags:   discards

Vì vậy, điều này có được mong đợi không? AES-NI không nên cải thiện nhiều thứ hơn thế này sao?

Ngoài ra, làm cách nào để tắt AES-NI để xem có sự khác biệt nào không? Và có lẽ tôi nên kích hoạt nó bằng cách nào đó, nhưng không tìm thấy bất kỳ lời khuyên nào trong các tìm kiếm của tôi.

Cảm ơn,

Câu trả lời:


5

Samsung 840 Pro của bạn hỗ trợ mã hóa AES phần cứng. Nếu BIOS máy tính xách tay của bạn hỗ trợ chế độ tính năng bảo mật ATA đặt mật khẩu chính và mật khẩu người dùng, bạn sẽ gặp may.

Bằng cách đặt mật khẩu chính ATA trong BIOS, sau đó thực hiện xóa an toàn ổ đĩa, phần sụn ổ đĩa sẽ tạo ra các khóa AES ngẫu nhiên mới. Sau khi xóa an toàn, đảm bảo rằng bạn đã đặt mật khẩu người dùng và chủ ATA tốt. Theo như tôi đã có thể thiết lập (xem bài đăng của tôi ở đây http://vxlabs.com/2012/12/22/ssds-with-Us-built-in-hardware-basing-full-disk-encoding/ ) Samsung cũng mã hóa các khóa AES của mình bằng mật khẩu ATA của bạn.

Điều này sẽ cung cấp cho bạn mã hóa AES tốc độ đầy đủ, không yêu cầu phần mềm.


4

Có một cấu hình sai trong Ubuntu dẫn đến mô-đun aesni_intel không được tải đủ sớm để xử lý tiền điện tử cho các thiết bị mở khóa khởi động. Tôi đã có thể sửa lỗi này trên máy của mình bằng cách thực hiện:

sudo vim /etc/initramfs-tools/modules

Bên dưới dòng cuối cùng, thêm

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Sau đó chạy

sudo update-initramfs -u -k all

khởi động lại, và tận hưởng. Sau này, trên một ổ SSD tương tự, tôi đã thấy 500MB / s đọc và ghi với mức sử dụng CPU không đáng kể.

Chi tiết đầy đủ về lỗi này có tại https://bugs.launchpad.net/ubfox/+source/cryptsetup/+orms/908387/comments/7

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.