สุดยอดคำสั่งของ RAID, LVM และ LUKS


13

ฉันจะติดตั้งไฟล์เซิร์ฟเวอร์ด้วย Debian GNU / Linux 8

ฉันต้องการมีซอฟต์แวร์ RAID-1 ที่ใช้ mdadm รวมถึงดิสก์ที่เข้ารหัสโดยใช้ LUKS ฉันยังชอบความยืดหยุ่นของการมี LVM

มีวิธีต่าง ๆ ในการทำเช่นนี้ วิธีหนึ่งคือ: ตั้งค่า RAID-1 โดยใช้ mdadm ก่อน จากนั้นตั้งค่า LVM PVs ให้ครอบคลุม / dev / mdX ที่สร้างขึ้น จากนั้นตั้งค่า LVs และเข้ารหัสโดยใช้ LUKS จากนั้นจัดรูปแบบสิ่งเหล่านี้ด้วยระบบไฟล์พูด ext4 ผลลัพธ์นี้ในเลย์เอาต์เช่นนี้:

RAID --> LVM --> LUKS --> ext4

หรือฉันสามารถทำได้ในลำดับอื่น:

RAID --> LUKS --> LVM --> ext4

หรือแม้กระทั่ง:

LVM --> RAID --> LUKS --> ext4

และอาจเป็นคำสั่งที่แตกต่างออกไปโดยสิ้นเชิง

อะไรคือข้อดีและข้อเสียของวิธีการต่าง ๆ อะไรคือประสิทธิภาพที่ดีที่สุดความปลอดภัยการบำรุงรักษา ฯลฯ

มี "วิธีที่ดีที่สุด" ในการทำเช่นนี้?

คำตอบ:


18

อันดับแรกลำดับของ LUKS และ LVM ขึ้นอยู่กับว่าคุณต้องการมีรหัสผ่าน LUKS ที่แตกต่างกันหรือการตั้งค่าอื่นสำหรับ LVs ที่แตกต่างกัน หากกล่าวว่าคุณต้องตั้งค่ารหัสผ่านที่แตกต่างกันสำหรับ LVs ที่แตกต่างกันแน่นอนคุณต้องใส่ LUKS ไว้ด้านบนของ LVM ในทางกลับกันถ้า LVs ทั้งหมดใช้รหัสผ่านและการตั้งค่าเดียวกันเช่น keylen คุณจะต้องมี LUKS ต่ำกว่า LVM เพื่อที่คุณจะได้ไม่ต้องจัดการกับค่าใช้จ่ายในการมีพาร์ติชัน LUKS มากกว่าหนึ่ง (คิดว่าสิ่งที่คุณ จะต้องทำเมื่อคุณต้องการเปลี่ยนรหัสผ่าน)

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

ดังนั้นเนื่องจากในกรณีส่วนใหญ่ผู้คนเพียงแค่ต้องใช้รหัสผ่านเดียวสิ่งนี้ก็เพียงพอแล้ว:

RAID -> LUKS -> LVM -> ext4

ในบางกรณีคุณอาจต้องใช้ LVM เพื่อรวมอุปกรณ์ RAID หลายตัวไว้ในไดรฟ์ข้อมูลขนาดใหญ่จากนั้นคุณสามารถทำได้:

RAID -> LVM -> LUKS (-> LVM) -> ext4

ในทางทฤษฎีแล้วคำสั่งไม่ควรส่งผลกระทบต่อประสิทธิภาพมากนักหากทุกเลเยอร์ตั้งค่าอย่างถูกต้องและในทางปฏิบัติฉันไม่ได้เห็นการตั้งค่านี้มีประสิทธิภาพที่แย่เป็นพิเศษ สิ่งที่สำคัญที่สุดคือการจัดตำแหน่ง:

  1. ตรวจสอบให้แน่ใจว่าพาร์ทิชันของคุณอยู่ในแนวเดียวกับ 1MB (สำคัญมากสำหรับ SSD);
  2. สำหรับเลเยอร์ RAID เลือกขนาดอันชาญฉลาด
  3. สำหรับ LVM ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า--dataalignmentให้ตรงกับขนาดของก้อน RAID ( ซึ่งอาจเป็นประโยชน์)

นอกจากนี้หากใน SSD ให้แน่ใจว่าคุณเปิดใช้งาน LUKS TRIM / ยกเลิกการส่งผ่านโดยการเพิ่มrd.luks.options=discardการ/etc/default/grubและdiscardการ/etc/crypttab(เหล่านี้เป็นสิ่งที่ผมทำใน Red Hat / Fedora Linux. อาจจะแตกต่างกันเล็กน้อยใน Debian.) LVM และ RAID ควรสนับสนุนโดยอัตโนมัติทิ้ง ถ้าคุณใช้เคอร์เนล-ish ใหม่

แน่นอนว่านี่เป็นเพียงแนวทางทั่วไป หากคุณมีความต้องการพิเศษอย่าลังเลที่จะอัปเดตคำถามหรือความคิดเห็นของคุณที่นี่


ขอบคุณสำหรับการตอบกลับอย่างรวดเร็ว คะแนนดีมาก! คุณสามารถแสดงความคิดเห็นเกี่ยวกับความแตกต่างด้านประสิทธิภาพได้หรือไม่หากไม่ใช่เรื่องเล็กน้อย?
โทมัส

อัปเดตด้วยบันทึกประสิทธิภาพบางอย่าง
Yan Li

1
ควรชี้ให้เห็นว่าคุณไม่จำเป็นต้องใช้ MDADM เสมอไป (แม้ว่าฉันคาดหวังว่านี่จะเป็นวิธีการแก้ปัญหาทั่วไปที่สุด) - LVM เสนอ RAID (aka mirroring)
davidgo

@davidgo ใช่ ฉันคิดว่าจะพูดถึงเรื่องนั้นเหมือนกัน แต่ก็ไม่ได้ทำเพราะฉันไม่แน่ใจว่าเป็นวิธีที่ถูกต้องหรือไม่ ฉันไม่ได้ลองเป็นการส่วนตัว (ส่วนใหญ่ฉันใช้ RAID ระดับสูงกว่าเช่น 5 หรือ 6) และได้อ่านข้อเสนอแนะที่หลากหลายเกี่ยวกับการมิร์เรอร์ LVM เช่นคำตอบบางคำถามในคำถามนี้
Yan Li

@ Yan ฉันเห็นด้วย ฉันมักจะใช้ mdadm RAid (1)
davidgo

4

หากคุณต้องการให้ทุก RAID, LUKS และ LVM RAID -> LUKS -> LVM -> FSฉันจะแนะนำ RAID --> LVM --> LUKS --> LVM --> FSไม่ดีไปกว่าRAID -> LUKS -> LVM- หากต้องการขยายวอลุ่มเพียงแค่เพิ่มRAID -> LUKSอุปกรณ์ลงในกลุ่มวอลุ่ม

RAID --> LVM --> LUKS --> FS - การเข้ารหัสโลจิคัลวอลุ่มเฉพาะนั้นมีคุณสมบัติที่ไม่เข้ารหัสทุกอย่างตามค่าเริ่มต้น (อาจถูกมองว่าเป็นข้อดีหรือข้อเสีย) แต่มันจะทำให้การขยายรูท FS ง่ายขึ้น

การขยาย LUKS ด้านบนของโลจิคัลวอลุ่มเป็นแหล่งที่มาของปัญหาทั่วไปเมื่อผู้ใช้ขยาย / ปรับขนาดในลำดับที่ไม่ถูกต้อง การมี LUKS บนอุปกรณ์ md RAID ทั้งหมดจะทำให้การปรับขนาดทำได้ง่ายขึ้น - เพิ่มอุปกรณ์ md ใหม่สร้าง LUKS ที่ด้านบนเพิ่มอุปกรณ์ลงใน/ etc / crypttab (อย่างน้อยในโคลน Fedora และ RHEL) และขยายกลุ่มวอลุ่มของคุณ หากรูท FS อยู่ในกลุ่มวอลุ่มคุณจะต้องเพิ่มrd.luks.uuidรายการอื่นในเคอร์เนล cmdline (แก้ไข/ etc / default / grubและสร้าง grub.cfg ใหม่)

LUKS -> RAIDมักจะผิด - ข้อมูลจะถูกเข้ารหัสหลายครั้งใช้เวลามากขึ้นโดยไม่ได้รับ CPU นอกจากนี้ยังมีโอกาสที่จะแทนที่ดิสก์ที่ล้มเหลวด้วยดิสก์ใหม่โดยไม่ตั้งใจตั้งค่า LUKS เมื่อดิสก์ล้มเหลว

การยืดและหด:

เมื่อขยายออกไปเสมอจากด้านล่างของสแต็คเมื่อหดตัวจากด้านบน

ตัวอย่าง:

การขยาย RAID -> LVM -> LUKS -> FS (สองขั้นตอนแรกเป็นทางเลือกถ้ามีพื้นที่ว่างเพียงพอในกลุ่มวอลุ่ม):

  1. เพิ่มดิสก์ใหม่และสร้าง md RAID
  2. เพิ่มอุปกรณ์ mdX ในกลุ่มวอลุ่ม
  3. ขยายโลจิคัลวอลุ่ม
  4. ขยายอุปกรณ์ LUKS
  5. ขยาย FS

หดตัว RAID -> LVM -> LUKS -> FS :

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