วิธีติดตั้งเซิร์ฟเวอร์ Ubuntu ด้วย UEFI และ RAID1 + LVM


15

ฉันเคยติดตั้งเซิร์ฟเวอร์ด้วย LVM ผ่านซอฟต์แวร์ RAID1 และติดตั้งด้วงบน MBR ของไดรฟ์ทั้งสอง ตอนนี้ฉันมีเซิร์ฟเวอร์ UEFI แล้วและโหมดความเข้ากันได้ (BIOS) ไม่ทำงาน

ดังนั้นฉันจึงไปติดตั้งกับ UEFI

การทดสอบครั้งแรกการติดตั้งไดรฟ์เดียวทำงานได้ดี

จากนั้นฉันพยายามติดตั้งด้วย RAID1 + LVM ฉันแบ่งส่วนไดรฟ์ของฉันด้วยวิธีเดียวกัน:

  • พาร์ติชันระบบ EFI 200MB
  • พาร์ติชัน RAID แบบฟิสิคัล

จากนั้นฉันตั้งค่า: - RAID 1 ที่ใช้ทั้งสองพาร์ติชัน RAID - กลุ่มวอลุ่ม LVM ในอาร์เรย์ RAID 1 - สามโลจิคัลวอลุ่ม: /, / home และ swap

การติดตั้งดำเนินต่อไป แต่เมื่อรีบูตเครื่องฉันจะได้รับเชลล์ด้วงและฉันติดขัด

ดังนั้นเป็นไปได้หรือไม่ที่จะให้ grub2-efi ทำงานบน LVM บน RAID1? วิธีที่จะบรรลุสิ่งนี้คืออะไร? มีทางเลือกอื่น bootloader (โหลดโดยตรงลินุกซ์จาก EFI?) ฯลฯ ...

คำตอบ:


11

ตกลงฉันพบวิธีแก้ปัญหาและสามารถตอบคำถามของฉันเอง

1) ฉันสามารถใช้ LVM บน RAID1 บนเครื่อง UEFI ได้หรือไม่

ได้แน่นอน. และจะสามารถบู๊ตได้แม้ว่าหนึ่งในสองดิสก์นั้นจะล้มเหลว

2) วิธีการทำเช่นนี้?

ดูเหมือนจะเป็นข้อผิดพลาดในตัวติดตั้งดังนั้นเพียงแค่ใช้ตัวติดตั้งส่งผลให้เกิดความล้มเหลวในการบูต (ด้วงเชลล์)

นี่คือขั้นตอนการทำงาน:

1) สร้างพาร์ติชันต่อไปนี้ด้วยตนเองในแต่ละดิสก์ทั้งสอง: - พาร์ติชัน 512MB ที่มีประเภท UEFI จุดเริ่มต้นของดิสก์ - พาร์ติชันของ RAID ชนิดหลังจากนั้น

2) สร้างอาร์เรย์ RAID 1 ของคุณด้วยสอง RAID พาร์ติชันจากนั้นสร้างกลุ่มวอลุ่ม LVM ของคุณด้วยอาร์เรย์นั้นและโลจิคัลวอลุ่มของคุณ (ฉันสร้างหนึ่งสำหรับรูทหนึ่งสำหรับบ้านและอีกหนึ่งสำหรับแลกเปลี่ยน)

3) ปล่อยให้การติดตั้งดำเนินต่อไปและรีบูต ความล้มเหลว! คุณควรได้รับด้วง

4) อาจเป็นไปได้ในการบูตจากด้วงเชลล์ แต่ฉันเลือกที่จะบูตจากดิสก์ usb กู้ภัย ในโหมดช่วยเหลือฉันเปิดเชลล์บนรูตเป้าหมาย fs ของฉัน (นั่นคือหนึ่งในโลจิคัลวอลุ่ม root lvm)

5) รับ UUID ของพาร์ติชั่นรูทเป้าหมายด้วย 'blkid' จดหรือถ่ายภาพด้วยโทรศัพท์ของคุณคุณจะต้องใช้ในขั้นตอนต่อไป

6) ติดตั้งพาร์ติชันระบบ EFI ('mount / boot / efi') และแก้ไขไฟล์ grub.cfg: vi /boot/efi/EFI/EFI/ubuntu/grub.cfg ที่นี่แทนที่ UUID ที่ผิดพลาดด้วยจุดที่คุณได้รับ ณ จุด 5. บันทึก

7) เพื่อให้สามารถบูตจากดิสก์ที่สองให้คัดลอกพาร์ติชัน EFI ไปยังดิสก์ที่สองนี้: dd if = / dev / sda1 ของ = / dev / sdb1 (เปลี่ยน sda หรือ sdb ด้วยสิ่งที่เหมาะสมกับการกำหนดค่าของคุณ)

8) รีบูต ในหน้าจอการตั้งค่า UEFI ของคุณให้ตั้งค่าพาร์ติชัน EFI สองตัวให้สามารถบู๊ตได้และตั้งค่าลำดับการบู๊ต

คุณทำเสร็จแล้ว คุณสามารถทดสอบถอดปลั๊กหนึ่งหรือดิสก์อื่นมันควรจะทำงาน!


ขอบคุณสำหรับขั้นตอนอย่างละเอียด คุณช่วยระบุ Boot-Info ของคุณได้ไหม? ( help.ubuntu.com/community/Boot-Info )
LovinBuntu

@LovinBuntu นี่คือผลลัพธ์ของ Boot-Info เริ่มจากคีย์ usb: paste.ubuntu.com/6223137
alci

ฉันล้มเหลว แต่ไม่สามารถหาด้วงได้
Peter Lawrey

4
ฉันเพิ่งเสียเวลาไปสองสามวันในการพยายามทำตามขั้นตอนที่คล้ายกันส่วนใหญ่เป็นเพราะฉันโง่ แต่ในกรณีนี้จะช่วยให้คนอื่นหลีกเลี่ยงปัญหาเดียวกันฉันจะพูดถึงว่าคุณต้องแน่ใจว่าได้บูต ใช้ USB แบบสดโดยใช้ UEFIแทน BIOS รุ่นเก่า (เมกะไบต์ของฉันในการตั้งค่า 'อัตโนมัติ' ต้องการบูตในโหมดดั้งเดิมฉันต้องปิด - หรือเลือกบูตตัวเลือก EFI ด้วยตนเอง - เพื่อให้การติดตั้งใช้งานได้)
Jonathan Y.

1
การใช้ Ubuntu 16.04.1 ดูเหมือนว่าจะไม่มีปัญหาอีกต่อไป ฉันตั้งค่าพาร์ติชัน EFI ขนาด 512MB, SWAP และส่วนหนึ่งของ RAID 490GB สำหรับ RAID1 และบนอุปกรณ์ md ใหม่ที่ฉันติดตั้งเซิร์ฟเวอร์ Ubuntu 16.04 อย่างสมบูรณ์โดยไม่มีปัญหา หลังจากรีบูตเครื่องมันก็เริ่มระบบใหม่ไร้ที่ติไม่จำเป็นต้องยุ่งกับพาร์ติชัน EFI, fstab เป็นต้น
nerdoc

4

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

1) สร้างพาร์ติชัน efi 128MB ในตอนเริ่มต้น (หนึ่งในนั้นจะเมาท์ที่ / boot / efi)

2) สร้างอาร์เรย์ RAID1 1 GB / boot ไม่มี LVM

3) สร้างอาร์เรย์ RAID1 ขนาดใหญ่โดยใช้ LVM

การมี / boot อยู่ในพาร์ติชั่น / RAID1 แยกต่างหากจะช่วยแก้ปัญหาของพาร์ติชัน efi ที่ไม่สามารถหาสิ่งที่เหมาะสมได้

และสำหรับผู้ที่ต้องการรายละเอียดเพิ่มเติมอย่างที่ฉันเป็นในเวลานี่คือสิ่งที่แม่นยำยิ่งขึ้นว่าฉันได้ตั้งค่าของฉันอย่างไร:

6x 3TB Drives

Have 4 RAID arrays:
/dev/md0 = 1GB RAID1 across 3 drives
   --> /boot (no LVM)
/dev/md1 = 500GB RAID1 across 3 drives
   LVM:
      --> /     =  40GB
      --> /var  = 100GB
      --> /home = 335GB
      --> /tmp  =  10GB

/dev/md2 = 500GB RAID1 across 3 drives (for VM's/linux containers)
   LVM:
      --> /lxc/container1 =  50GB
      --> /lxc/container2 =  50GB
      --> /lxc/container3 =  50GB
      --> /lxc/container4 =  50GB
      --> /lxc/extra      = 300GB (for more LXC's later)

/dev/md3 = 10TB RAID6 across 6 drives (for media and such)
   --> /mnt/raid6 (no LVM)


Disks are setup thus:

/sda => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB)
/sdb => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB)
/sdc => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB)
/sdd => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB)
/sde => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB)
/sdf => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB)

หมายเหตุหนึ่งใน / boot / efi เท่านั้นที่จะเมานต์จริงและสองที่สองคือโคลน ฉันทำสิ่งนี้เพราะฉันอยากจะให้เครื่องยังสามารถบู๊ตได้เมื่อสูญเสียหนึ่งในสามดิสก์ใน RAID1 ฉันไม่รังเกียจที่จะทำงานในโหมดที่เสื่อมโทรมถ้าฉันยังมีความซ้ำซ้อนเต็มและให้เวลาฉันในการเปลี่ยนไดรฟ์ในขณะที่เครื่องยังทำงานอยู่

นอกจากนี้ถ้าฉันไม่ได้มีอาร์เรย์ RAID1 ที่สองสำหรับการวางคอนเทนเนอร์ LXC และโดยทั่วไปฐานข้อมูลทั้งหมดและ / var จะต้องมีขนาดใหญ่กว่ามาก การมีแต่ละ LXC เป็นโลจิคัลวอลุ่มของตัวเองนั้นเป็นวิธีที่ดีในการป้องกัน VM / เว็บไซต์หนึ่งจากการรบกวนอื่น ๆ เนื่องจากบันทึกข้อผิดพลาดนอกการควบคุมตัวอย่างเช่น ...

และสิ่งสุดท้ายที่ฉันติดตั้งจาก Ubuntu Alternate Install USB ด้วย 12.04.01 (ก่อน 12.04.02 ออกมา) และทุกอย่างทำงานค่อนข้างดี หลังจากต่อสู้กับมัน 72 ชั่วโมง

หวังว่าจะช่วยใครซักคน!


1
grub2 จัดการการบูต lvm บน md โดยตรงโดยไม่ต้องมีพาร์ติชั่น / boot เพียงแค่ปรับและมีสองสามปีเป็นอย่างน้อย
psusi

@psusi ฉันหวังว่าคุณพูดถูกการติดตั้งใหม่ของฉันจะไม่บู๊ตจากดิสก์ตัวที่สองด้วยตัวเอง LVM ทั้งหมดไม่เหมือนการตั้งค่าของ jhaagsma
sjas

2

ฉันมี probem เดียวกัน efi boot พร้อมดิสก์สองตัวและซอฟต์แวร์ raid

/ dev / SDA

  • / dev / sda1 - พาร์ติชัน efi 200MB
  • / dev / sda2 - ทางกายภาพ 20G สำหรับการโจมตี
  • / dev / sda3 - ทางกายภาพ 980G สำหรับการโจมตี

dev / sdb /

  • / dev / sdb1 - พาร์ติชัน efi 200MB
  • / dev / sdb2 - ทางกายภาพ 20G สำหรับการโจมตี
  • / dev / sdb3 - ทางกายภาพ 980G สำหรับการโจมตี

สลับไปที่ / dev / md0 (sda2 & sdb2) รูต on / dev / md1 (sda3 & sdb3)

หากคุณป้อนเชลล์ด้วงช่วยเหลือให้บูตโดยใช้:

set root=(md/1)
linux /boot/vmlinuz-3.8.0-29-generic root=/dev/md1
initrd /boot/initrd.img-3.8.0-29-generic
boot

หลังจากนั้นให้ดาวน์โหลดไฟล์ปะนี้ - https://launchpadlibrarian.net/151342031/grub-install.diff (ตามที่อธิบายไว้ในhttps://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1229738 )

cp /usr/sbi/grub-install /usr/sbi/grub-install.backup
patch /usr/sbin/grub-install patch
mount /dev/sda1 /boot/efi
grub-install /dev/sda1
umount /dev/sda1
mount /dev/sdb1 /boot/efi
grub-install /dev/sdb1
reboot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.