Имаме хардуер с UEFI. Твърдите дискове в машината са под 2ТВ но трябва да са във формат GPT заради UEFI. Ще изградим софтуерен RAID 1 масив, като системата ще може да се зарежда от двата диска. Предимства: ● за по-нови системи е добър избор ● добра бързина ● слабо натоварва системата Недостатък: ● отново твърдо зададени раздели на томове
Имаме 2 диска по 33GB и UEFI. Малко теория за да разберете какво трябва да се направи.
BIOS - GRUB зарежда от MBR (първите 512 байта на диска) UEFI - зарежда от EFI Boot Loader (папка в /boot) Всичко това ни кара по някакъв начин да управляваме папката /boot/etc. Решението не е много просто: ● отделяме папка EFI в отделен дял ● двата дяла EFI на двата диска ги правим напълно еднакви чрез командата dd ● обновяваме BOOT менажера (efibootmgr ) за двата дяла ● двата дяла ги обединяваме в RAID1 масив ● RAID1 масива се описва в /etc/fstab ● обновяваме INITRAMFS Продължаваме с инсталацията. Цялата няма да я показвам, само ще уточня начина на разделяне на дисковете и RAID масива. Разпределението на дисковете трябва да изглежда по следния начин:
Да започваме.
Забележете, пърия дял е само 512МВ. На практика стига и 128МВ, но тук леко се поувлякох. Този дял ще е за EFI.
Този дял задължително трябва да е BOOTABLE.
Останалото свободно място ще е за RAID масив.
Аналогично на sda разделяме и втория диск sdb. Няма да го показвам просто погледнете предните картинки.
Двата диска sda и sdb са напълно огледално разделени. Ще създадем RAID масив от двата диска от вторите им дялове.
RAID масива е създаден. Да определим как ще се инсталира операционната система върху него.
Всичко ще е на един дял.
Предупреждава, че няма SWAP област. Ще я създадем във вид на файл, затова се отказваме да се върнем за поправка.
Завършихме с инсталацията. Забележете, за разлика от BIOS тук не ни предложи да инсталираме GRUB в някой от дисковете. На по-късен етап ще разберете защо, засега само обърнете внимание. Получихме следното разпределение:
Обърнете внимание! Имаме RAID1 масив само на вторите дялове където е инсталирана системата. Първите дялове не са обединени. Там се намира EFI.
Инсталацията премина успешно. Да проверим какво имаме:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 33G 0 disk ├─sda1 8:1 0 487M 0 part /boot/efi └─sda2 8:2 0 32.5G 0 part └─md0 9:0 0 32.5G 0 raid1 / sdb 8:16 0 33G 0 disk ├─sdb1 8:17 0 487M 0 part └─sdb2 8:18 0 32.5G 0 part └─md0 9:0 0 32.5G 0 raid1 / sr0 11:0 1 1024M 0 rom
Забележете, че /boot/efi имаме само на sda1. Това означава, че системата може да зарежда само от първия диск. Да проверим как е монтиран EFI
mount | grep '/boot/efi' /dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
Ако си направите труда да монтирате sdb1 и да проверите съдържанието му, ще се убедите, че там няма нищо.
mount /dev/sdb1 /mnt/ ls -la /mnt/ total 8 drwxr-xr-x 2 root root 4096 Dec 31 1969 . drwxr-xr-x 18 root root 4096 Jun 16 05:23 ..
Значи трябва да клонираме sda1 на sdb1.
dd if=/dev/sda1 of=/dev/sdb1 997376+0 records in 997376+0 records out 510656512 bytes (511 MB, 487 MiB) copied, 10.8781 s, 46.9 MB/s
Клонирахме sda1 на sdb1. Да проверим:
ls -la /mnt/ total 12 drwxr-xr-x 2 root root 4096 Dec 31 1969 . drwxr-xr-x 18 root root 4096 Jun 16 05:23 .. drwxr-xr-x 3 root root 4096 Jun 16 05:24 EFI
Имаме същата папка както на sda1. Да проверим как е монтирана.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 33G 0 disk ├─sda1 8:1 0 487M 0 part /boot/efi └─sda2 8:2 0 32.5G 0 part └─md0 9:0 0 32.5G 0 raid1 / sdb 8:16 0 33G 0 disk ├─sdb1 8:17 0 487M 0 part /mnt └─sdb2 8:18 0 32.5G 0 part └─md0 9:0 0 32.5G 0 raid1 / sr0 11:0 1 382M 0 rom
Това е така, защото ръчно я монтирахме там. А сега да видим как зарежда системата (EFI). За целта ползваме efibootmgr
efibootmgr -v | grep -i debian Boot0005* debian HD(1,GPT,a4382224-e214-4746-b4b5-9d782cadc52a,0x800,0xf3800)/File(\EFI\debian\shimx64.efi)
Имаме само един запис. Да проверим къде сочи:
ls -l /dev/disk/by-partuuid/ total 0 lrwxrwxrwx 1 root root 10 Jun 16 09:46 5541dfa1-72d4-4cdb-b9ef-f869957efc6c -> ../../sdb2 lrwxrwxrwx 1 root root 10 Jun 16 09:46 7af5f2d1-233d-45c2-90ea-3875ef1551e5 -> ../../sda2 lrwxrwxrwx 1 root root 10 Jun 16 09:46 7bab4780-36d4-421f-87c7-2076094bc06e -> ../../sdb1 lrwxrwxrwx 1 root root 10 Jun 16 09:46 a4382224-e214-4746-b4b5-9d782cadc52a -> ../../sda1
Да добавим втори запис за sdb
efibootmgr --create --disk /dev/sdb --part 1 --label "debian2" --loader "\EFI\debian\shimx64.efi" BootCurrent: 0005 BootOrder: 0006,0005,0000,0001,0002,0003,0004 Boot0000* EFI VMware Virtual SATA Hard Drive (0.0) Boot0001* EFI VMware Virtual SATA Hard Drive (1.0) Boot0002* EFI VMware Virtual IDE CDROM Drive (IDE 1:0) Boot0003* EFI Network Boot0004* EFI Internal Shell (Unsupported option) Boot0005* debian Boot0006* debian2
Да проверим дали съвпадат идентификаторите на дяловете с идентификаторите на зареждане.
ls -l /dev/disk/by-partuuid/ total 0 lrwxrwxrwx 1 root root 10 Jun 16 09:46 5541dfa1-72d4-4cdb-b9ef-f869957efc6c -> ../../sdb2 lrwxrwxrwx 1 root root 10 Jun 16 09:46 7af5f2d1-233d-45c2-90ea-3875ef1551e5 -> ../../sda2 lrwxrwxrwx 1 root root 10 Jun 16 09:46 7bab4780-36d4-421f-87c7-2076094bc06e -> ../../sdb1 lrwxrwxrwx 1 root root 10 Jun 16 09:46 a4382224-e214-4746-b4b5-9d782cadc52a -> ../../sda1
Това са идентификаторите за двата дяла. Да ги сравним с идентификаторите на зареждане.
efibootmgr -v BootCurrent: 0005 BootOrder: 0006,0005,0000,0001,0002,0003,0004 Boot0000* EFI VMware Virtual SATA Hard Drive (0.0) PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x2,0x0)/Sata(0,0,0) Boot0001* EFI VMware Virtual SATA Hard Drive (1.0) PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x2,0x0)/Sata(1,0,0) Boot0002* EFI VMware Virtual IDE CDROM Drive (IDE 1:0) PciRoot(0x0)/Pci(0x7,0x1)/Ata(1,0,0) Boot0003* EFI Network PciRoot(0x0)/Pci(0x11,0x0)/Pci(0x0,0x0)/MAC(000c29a7c288,0) Boot0004* EFI Internal Shell (Unsupported option) MemoryMapped(11,0xef68018,0xf3f6017)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37) Boot0005* debian HD(1,GPT,a4382224-e214-4746-b4b5-9d782cadc52a,0x800,0xf3800)/File(\EFI\debian\shimx64.efi) Boot0006* debian2 HD(1,GPT,7bab4780-36d4-421f-87c7-2076094bc06e,0x800,0xf3800)/File(\EFI\debian\shimx64.efi)
Всичко е правилно. Ако искате да премахнете някой запис. Поглеждате Boot0006 примерно. Командата е:
efibootmgr -B -b 0006
Ако искате пък да добавите, то командата е:
efibootmgr --create --disk /dev/sdb --part 1 --label "debian2" --loader "\EFI\debian\shimx64.efi"
Горните две команди се използват ако идентификаторите не съвпадат и искате да ги поправите.
Ще създадем RAID1 за /boot/efi. Тук има една тънкост. sda1 за сега не трябва да е в RAID1 масива (все пак ще съхраняваме данни вътре все още), защото са необходими метаданни 1.0 за да се стартира EFI.
mdadm --create /dev/md100 --level 1 --raid-disks 2 --metadata 1.0 /dev/sdb1 missing mdadm: partition table exists on /dev/sdb1 Continue creating array? yes mdadm: array /dev/md100 started.
Копираме съдържанието на /dev/sda1 в RAID1 масива.
mkdir /tmp/RAID mount /dev/md100 /tmp/RAID apt update -y apt install rsync -y rsync -av --progress /boot/efi/ /tmp/RAID/ sending incremental file list ./ EFI/ EFI/debian/ sent 223 bytes received 45 bytes 536.00 bytes/sec total size is 6,043,697 speedup is 22,551.11
Добавяме /dev/sda1 в RAID1 масива.
umount /dev/sda1 mdadm --manage /dev/md100 --add /dev/sda1 mdadm: added /dev/sda1
Да ремонтираме /etc/fstab
nano /etc/fstab # / was on /dev/md0 during installation UUID=d12d0441-51a7-4d41-9bec-95c29540558e / ext4 errors=remount-ro 0 1 # /boot/efi was on /dev/sda1 during installation # UUID=E0A4-DD72 /boot/efi vfat umask=0077 0 1 /dev/md100 /boot/efi vfat umask=0077 0 1 # /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 #UUID="E0A4-DD72" #UUID=E0A4-DD72 /boot/efi vfat umask=0077 0 1
Да добавим конфигурацията /dev/md100 към файла mdadm.conf
mdadm --detail --scan | grep 100 >> /etc/mdadm/mdadm.conf
Обновяваме INITRAMFS
update-initramfs -u update-initramfs: Generating /boot/initrd.img-5.10.0-30-amd64
Проверяваме състоянието на mdadm.
cat /proc/mdstat update-initramfs: Generating /boot/initrd.img-5.10.0-30-amd64 root@debian:/home/cccp# cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md100 : active raid1 sda1[2] sdb1[0] 498624 blocks super 1.0 [2/2] [UU] md0 : active raid1 sdb2[1] sda2[0] 34068480 blocks super 1.2 [2/2] [UU]
2 от 2 диска в RAID-a В крайна сметка получихме следния резултат:
Два RAID1 масива. Да се рестартираме и проверим какво имаме. След рестарта системата се зареди успешно.
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 33G 0 disk ├─sda1 8:1 0 487M 0 part │ └─md100 9:100 0 486.9M 0 raid1 /boot/efi └─sda2 8:2 0 32.5G 0 part └─md0 9:0 0 32.5G 0 raid1 / sdb 8:16 0 33G 0 disk ├─sdb1 8:17 0 487M 0 part │ └─md100 9:100 0 486.9M 0 raid1 /boot/efi └─sdb2 8:18 0 32.5G 0 part └─md0 9:0 0 32.5G 0 raid1 / sr0 11:0 1 382M 0 rom
Наличие на два RAID масива (md0 и md100). Ако пък искате да видите дисковете по UUID то:
lsblk -f nvme0n1 ├─nvme0n1p1 linux_raid 1.0 debian:100 de1927ae-8bd6-7c77-5845-65a3e8f61e6c │ └─md100 vfat FAT32 A575-7DA0 480.2M 1% /boot/efi ├─nvme0n1p2 linux_raid 1.2 debian:1 2f7390f6-e7a1-ea3b-add8-ca0e396e6302 │ └─md1 swap 1 47c62231-8cee-41ca-832c-5a220822d199 [SWAP] └─nvme0n1p3 linux_raid 1.2 debian:0 9614be28-14fa-68fb-de5c-ae6de833a29d └─md0 ext4 1.0 285c5bbe-5883-425c-ad3d-08143c6a8c62 42.7G 9% / nvme0n2 ├─nvme0n2p1 linux_raid 1.0 debian:100 de1927ae-8bd6-7c77-5845-65a3e8f61e6c │ └─md100 vfat FAT32 A575-7DA0 480.2M 1% /boot/efi ├─nvme0n2p2 linux_raid 1.2 debian:1 2f7390f6-e7a1-ea3b-add8-ca0e396e6302 │ └─md1 swap 1 47c62231-8cee-41ca-832c-5a220822d199 [SWAP] └─nvme0n2p3 linux_raid 1.2 debian:0 9614be28-14fa-68fb-de5c-ae6de833a29d └─md0 ext4 1.0 285c5bbe-5883-425c-ad3d-08143c6a8c62 42.7G 9% /
Да проверим как зарежда системата.
efibootmgr -v | grep -i debian Boot0005* debian HD(1,GPT,a4382224-e214-4746-b4b5-9d782cadc52a,0x800,0xf3800)/File(\EFI\debian\shimx64.efi) Boot0006* debian2 HD(1,GPT,7bab4780-36d4-421f-87c7-2076094bc06e,0x800,0xf3800)/File(\EFI\debian\shimx64.efi)
Зареждаме от двата диска. Сега може да имитираме повреда на първия диск. Премахваме го от системата и да видим дали ще се зареди наново? Системата сигнализира за развален RAID масив но зареди успешно. Това не е пълна инсталация. Не забравяйте SWAP дяла да се дефинира във вид на файл. За справка може да погледнете на BIOS RAID1+MSDOS С това приключваме.
Ползвани материали: How to set up a RAID1 on a UEFI boot with mdadm