การเข้ารหัส ZFS RAID และ LUKS ใน Linux


24

ฉันวางแผนที่จะตั้งค่าไดรฟ์ 3x 2TB 7200 รอบต่อนาทีเป็นพูล Z-RAID ที่เข้ารหัสโดย LUKS ใน Linux (สำหรับโซลูชัน NAS)

ความเข้าใจของฉันเกี่ยวกับปัญหาในมือคือวิธีเดียวที่จะบรรลุเป้าหมายนี้ได้คือluksFormatอุปกรณ์ทางกายภาพทุกชิ้น

ฉันมีความกังวลต่อไปนี้:

  • จะไม่เป็นอุปสรรคต่อประสิทธิภาพการเขียนหรือไม่ ในการตั้งค่าข้อมูลที่ซ้ำซ้อนนี้ถูกเข้ารหัสหลายครั้งเนื่องจาก LUKS ไม่ได้ "รับรู้" ของ Z-RAID ในข้อมูลโซลูชัน LUKS-on-mdadm ถูกเข้ารหัสหนึ่งครั้งและเขียนลงดิสก์หลายครั้งเท่านั้น CPU ของฉันรองรับ Intel AES-NI

  • ZFS จะตระหนักถึงความล้มเหลวของดิสก์หรือไม่เมื่อทำงานบนอุปกรณ์ -mapper LUKS container ซึ่งแตกต่างจากอุปกรณ์ฟิสิคัล? การขจัดข้อมูลซ้ำซ้อนและคุณสมบัติ ZFS อื่น ๆ


4
ฉันจะไม่ทำมัน ฟังดูล้มเหลว
ewwhite

3
@ MadHatter เพราะเป็น ZFS คุณทำอย่างนั้นไม่ได้
Michael Hampton

1
สบายดี (ฉันจะเอาคำของคุณไป) ทำให้ ZFS เดียวขนาดใหญ่ที่มีไฟล์ขนาดใหญ่เดียวย้อนกลับติดมันและการเข้ารหัสที่
MadHatter สนับสนุนโมนิก้า

1
@eewhite ฉันแค่ค้นหาตัวเลือกสำหรับการใช้การเข้ารหัสด้วย ZFS บน Linux จนกว่าโมดูลเคอร์เนล ZFS จะทำการเข้ารหัสด้วยตนเอง แต่ฉันต้องยอมรับ - LUKS และ ZFS ดูเหมือนจะไม่เข้ากัน
MasterM

4
ไม่เคยสร้างไฟล์ขนาดใหญ่และย้อนกลับด้วย ZFS คุณหมดแรงไปกับความเร็วที่ไม่สามารถใช้งานได้เมื่อ CoW ไม่มีพื้นที่สำหรับการดำเนินการ
ViníciusFerrão

คำตอบ:


27

หนึ่งในเซิร์ฟเวอร์ที่ฉันดูแลจัดการรันประเภทของการกำหนดค่าที่คุณอธิบาย มันมีฮาร์ดไดรฟ์ 1TB หกตัวพร้อมกับพูล RAIDZ ที่เข้ารหัสของ LUKS ฉันยังมีฮาร์ดไดรฟ์ 3TB สองตัวในมิเรอร์ ZFS ที่เข้ารหัส LUKS ซึ่งเปลี่ยนไปทุกสัปดาห์เพื่อนำออกนอกสถานที่ เซิร์ฟเวอร์ใช้การกำหนดค่านี้เป็นเวลาประมาณสามปีและฉันไม่เคยมีปัญหากับมัน

หากคุณมีความต้องการ ZFS พร้อมการเข้ารหัสบน Linux ฉันขอแนะนำการตั้งค่านี้ ฉันใช้ ZFS-Fuse ไม่ใช่ ZFS บน Linux อย่างไรก็ตามฉันเชื่อว่าจะไม่มีผลต่อผลลัพธ์อื่นนอกจาก ZFS บน Linux อาจจะมีประสิทธิภาพที่ดีกว่าการตั้งค่าที่ฉันใช้อยู่

ในการตั้งค่าข้อมูลที่ซ้ำซ้อนนี้ถูกเข้ารหัสหลายครั้งเนื่องจาก LUKS ไม่ได้ "รับรู้" ของ Z-RAID ในข้อมูลโซลูชัน LUKS-on-mdadm ถูกเข้ารหัสหนึ่งครั้งและเขียนลงดิสก์หลายครั้งเท่านั้น

โปรดทราบว่า LUKS ไม่ได้ตระหนักถึง RAID รู้แค่ว่ามันนั่งอยู่ด้านบนของอุปกรณ์บล็อกเท่านั้น หากคุณใช้ mdadm เพื่อสร้างอุปกรณ์ RAID จากนั้นluksformatจะเป็น mdadm ที่จำลองข้อมูลที่เข้ารหัสไปยังอุปกรณ์จัดเก็บข้อมูลพื้นฐานไม่ใช่ LUKS

คำถามที่ 2.8 ของ LUKS คำถามที่พบบ่อยอยู่ไม่ว่าจะเป็นการเข้ารหัสควรจะอยู่ด้านบนของ 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

ฉันได้แสดงรายการพาร์ติชัน raw เป็นทางเลือกเนื่องจาก ZFS คาดว่าจะใช้ที่เก็บข้อมูลดิบบล็อกมากกว่าพาร์ติชัน ในขณะที่คุณสามารถสร้าง zpool ของคุณโดยใช้พาร์ติชั่นก็ไม่แนะนำเพราะมันจะเพิ่มระดับการจัดการที่ไร้ประโยชน์และจะต้องนำมาพิจารณาเมื่อคำนวณสิ่งที่ออฟเซ็ตของคุณจะใช้สำหรับการจัดแนวบล็อกพาร์ติชัน

จะไม่เป็นอุปสรรคต่อประสิทธิภาพการเขียนหรือไม่ [... ] CPU ของฉันรองรับ Intel AES-NI

ไม่ควรมีปัญหาด้านประสิทธิภาพตราบใดที่คุณเลือกวิธีการเข้ารหัสที่ไดรเวอร์ AES-NI ของคุณรองรับ หากคุณมี cryptsetup 1.6.0 หรือใหม่กว่าคุณสามารถเรียกใช้cryptsetup benchmarkและดูว่าอัลกอริทึมใดที่จะให้ประสิทธิภาพที่ดีที่สุด

คำถามเกี่ยวกับตัวเลือกที่แนะนำสำหรับ LUKSนี้อาจมีค่าเช่นกัน

ระบุว่าคุณมีการสนับสนุนการเข้ารหัสฮาร์ดแวร์คุณมีแนวโน้มที่จะประสบปัญหาประสิทธิภาพการทำงานเนื่องจากการจัดแนวที่ไม่เหมาะสมของพาร์ติชัน

ZFS บน Linux ได้เพิ่มashiftคุณสมบัติให้กับzfsคำสั่งเพื่อให้คุณระบุขนาดเซกเตอร์สำหรับฮาร์ดไดรฟ์ของคุณ ตามคำถามที่พบบ่อยที่เชื่อมโยงashift=12จะบอกได้ว่าคุณกำลังใช้ไดรฟ์ที่มีขนาดบล็อก 4K

LUKS FAQ ระบุว่าพาร์ติชัน LUKS มีการจัดตำแหน่ง 1 MB คำถามที่ 6.12 และ 6.13พูดถึงเรื่องนี้โดยละเอียดและให้คำแนะนำเกี่ยวกับวิธีการทำให้ส่วนหัวพาร์ติชัน LUKS ใหญ่ขึ้น อย่างไรก็ตามฉันไม่แน่ใจว่าเป็นไปได้ที่จะทำให้มีขนาดใหญ่พอที่จะให้แน่ใจว่าระบบไฟล์ ZFS ของคุณจะถูกสร้างขึ้นในขอบเขต 4K ฉันสนใจที่จะรับฟังว่าสิ่งนี้ได้ผลกับคุณอย่างไรหากเป็นปัญหาที่คุณต้องแก้ไข เนื่องจากคุณใช้ไดรฟ์ 2TB คุณอาจไม่ประสบปัญหานี้

ZFS จะตระหนักถึงความล้มเหลวของดิสก์หรือไม่เมื่อทำงานบนอุปกรณ์ -mapper LUKS container ซึ่งแตกต่างจากอุปกรณ์ฟิสิคัล?

ZFS จะตระหนักถึงความล้มเหลวของดิสก์ตราบเท่าที่มันสามารถอ่านและเขียนได้โดยไม่มีปัญหา ZFS ต้องการพื้นที่เก็บข้อมูลแบบบล็อกและไม่สนใจหรือรู้เกี่ยวกับข้อมูลเฉพาะของหน่วยความจำนั้นและแหล่งข้อมูลนั้นมาจากไหน มันจะติดตามข้อผิดพลาดในการอ่านเขียนหรือตรวจสอบที่เกิดขึ้นเท่านั้น มันขึ้นอยู่กับคุณที่จะตรวจสอบสุขภาพของอุปกรณ์จัดเก็บข้อมูลพื้นฐาน

เอกสารประกอบของ ZFS มีหัวข้อเกี่ยวกับการแก้ไขปัญหาซึ่งน่าอ่าน ส่วนในการเปลี่ยนหรือซ่อมแซมอุปกรณ์ที่เสียหายอธิบายถึงสิ่งที่คุณอาจพบในระหว่างสถานการณ์ความล้มเหลวและวิธีที่คุณอาจแก้ไขได้ คุณทำสิ่งเดียวกันที่นี่กับอุปกรณ์ที่ไม่มี ZFS ตรวจสอบ syslog เพื่อหาข้อความจากไดรเวอร์ SCSI, HBA หรือ HD controller ของคุณและ / หรือซอฟต์แวร์การตรวจสอบ SMART และดำเนินการตามนั้น

การขจัดข้อมูลซ้ำซ้อนและคุณสมบัติ ZFS อื่น ๆ

ฟีเจอร์ ZFS ทั้งหมดจะใช้งานได้เหมือนกันไม่ว่าที่เก็บข้อมูลบล็อกพื้นฐานจะถูกเข้ารหัสหรือไม่

สรุป

  1. ZFS บนอุปกรณ์ที่เข้ารหัสของ LUKS ทำงานได้ดี
  2. หากคุณมีการเข้ารหัสฮาร์ดแวร์คุณจะไม่เห็นประสิทธิภาพการทำงานตราบใดที่คุณใช้วิธีการเข้ารหัสที่ฮาร์ดแวร์ของคุณรองรับ ใช้cryptsetup benchmarkเพื่อดูว่าอะไรจะทำงานได้ดีที่สุดในฮาร์ดแวร์ของคุณ
  3. คิดว่า ZFS เป็น RAID และระบบไฟล์ที่รวมกันเป็นเอนทิตีเดียว ดูไดอะแกรม ASCII ด้านบนว่ามันเหมาะกับที่เก็บข้อมูลอย่างไร
  4. คุณจะต้องปลดล็อคอุปกรณ์บล็อกที่เข้ารหัส LUKS แต่ละตัวที่ระบบไฟล์ ZFS ใช้
  5. ตรวจสอบสภาพของฮาร์ดแวร์จัดเก็บข้อมูลเช่นเดียวกับที่คุณทำตอนนี้
  6. ระวังการจัดแนวบล็อกของระบบไฟล์ถ้าคุณใช้ไดรฟ์ที่มีบล็อก 4K คุณอาจต้องทดลองกับตัวเลือก luksformat หรือการตั้งค่าอื่น ๆ เพื่อรับการจัดตำแหน่งที่คุณต้องการสำหรับความเร็วที่ยอมรับได้

3
+1 สำหรับหาวิธีที่จะทำให้งานนี้มีตัวอย่าง
ewwhite

1
1 MiB สามารถแบ่งได้อย่างสม่ำเสมอโดย 4KiB ดังนั้นคุณควรจัดตำแหน่งให้ถูกต้องจนถึง ashift = 20 (ซึ่งฉันไม่คิดว่าจำเป็นสำหรับอาชีพของฉัน) หากคุณใช้ดิสก์ดิบ
Michael Hampton

1
อีกสิ่งหนึ่ง: ฉันโหวตคำตอบของคุณเพราะมันเป็นสิ่งที่ OP ต้องการและเขียนได้ดีดังนั้นมันจึงดีกว่าคำตอบของฉัน
ViníciusFerrão

3
@ ViníciusFerrão: โปรดทราบว่า FreeBSD และ FreeNAS กำลังใช้วิธีการเข้ารหัส ZFS เหมือนกัน geliใช้เพื่อสร้างอุปกรณ์ที่เข้ารหัสและข้อมูล plaintext พร้อมใช้งานผ่านอุปกรณ์ที่สองซึ่ง ZFS ใช้ ดูสัญลักษณ์ที่สองที่doc.freenas.org/index.php/Volumes#Encryption
ปลาดาว

2
@CMCDragonkai เนื่องจากอุปกรณ์ L2ARC และ SLOG มีบิตและชิ้นส่วนของข้อมูลจากกลุ่มของคุณหากคุณกำลังเข้ารหัสหน่วยเก็บข้อมูลเพื่อให้การรักษาความลับ (ซึ่งมักจะเป็นจุดที่ใช้หน่วยเก็บข้อมูลที่เข้ารหัสในตอนแรก) คุณเกือบจะต้องการแน่นอน เรียกใช้อุปกรณ์ L2ARC และ SLOG ใด ๆ ที่เข้ารหัสในทำนองเดียวกันเช่นกัน
CVn

2

อีกทางเลือกหนึ่งคือการสร้างอุปกรณ์บล็อก ZVOL ( http://zfsonlinux.org/example-zvol.html ) ใช้ LUKS เพื่อเข้ารหัส ZVOL ที่สร้างขึ้นใหม่จากนั้นสร้างระบบไฟล์ ext4 (หรืออื่น ๆ ) ที่ด้านบนของบล็อกเข้ารหัส เครื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.