Ubuntu 12.10의 Luks 암호화를 사용한 느린 SSD + dm-crypt


10

Sata 3 인터페이스의 랩톱 (Samsung 840 Pro)에 128GB SSD가 설치되어 있습니다. 이 노트북에는 i5 3210m 아이비 브릿지 인텔 프로세서와 8GB RAM이 있습니다.

전체 디스크 암호화를 위해 그래픽 설치 프로그램을 사용하여 Ubuntu 12.10을 설치했습니다. 나는 내가 얻는 것보다 더 나은 결과를 얻을 수 있어야하는 사양을 기대했기 때문에 약간 실망했습니다.

SSD 벤치마킹 페이지를 보면서 내 프로세서가 다음을 수행 할 수 있다고 주장합니다.

  • ~ 500MB / s : AES-NI 사용
  • ~ 200MB / s : AES-NI 미포함

내가 얻은 숫자를 보면 AES-NI가 활성화되지 않은 것 같습니다. 그러나 먼저 ...

암호화되지 않은 데이터를 읽는 것이 빠릅니다.

# 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

실제로 SSD의 "최대 530MB / s"사양에 가깝고 dd테스트를 수행 하면 위와 비슷한 결과가 나타납니다.

dm-crypt를 사용하여 암호화 된 데이터를 쓰는 것도 빠릅니다 (그렇지 않으면 eCryptfs를 사용하면 쓰기 성능이 100MB / s보다 끔찍합니다).

# 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

그러나 암호화 된 데이터를 읽는 것은 또 다른 이야기입니다.

# 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

이 메시지를 쓰는 동안이 숫자가 다양하기 때문에 실제로 183MB / s를 얻는 것이 운이 좋았습니다. 일반적으로 150MB / s 정도이지만 새로 부팅하면 300MB / s에 가까워 지지만 앱을 시작하지 않고도 성능이 200MB / s 미만으로 점차 떨어집니다. 이 테스트를 수행하는 동안 (와 같이) I / O를 수행하는 다른 프로세스는 없습니다 iotop.

또한 hdparm더 나쁜 결과를 얻는 테스트가 있습니다 .

 # 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

또한 htopi5 프로세서가 하이퍼 스레딩을 수행하기 때문에 내가 본 것을 해석하는 방법을 모르지만 테스트 중 사용량의 약 73 %가되는 4 개 중 2 개 스레드를 보았습니다. 사용하지 않은 채로 2 개의 스레드. 실제로 dd(버퍼링을 방지하기 위해) 2 개의 개별 파일에서 읽는 2 개의 프로세스를 시작 iotop하면 총 약 400MB / s가보고됩니다. 따라서 이것은 CPU 바운드 인 것 같습니다.

내 i5 프로세서가 AES-NI 가능하다는 사실에 실망 합니다. 암호화되지 않은 데이터는 위에서했던 것과 동일한 테스트를 사용하여 500MB / s 이상으로 읽습니다. 따라서 암호화 된 파티션이 최소 3 배 느리다는 이야기입니다.

내 dm-crypt 설치가 AES-NI를 사용하고 있는지 잘 모르겠습니다. 출력은 다음과 같습니다 lsmod.

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

출력은 다음과 같습니다 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

그렇다면 이것이 예상됩니까? AES-NI가 이것보다 더 많은 것을 개선해서는 안됩니까?

또한 차이점이 있는지 확인하기 위해 AES-NI를 비활성화하는 방법은 무엇입니까? 어쩌면 내가 어떻게 든 활성화해야하지만 검색에서 팁을 찾지 못했습니다.

감사,

답변:


6

Samsung 840 Pro는 하드웨어 AES 암호화를 지원합니다. 랩탑 BIOS가 ATA 보안 기능 모드 세트 마스터 및 사용자 비밀번호를 지원하면 운이 좋을 것입니다.

BIOS에서 ATA 마스터 암호를 설정 한 다음 드라이브를 안전하게 지우면 드라이브 펌웨어가 새로운 임의의 AES 키를 생성해야합니다. 보안 지우기 후에 올바른 ATA 마스터 및 사용자 암호를 설정했는지 확인하십시오. 내가 설립 할 수있는 한 (내 게시물을 참조하십시오 http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) 또한 삼성은 ATA 비밀번호로 AES 키를 암호화합니다.

소프트웨어가 필요없는 최고 속도의 AES 암호화를 제공합니다.


5

Ubuntu의 구성이 잘못되어 aesni_intel 모듈이 부팅 잠금 해제 장치의 암호화를 처리하기에 충분히 일찍로드되지 않습니다. 다음을 수행하여 내 컴퓨터에서이 문제를 해결할 수있었습니다.

sudo vim /etc/initramfs-tools/modules

마지막 줄 아래에

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

그런 다음 실행

sudo update-initramfs -u -k all

재부팅하고 즐기십시오. 그 후 비슷한 SSD에서 무시할만한 CPU 사용량으로 500MB / s의 읽기 및 쓰기를 보았습니다.

이 버그에 대한 자세한 내용은 https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.