ZFS RAID और LUKS एन्क्रिप्शन लिनक्स में


24

मैं लिनक्स में (एनएएस समाधान के लिए) एलयूकेएस-एनक्रिप्टेड जेड-आरओडी पूल के रूप में 3x 2 टीबी 7200 आरपीएम ड्राइव का एक सेट करने की योजना बना रहा हूं।

हाथ में समस्या के बारे में मेरी समझ यह है कि इसे प्राप्त करने का एकमात्र तरीका luksFormatहर भौतिक उपकरण है और फिर अनलॉक किए गए एलयूकेएस कंटेनरों में से एक झूले को इकट्ठा करता है।

मुझे इसके साथ निम्नलिखित चिंताएं हैं:

  • क्या यह लिखने के प्रदर्शन को बाधित नहीं करेगा? इस सेटअप में अनावश्यक डेटा को कई बार एन्क्रिप्ट किया जाता है क्योंकि LUKS Z-RAID का "पता" नहीं होता है। LUKS-on-mdadm सॉल्यूशन डेटा को एक बार एन्क्रिप्ट किया जाता है और केवल कई बार डिस्क को लिखा जाता है। मेरा CPU Intel AES-NI का समर्थन करता है।

  • क्या ZFS डिस्क-विफलताओं के बारे में पता होगा जब डिवाइस-मैपर LUKS कंटेनरों पर काम करते हुए भौतिक उपकरणों के विपरीत होता है? समर्पण और अन्य ZFS सुविधाओं के बारे में कैसे?


4
मैं ऐसा नहीं करेगा। विफलता-प्रवण लगता है।
इविविट

3
@MadHatter क्योंकि यह ZFS है। आप ऐसा नहीं कर सकते।
माइकल हैम्पटन

1
ठीक है (मैं इसके लिए आपका शब्द लूंगा)। एक बड़ी फ़ाइल युक्त एक बड़ी ZFS बनाओ, लूपबैक यह माउंट और एन्क्रिप्ट कि
MadHatter

1
@eewhite मैं केवल लिनक्स पर ZFS के साथ एन्क्रिप्शन का उपयोग करने के लिए विकल्पों का पता लगा रहा हूं जब तक कि ZFS कर्नेल मॉड्यूल एन्क्रिप्शन स्वयं को लागू नहीं करता। लेकिन मुझे सहमत होना है - LUKS और ZFS को अच्छी तरह से साथ नहीं मिल रहा है।
17

4
कभी नहीं, कभी भी, एक बड़ी फ़ाइल बनाएं और इसे ZFS के साथ लूपबैक करें। जब आपके ऑपरेशन के लिए CoW अंतरिक्ष से बाहर निकलता है, तो आप अपने पूल को एक बेकार गति से खराब कर देते हैं।
विनियस फेरो

जवाबों:


27

सर्वर जो मैं प्रशासित करता हूं उनमें से एक आपके द्वारा वर्णित कॉन्फ़िगरेशन के प्रकार को चलाता है। इसमें LUKS- एन्क्रिप्टेड RAIDZ पूल के साथ छह 1TB हार्ड ड्राइव हैं। LUKS- एनक्रिप्टेड ZFS मिरर में मेरे पास दो 3TB हार्ड ड्राइव भी हैं जिन्हें हर हफ्ते ऑफ-साइट लिया जाता है। सर्वर इस कॉन्फ़िगरेशन का उपयोग लगभग तीन वर्षों से कर रहा है, और मुझे कभी भी इससे कोई समस्या नहीं हुई है।

यदि आपको लिनक्स पर एन्क्रिप्शन के साथ ZFS की आवश्यकता है तो मैं इस सेटअप की सलाह देता हूं। मैं ZFS-Fuse का उपयोग कर रहा हूं, लिनक्स पर ZFS का नहीं। हालांकि, मेरा मानना ​​है कि लिनक्स पर जेडएफएस के अलावा अन्य परिणाम पर कोई असर नहीं पड़ेगा, शायद सेटअप की तुलना में बेहतर प्रदर्शन होगा जो मैं उपयोग कर रहा हूं।

इस सेटअप में अनावश्यक डेटा को कई बार एन्क्रिप्ट किया जाता है क्योंकि LUKS Z-RAID का "पता" नहीं होता है। LUKS-on-mdadm सॉल्यूशन डेटा को एक बार एन्क्रिप्ट किया जाता है और केवल कई बार डिस्क को लिखा जाता है।

ध्यान रखें कि LUKS को RAID के बारे में जानकारी नहीं है। यह केवल यह जानता है कि यह एक ब्लॉक डिवाइस के शीर्ष पर बैठा है। यदि आप RAID युक्ति बनाने के लिए mdadm का उपयोग करते हैं और फिर luksformatयह, यह mdadm है जो अंतर्निहित डेटा को एन्क्रिप्टेड डेटा को दोहरा रहा है, न कि LUKS।

एलयूकेएस एफएक्यू के प्रश्न 2.8 यह बताता है कि एन्क्रिप्शन को RAID के शीर्ष पर होना चाहिए या अन्य तरीके से । यह निम्नलिखित आरेख प्रदान करता है।

Filesystem     <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks      <- bottom

क्योंकि ZFS RAID और फाइलसिस्टम कार्यक्षमता को जोड़ती है, इसलिए आपके समाधान को निम्नलिखित की तरह देखना होगा।

RAID-Z and ZFS Filesystem  <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks                  <- bottom

मैंने कच्चे विभाजन को वैकल्पिक के रूप में सूचीबद्ध किया है क्योंकि ZFS को उम्मीद है कि यह विभाजन के बजाय कच्चे ब्लॉक भंडारण का उपयोग करेगा। जब आप विभाजन का उपयोग करके अपनी ज़ूलू बना सकते हैं, तो इसकी अनुशंसा नहीं की जाती है क्योंकि यह प्रबंधन के एक बेकार स्तर को जोड़ देगा, और विभाजन खंड के संरेखण के लिए आपकी ऑफसेट क्या होगी, इसकी गणना करते समय इसे ध्यान में रखना होगा।

क्या यह लिखने के प्रदर्शन को बाधित नहीं करेगा? [...] मेरा सीपीयू इंटेल एईएस-एनआई का समर्थन करता है।

जब तक आप अपने AES-NI ड्राइवर द्वारा समर्थित एन्क्रिप्शन विधि का चयन करते हैं, तब तक कोई प्रदर्शन समस्या नहीं होनी चाहिए। यदि आपके पास क्रायसिपेटअप 1.6.0 या नया है तो आप चला सकते हैं cryptsetup benchmarkऔर देख सकते हैं कि कौन सा एल्गोरिथ्म सबसे अच्छा प्रदर्शन प्रदान करेगा।

एलयूकेएस के लिए अनुशंसित विकल्पों पर यह प्रश्न भी मूल्य का हो सकता है।

यह देखते हुए कि आपके पास हार्डवेयर एन्क्रिप्शन समर्थन है, आप विभाजन मिसलिग्न्मेंट के कारण प्रदर्शन के मुद्दों का सामना करने की अधिक संभावना रखते हैं।

लिनक्स पर ZFS ने आपकी हार्ड ड्राइव के लिए सेक्टर आकार निर्दिष्ट करने की अनुमति देने के लिए संपत्ति को कमांड में जोड़ा हैashiftzfs । लिंक्ड एफएक्यू के अनुसार, ashift=12यह बताएगा कि आप 4K ब्लॉक आकार के साथ ड्राइव का उपयोग कर रहे हैं।

LUKS FAQ बताता है कि LUKS विभाजन में 1 MB का संरेखण है। प्रश्न 6.12 और 6.13 इस पर विस्तार से चर्चा करते हैं और यह भी सलाह देते हैं कि एलयूकेएस विभाजन हेडर को बड़ा कैसे बनाया जाए। हालाँकि, मुझे यकीन नहीं है कि यह सुनिश्चित करना संभव है कि यह सुनिश्चित हो सके कि आपका ZFS फाइल सिस्टम 4K सीमा पर बनाया जाएगा। मुझे यह सुनने में दिलचस्पी होगी कि यह आपके लिए कैसे काम करता है यदि यह एक समस्या है जिसे आपको हल करने की आवश्यकता है। चूंकि आप 2TB ड्राइव का उपयोग कर रहे हैं, आप इस समस्या का सामना नहीं कर सकते।

क्या ZFS डिस्क-विफलताओं के बारे में पता होगा जब डिवाइस-मैपर LUKS कंटेनरों पर काम करते हुए भौतिक उपकरणों के विपरीत होता है?

ZFS डिस्क विफलताओं से अवगत हो जाएगा क्योंकि यह समस्याओं के बिना उन्हें पढ़ और लिख सकता है। ZFS को ब्लॉक स्टोरेज की आवश्यकता होती है और वह उस स्टोरेज की बारीकियों के बारे में परवाह नहीं करता है या नहीं जानता है और यह कहां से आता है। यह केवल किसी भी पढ़ने, लिखने या चेकसम त्रुटियों का ट्रैक रखता है जो इसका सामना करता है। अंतर्निहित भंडारण उपकरणों के स्वास्थ्य की निगरानी करना आपके ऊपर है।

ZFS प्रलेखन में समस्या निवारण पर एक खंड है जो पढ़ने योग्य है। क्षतिग्रस्त डिवाइस को बदलने या मरम्मत करने पर अनुभाग बताता है कि विफलता परिदृश्य के दौरान आपको क्या सामना करना पड़ सकता है और आप इसे कैसे हल कर सकते हैं। आप यहाँ वही काम करेंगे जो आप उन उपकरणों के लिए करेंगे जिनमें ZFS नहीं है। अपने SCSI ड्राइवर, HBA या HD नियंत्रक और / या SMART निगरानी सॉफ़्टवेयर के संदेशों के लिए syslog की जाँच करें और फिर उसके अनुसार कार्य करें।

समर्पण और अन्य ZFS सुविधाओं के बारे में कैसे?

ZFS के सभी फीचर्स समान रूप से काम करेंगे चाहे अंतर्निहित ब्लॉक स्टोरेज एन्क्रिप्टेड हो या नहीं।

सारांश

  1. एलयूकेएस-एन्क्रिप्टेड डिवाइस पर जेडएफएस अच्छी तरह से काम करता है।
  2. यदि आपके पास हार्डवेयर एन्क्रिप्शन है, तो जब तक आप अपने हार्डवेयर द्वारा समर्थित एन्क्रिप्शन पद्धति का उपयोग नहीं करते, तब तक आपको कोई प्रदर्शन हिट नहीं होगा। cryptsetup benchmarkयह देखने के लिए उपयोग करें कि आपके हार्डवेयर पर सबसे अच्छा काम क्या होगा।
  3. जेडएफएस के बारे में सोचें RAID और फाइलसिस्टम एक एकल इकाई में संयुक्त। ऊपर ASCII आरेख देखें, जहां यह स्टोरेज स्टैक में फिट बैठता है।
  4. आपको प्रत्येक LUKS- एन्क्रिप्टेड ब्लॉक डिवाइस को अनलॉक करने की आवश्यकता होगी जो ZFS फाइल सिस्टम का उपयोग करता है।
  5. भंडारण हार्डवेयर के स्वास्थ्य की निगरानी उसी तरह से करें जैसे आप अभी करते हैं।
  6. यदि आप 4K ब्लॉक्स के साथ ड्राइव का उपयोग कर रहे हैं, तो फाइलसिस्टम के ब्लॉक अलाइनमेंट से सावधान रहें। स्वीकार्य गति के लिए आवश्यक संरेखण प्राप्त करने के लिए आपको लुक्सफॉर्मैट विकल्पों या अन्य सेटिंग्स के साथ प्रयोग करने की आवश्यकता हो सकती है।

3
+1 उदाहरणों के साथ इस काम को करने का तरीका खोजने के लिए ।
इविविट

1
1 MiB पहले से ही 4KiB द्वारा समान रूप से विभाज्य है, इसलिए आपको एशफ्ट = 20 तक सभी तरीकों से सही ढंग से संरेखित किया जाना चाहिए (जो मुझे नहीं लगता कि मेरे कैरियर के भीतर आवश्यक होगा) बशर्ते आपने कच्चे डिस्क का उपयोग किया हो।
माइकल हैम्पटन

1
बस एक और बात: मैं आपके जवाब को वोट कर रहा हूं क्योंकि यह वही है जो ओपी को उम्मीद थी, और अच्छी तरह से लिखा गया है, इसलिए यह मेरा जवाब देने से बेहतर है।
विनियस फेरो

3
@ ViníciusFerrão: यह भी ध्यान रखें कि FreeBSD और FreeNAS ZFS एन्क्रिप्शन के लिए एक समान दृष्टिकोण का उपयोग कर रहे हैं। geliएक एन्क्रिप्टेड डिवाइस बनाने के लिए उपयोग किया जाता है और सादा डेटा एक दूसरे डिवाइस के माध्यम से उपलब्ध कराया जाता है जिसे ZFS उपयोग करता है। दूसरी गोली बिंदु doc.freenas.org/index.php/Volumes#Enc एन्क्रिप्शन पर देखें
स्टारफिश

2
@CMCDragonkai चूंकि L2ARC और SLOG दोनों डिवाइस में आपके पूल से डेटा के टुकड़े और टुकड़े होते हैं, अगर आप गोपनीयता प्रदान करने के लिए भंडारण को एन्क्रिप्ट कर रहे हैं (जो अक्सर पहली जगह में एन्क्रिप्टेड स्टोरेज का उपयोग करने की बात है, तो आप लगभग निश्चित रूप से चाहते हैं। किसी भी L2ARC और SLOG डिवाइस को समान रूप से एन्क्रिप्ट किया गया चलाएं।
बजे एक CVn

2

एक वैकल्पिक कार्यान्वयन एक ZVOL ब्लॉक डिवाइस ( http://zfsonlinux.org/example-zvol.html ) बनाने के लिए है, नए बनाए गए ZVOL को एन्क्रिप्ट करने के लिए LUKS का उपयोग करें और फिर एन्क्रिप्टेड ब्लॉक के शीर्ष पर एक ext4 (या अन्य) फाइलसिस्टम बनाएं। डिवाइस।

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