Cài đặt máy tính để bàn Ubuntu 18.04 với RAID 1 và LVM trên máy với UEFI BIOS


11

Tôi có một máy với UEFI BIOS. Tôi muốn cài đặt Ubuntu 18.04, phiên bản máy tính để bàn với RAID 1 (và LVM) để hệ thống của tôi sẽ tiếp tục hoạt động ngay cả khi một trong các ổ đĩa bị lỗi. Tôi đã không tìm thấy một CÁCH làm thế nào để làm điều đó. Trình cài đặt máy tính để bàn không hỗ trợ RAID. Câu trả lời cho câu hỏi này gần như hoạt động nhưng yêu cầu một số đĩa USB / cứu hộ GRUB và phép thuật cài đặt UEFI. Có ai biết một thủ tục hoạt động mà không có các phần ma thuật?

Câu trả lời:


18

Với một số trợ giúp từ Cách cài đặt máy chủ Ubuntu với UEFI và RAID1 + LVM , RAID được thiết lập trong Ubuntu 18.04hỗ trợ RAID trong trình cài đặt Máy tính để bàn Ubuntu 18.04? Làm thế nào để thoát khỏi "quét hệ thống tập tin btrfs" khi khởi động? , Tôi đã quản lý để kết hợp một HOWTO hoạt động chỉ bằng các lệnh linux.

Nói ngắn gọn

  1. Tải về trình cài đặt máy chủ thay thế.
  2. Cài đặt với phân vùng thủ công, EFI + RAID và LVM trên phân vùng RAID.
  3. Sao chép phân vùng EFI từ phân vùng đã cài đặt sang ổ đĩa khác.
  4. Cài đặt phân vùng EFI thứ hai vào chuỗi khởi động UEFI.
  5. Để tránh phải chờ đợi lâu trong quá trình khởi động trong trường hợp ổ đĩa bị hỏng, hãy xóa các btrfstập lệnh khởi động.

Chi tiết

1. Tải xuống trình cài đặt

2. Cài đặt với phân vùng thủ công

  • Trong quá trình cài đặt, tại Partition disksbước, chọn Manual.
  • Nếu các đĩa chứa bất kỳ phân vùng, loại bỏ chúng.
    • Nếu bất kỳ khối lượng logic nào có mặt trên ổ đĩa của bạn, chọn Configure the Logical Volume Manager.
      • Chọn Delete logical volumecho đến khi tất cả các khối lượng đã bị xóa.
      • Chọn Delete volume groupcho đến khi tất cả các nhóm khối lượng đã bị xóa.
    • Nếu có bất kỳ thiết bị RAID nào, hãy chọn Configure software RAID.
      • Chọn Delete MD devicecho đến khi tất cả các thiết bị MD đã bị xóa.
    • Xóa mọi phân vùng trên các ổ đĩa vật lý bằng cách chọn chúng và chọn Delete the partition.
  • Tạo phân vùng vật lý
    • Trên mỗi ổ đĩa, tạo phân vùng 512 MB (tôi đã thấy những người khác sử dụng 128 MB) ở đầu đĩa, Sử dụng như : EFI System Partition.
    • Trên mỗi ổ đĩa, tạo phân vùng thứ hai với kích thước 'tối đa', Sử dụng làm : Physical Volume for RAID.
  • Thiết lập RAID
    • Chọn Configure software RAID.
    • Chọn Create MD device, nhập RAID1, 2 đĩa hoạt động, 0 đĩa dự phòng và chọn /dev/sda2/dev/sdb2thiết bị.
  • Thiết lập LVM
    • Chọn Configure the Logical Volume Manager.
    • Tạo nhóm âm lượng vgtrên /dev/md0thiết bị.
    • Tạo khối lượng logic, ví dụ:
      • swap lúc 16 giờ
      • root ở 35G
      • tmp lúc 10 giờ
      • var ở mức 5G
      • home ở mức 200G
  • Thiết lập cách sử dụng các phân vùng hợp lý
    • Đối với swapphân vùng, chọn Use as: swap.
    • Đối với các định dạng khác thì chọn Use as: ext4với thích hợp gắn kết điểm ( /, /tmp, /var, /home, tương ứng).
  • Chọn Finish partitioning and write changes to disk.
  • Cho phép chương trình cài đặt kết thúc và khởi động lại.

Nếu bạn đang cài đặt lại trên một ổ đĩa trước đó có cấu hình RAID, bước tạo RAID ở trên có thể thất bại và bạn không bao giờ có được một mdthiết bị. Trong trường hợp đó, bạn có thể phải tạo một thanh USB Ubuntu Live, khởi động vào đó, chạy gparted để xóa tất cả các bảng phân vùng của bạn, trước khi bạn khởi động lại HOWTO này.

3. Kiểm tra hệ thống

  • Kiểm tra phân vùng EFI nào đã được gắn. Nhiều khả năng /dev/sda1.

    gắn kết | khởi động grep

  • Kiểm tra trạng thái RAID. Nhiều khả năng nó đang đồng bộ hóa.

    mèo / Proc / mdstat

4. Phân vùng EFI

Đã khởi động EFI được tải /dev/sda1. Vì phân vùng đó không được nhân đôi qua hệ thống RAID, chúng tôi cần sao chép nó.

sudo dd if=/dev/sda1 of=/dev/sdb1

5. Chèn ổ đĩa thứ hai vào chuỗi khởi động

Bước này có thể không cần thiết, vì nếu một trong hai ổ đĩa bị chết, hệ thống sẽ khởi động từ các phân vùng EFI (giống hệt). Tuy nhiên, có vẻ thận trọng để đảm bảo rằng chúng tôi có thể khởi động từ một trong hai đĩa.

  • Chạy efibootmgr -vvà chú ý tên tập tin cho ubuntumục khởi động. Trên cài đặt của tôi, nó đã được \EFI\ubuntu\shimx64.efi.
  • Chạy đi sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi. Tùy thuộc vào vỏ của bạn, bạn có thể phải thoát khỏi dấu gạch chéo ngược.
  • Xác minh efibootmgr -vrằng bạn có cùng tên tệp cho các mục ubuntuubuntu2khởi động và chúng là hai tên đầu tiên trong thứ tự khởi động.
  • Bây giờ hệ thống sẽ khởi động ngay cả khi một trong hai ổ đĩa bị lỗi!

7. Chờ đã

Nếu bạn muốn thử gỡ bỏ hoặc vô hiệu hóa bất kỳ ổ đĩa nào để kiểm tra cài đặt của mình, trước tiên bạn phải đợi cho đến khi quá trình đồng bộ hóa RAID hoàn tất! Theo dõi tiến trình với cat /proc/mdstatTuy nhiên, bạn có thể thực hiện bước 8 bên dưới trong khi chờ đợi.

8. Xóa BTRFS

Nếu một ổ đĩa bị lỗi (sau khi đồng bộ hóa hoàn tất), hệ thống sẽ vẫn khởi động. Tuy nhiên, trình tự khởi động sẽ dành nhiều thời gian để tìm kiếm các hệ thống tệp btrfs. Để loại bỏ sự chờ đợi không cần thiết đó, hãy chạy

sudo apt-get purge btrfs-progs

Điều này sẽ loại bỏ btrfs-progs, btrfs-toolsubuntu-server. Gói cuối cùng chỉ là gói meta, vì vậy nếu không có thêm gói nào được liệt kê để xóa, bạn sẽ ổn thôi.

9. Cài đặt phiên bản máy tính để bàn

Chạy sudo apt install ubuntu-desktopđể cài đặt phiên bản máy tính để bàn. Sau đó, việc đồng bộ hóa có thể được thực hiện và hệ thống của bạn được định cấu hình và sẽ tồn tại khi xảy ra lỗi đĩa!

10. Cập nhật phân vùng EFI sau khi cập nhật grub-efi-amd64

Khi gói grub-efi-amd64được cập nhật, các tệp trên phân vùng EFI (được gắn tại /boot/efi) có thể thay đổi. Trong trường hợp đó, bản cập nhật phải được sao chép thủ công vào phân vùng gương. May mắn thay, bạn sẽ nhận được cảnh báo từ trình quản lý cập nhật grub-efi-amd64sắp được cập nhật, do đó bạn không phải kiểm tra sau mỗi lần cập nhật.

10.1 Tìm nguồn bản sao, cách nhanh chóng

Nếu bạn chưa khởi động lại sau khi cập nhật, hãy sử dụng

mount | grep boot

để tìm hiểu phân vùng EFI được gắn kết. Phân vùng đó, thông thường /dev/sdb1, nên được sử dụng làm nguồn nhân bản.

10.2 Tìm ra nguồn nhân bản, cách hoang tưởng

Tạo điểm gắn kết và gắn kết cả hai phân vùng:

sudo mkdir /tmp/sda1 /tmp/sdb1
sudo mount /dev/sda1 /tmp/sda1
sudo mount /dev/sdb1 /tmp/sdb1

Tìm dấu thời gian của tệp mới nhất trong mỗi cây

sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1
sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1

So sánh dấu thời gian

cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'

Nên in /dev/sdb1 is newest(rất có thể) hoặc /dev/sda1 is newest. Phân vùng đó nên được sử dụng làm nguồn nhân bản.

Ngắt kết nối các phân vùng trước khi nhân bản để tránh sự không nhất quán của bộ đệm / phân vùng.

sudo umount /tmp/sda1 /tmp/sdb1

10.3 Bản sao

Nếu /dev/sdb1là nguồn nhân bản:

sudo dd if=/dev/sdb1 of=/dev/sda1

Nếu /dev/sda1là nguồn nhân bản:

sudo dd if=/dev/sda1 of=/dev/sdb1

Làm xong!

11. Gotchas máy ảo

Nếu trước tiên bạn muốn thử điều này trong một máy ảo, có một số lưu ý: Rõ ràng, NVRAM chứa thông tin UEFI được ghi nhớ giữa các lần khởi động lại, nhưng không phải giữa các chu kỳ khởi động lại. Trong trường hợp đó, bạn có thể kết thúc tại bảng điều khiển UEFI Shell. Các lệnh sau sẽ khởi động bạn vào máy của bạn từ /dev/sda1(sử dụng FS1:cho /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

Giải pháp đầu tiên trong câu trả lời hàng đầu về khởi động UEFI trong hộp ảo - Ubuntu 12.04 cũng có thể hữu ích.


Bạn sẽ sử dụng LUKS như thế nào, đối với bộ nhân bản được mã hóa / RAID 1, tránh việc mã hóa xảy ra hai lần (ví dụ LUKS ngồi dưới mdadm, để IO xảy ra hai lần, nhưng bản thân mã hóa chỉ xảy ra một lần, điều này thực sự không xảy ra với một số thiết lập , chẳng hạn như các khuyến nghị cho ZFS, trong đó khối lượng được mã hóa hai lần, một lần trên mỗi thiết bị, sao chép hiệu quả chi phí của mặt mã hóa của mọi thứ). Tôi không thể tìm thấy hướng dẫn gần đây về thiết lập này.
ngâm

2
@soze, thật không may, tôi không có kinh nghiệm với các phân vùng Linux được mã hóa. Tôi sẽ làm một số lỗi và thử trong một máy ảo để tìm hiểu. NB: Tôi đã thêm một phần ở trên về gotchas máy ảo.
Niclas Börlin

Cảm ơn @ NiclasBörlin! Tôi đã vật lộn với việc tạo phân vùng khởi động trong RAID và LVM, và câu trả lời của bạn rất rõ ràng. Cảm ơn rất nhiều!
Gui Ambros

Bò thần! Đẹp!
đóng cọc

Có vẻ như điều này không hoạt động với Focal Fossa nữa vì trình cài đặt thay thế đã biến mất. Trình cài đặt của Focal không có các tùy chọn phân vùng được đề cập và nhấn mạnh vào một thiết bị /bootnếu bạn cố gắng đi theo lộ trình cài đặt đột kích tự động.
wedi

3

RAID-1 + XFS + UEFI

Tôi đã có thể đi được khoảng 99% theo cách đó với câu trả lời của @Niclas Börlin, cảm ơn bạn!

Tôi cũng đã rút ra sự giúp đỡ từ các câu trả lời sau:

Dưới đây là những cách tôi làm hỏng mọi thứ

  1. Có BIOS ở chế độ "Tự động", cho phép USB-Key được khởi động KHÔNG ở chế độ UEFI. Điều này khiến Grub không được cài đặt chính xác. Tôi đã chuyển chế độ sang chỉ UEFI, khởi động lại và xóa tất cả các khối logic, nhóm đột kích và phân vùng và bắt đầu lại. Tôi tiếp tục cố gắng cài đặt lại grub trên các phân vùng EFI, điều này chỉ làm cho mọi thứ tồi tệ hơn.
  2. /bootphân vùng trên XFS. Grub2 đi kèm với Ubuntu 18.04LTS dường như không xử lý việc này. Mặc dù điều đó không được ghi nhận ở bất cứ đâu. Tôi đã tạo một /bootphân vùng EXT-4 riêng biệt . Lưu ý rằng đây là trên ổ đĩa LVM RAID-1 và không phân tách các phân vùng như EFI! Rất nhiều câu trả lời cũ hơn nói rằng điều này là không thể, nhưng dường như là bây giờ. Cuối cùng tôi đã nhận được grub nhưng nhận được lỗi hệ thống tệp không xác định (ví dụ: Cách khắc phục "lỗi: hệ thống tệp không xác định. Cứu hộ grub> ) đã cho tôi đầu mối XFS /bootkhông hoạt động.
  3. Ở đâu đó, tôi đã cài đặt grub nhưng một dấu nhắc grub trống, không có menu grub. (ví dụ: https://help.ubfox.com/community/Grub2/Troubledh Boot # Specific_Troubledh Boot ). Điều này là do /bootkhông thể truy cập.

Những gì làm việc cho tôi

Bắt đầu với câu trả lời của @Niclas Börlin và thay đổi một vài điều nhỏ.

Bảng phân vùng

Tôi ủng hộ một /phân vùng lớn , vì vậy điều này phản ánh sự lựa chọn đó. Thay đổi chính là /bootphân vùng EXT4 thay vì phân vùng XFS.

sda/
          GPT     1M (auto-added)
   sda1 - EFI - 512M
   sda2 - MD0 - 3.5G

sdb/
          GPT     1M (auto-added)
   sdb1 - EFI - 512M
   sdb2 - MD0 - 3.5G

md0/
   vg/
     boot - 1G   - EXT4 /boot
     swap - 16G  - SWAP 
     root - rest - XFS  /

Sau khi hoàn thành cài đặt tôi đã có thể ddnội dung của sda1để sdb2được nêu chi tiết trong câu trả lời khác. Tôi cũng có thể thêm ổ đĩa thứ hai vào chuỗi khởi động bằng cách sử dụng efibootmgrnhư chi tiết.


rất hữu ích Tôi đã phải đối mặt với cùng một vấn đề với máy chủ Ubuntu 18.04 + UEFI + RAID1 + LVM. Theo sơ đồ phân vùng của bạn đã giúp tôi rất nhiều. Cảm ơn!
Lucas Aimaretto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.