Ubuntu 12.10 में लुक्स एन्क्रिप्शन के साथ एसएसडी + डीएम-क्रिप्ट को धीमा करें


10

मेरे पास अपने लैपटॉप (सैमसंग 840 प्रो) में एक एसएटी 3 इंटरफ़ेस पर 128 जीबी एसएसडी है। इस लैपटॉप में i5 3210m Ivy Bridge Intel प्रोसेसर और 8 जीबी की रैम भी है।

मैंने उबंटू 12.10 स्थापित किया, फुल-डिस्क एन्क्रिप्शन प्राप्त करने के लिए ग्राफिकल इंस्टॉलर का उपयोग किया। मैं एक तरह से निराश हूं, क्योंकि मैं उन चश्मे की उम्मीद कर रहा था जो मुझे मिले उससे बेहतर परिणाम मिले।

इस SSD बेंचमार्किंग पेज को देखने के दौरान यह दावा किया गया है कि मेरा प्रोसेसर ऐसा करने में सक्षम है:

  • ~ 500 एमबी / एस: एईएस-एनआई के साथ
  • ~ 200 एमबी / एस: एईएस-एनआई के बिना

मुझे मिलने वाले नंबरों को देखते हुए, मुझे लगता है कि मेरे पास एईएस-एनआई सक्षम नहीं हो सकता है। लेकिन पहले ...

अनएन्क्रिप्टेड डेटा पढ़ना तेज है:

# 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

यह वास्तव में मेरे एसएसडी के "530 एमबी / एस तक" के चश्मे के करीब है और एक ddपरीक्षण करने से ऊपर के समान परिणाम मिलते हैं।

एन्क्रिप्टेड डेटा लिखना डीएम-क्रिप्ट के साथ बहुत तेज़ है (अन्यथा eCryptfs के साथ लेखन पर प्रदर्शन abysmal है, 100 एमबी / एस से कम है), संख्या एसएसडी कल्पना के करीब है (मुझे लगता है कि लेखन बफर या कुछ और है):

# 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

इस संदेश को लिखते समय, मैं वास्तव में 183 एमबी / एस पाने के लिए भाग्यशाली हो गया, क्योंकि यह संख्या बदलती है। आम तौर पर यह लगभग 150 एमबी / एस है, लेकिन मैं भी एक ताजा बूट पर 300 एमबी / एस के करीब पहुंच गया, लेकिन फिर मेरे बिना कोई ऐप शुरू किए प्रदर्शन धीरे-धीरे 200 एमबी / एस के नीचे चला गया। ध्यान दें कि इस परीक्षण का आयोजन करते समय मेरे पास कोई अन्य प्रक्रिया नहीं है जो 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

मैंने यह देखकर भी प्रयोग करने की कोशिश की htop... निश्चित नहीं कि मैंने जो देखा, उसकी व्याख्या कैसे करें क्योंकि i5 प्रोसेसर हाइपर-थ्रेडिंग करता है, लेकिन 4 में से 2 थ्रेड्स जहां परीक्षण के दौरान लगभग 73% उपयोग के लिए जा रहे हैं, जबकि अन्य 2 धागे जहां अप्रयुक्त छोड़ दिए गए। दरअसल, अगर मैं 2 प्रक्रियाओं को शुरू करता हूं जो dd2 अलग-अलग फाइलों से पढ़ रहा है (बफरिंग को रोकने के लिए), तो iotopकुल लगभग 400 एमबी / एस की रिपोर्ट करता है। तो यह निश्चित रूप से ऐसा लगता है कि यह सीपीयू-बाउंड है।

मेरी निराशा इस तथ्य से आती है कि मेरा i5 प्रोसेसर एईएस-एनआई में सक्षम है । 500 से अधिक एमबी / सेकंड पर अनएन्क्रिप्टेड डेटा पढ़ा जा रहा है जो मैंने ऊपर किया था। इसलिए हम एक एन्क्रिप्टेड विभाजन के बारे में बात कर रहे हैं जो कम से कम 3 गुना धीमा है।

मैं वास्तव में नहीं जानता कि क्या मेरा डीएम-क्रिप्ट एईएस-एनआई का उपयोग कर रहा है। यहाँ का उत्पादन है 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

तो, क्या यह अपेक्षित है? क्या एईएस-एनआई को इससे अधिक चीजों में सुधार नहीं करना चाहिए?

इसके अलावा, एईएस-एनआई को कैसे निष्क्रिय करना है यह देखने के लिए कि क्या कोई अंतर है? और शायद मुझे इसे किसी तरह से सक्षम करना चाहिए, लेकिन मेरी खोजों में कोई सुझाव नहीं मिला है।

धन्यवाद,

जवाबों:


6

आपका सैमसंग 840 प्रो हार्डवेयर एईएस एन्क्रिप्शन का समर्थन करता है। यदि आपका लैपटॉप BIOS ATA सुरक्षा सुविधा मोड सेट मास्टर और उपयोगकर्ता पासवर्ड का समर्थन करता है, तो आप भाग्य में हैं।

BIOS में एटीए मास्टर पासवर्ड सेट करके, और फिर ड्राइव को सुरक्षित मिटाकर, ड्राइव फर्मवेयर को नए यादृच्छिक एईएस कुंजी उत्पन्न करना चाहिए। सुरक्षित मिटाए जाने के बाद सुनिश्चित करें कि आपने अच्छा ATA मास्टर और उपयोगकर्ता पासवर्ड सेट किया है। जहाँ तक मैं स्थापित करने में सक्षम रहा हूँ (मेरी पोस्ट यहाँ देखें http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-enc एन्क्रिप्शन/ ) सैमसंग भी अपने एटीए पासवर्ड के साथ अपने एईएस कुंजी को एन्क्रिप्ट करता है।

यह आपको पूर्ण गति एईएस एन्क्रिप्शन देगा, कोई सॉफ़्टवेयर की आवश्यकता नहीं है।


5

उबंटू में एक गलत धारणा है जिसके परिणामस्वरूप 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

रिबूट, और आनंद लें। इसके बाद, एक समान एसएसडी पर, मैं नगण्य सीपीयू उपयोग के साथ 500 एमबी / एस को पढ़ और लिख रहा था।

इस बग का पूरा विवरण https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7 पर है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.