Linux
  • << DEBIAN >>
  •   < Debian 9 >
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   < Debian 11 >
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   < Debian 12 >
  •     Първоначални настройки
  •     DNS Сървър
  •     DNS Практика
  •     Инсталиране и настройка на Apache
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Първо надграждане на MAIL сървъра
  •     Инсталиране и настройка на пощенски сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •     WEB сървър с Nginx
  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Сървър за отдалечен достъп - RustDESK
  • < UBUNTU >
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  •   Ubuntu BUDGIE
  •     Инсталиране Ubuntu BUDGIE
  •     Първоначални настройки на Ubuntu BUDGIE
  •     Ubuntu BUDGIE като MAC OS
  •     Приложения за Ubuntu BUDGIE
  • GNOME работна среда
  •   Ubuntu GNOME
  •     Инсталиране на Ubuntu 21.04 GNOME
  •     Ubuntu 21.04 GNOME като MacOS
  • XFCE работна среда
  •   Debian - Install XFCE
  •     Debian XFCE - допълнение
  •     Debian XFCE като MacOS
  •   Ubuntu - Install XFCE
  •     Ubuntu XFCE - допълнение
  •     Ubuntu XFCE като MacOS
  • МАТЕ работна среда
  •   Debian - Install MATE
  •     Настройка на Debian MATE
  • PROGRAMS
  •   Conky
  •   Sublime Text
  • ZFS Замяна на развален огледален диск

    Още когато писах темата Инсталиране на Debian 11 на UEFI и ZFS знаех, че темата е непълна. Обаче стана много дълга и реших да отделя внимание само за ремонт на mirror-a и замяната на дисковете с по-големи. Както се сещате ще разиграем два варианта. Първия ще е с използването на BIOS, а втория с UEFI. Започваме. До сега имаме виртуална машина със следните параметри: - CPU: 4 ядра - RAM: 4 GB - HDD: 2 бр. по 33GB.

    Ремонт за ZFS mirros с BIOS

    Няма да показвам как се инсталира, как се прави mirror. Можете да прочетете в Инсталиране на Debian 11 с BIOS или на Инсталиране на Debian 11 с BIOS - вариант 2. До тук имаме работещ модел с изграден mirror (RAID1). Приемаме, че единия диск изгаря или се разваля. Нарушава се mirror-a. Примерно е имало токов удар. Системата се е рестартирала и се появява следния екран:

    1

    В по-предна статия обясних, какво значи това "Как зарежда Linux". GRUB не може да намери папка /boot/grub. Възможно е примерно да не се е заредил дяла съдържащ /boot, а именно /dev/sdX2. Как да решим проблема? За начало да проверим състоянието му.

    2

    Част от отговора се съдържа в горната картинка. Примерно root=hd0. Ние знаем, че /boot се намира в (hd0,gpt2). Съответно имаме prefix=(hd0)/grub, а трябва да е prefix=(hd0,gpt2)/grub. Да поправим първата грешка:

    3

    Непозната файлова система, защо?


    4

    Веднага се набива на очи неправилната конфигурация. Да поправим текущата ситуация.

    5

    Дефинирахме root и prefix. Обърнете внимание на синтаксиса. В повечето ръководства ще видите нещо от рода root=hd0,2 примерно. Това е грешно. Както се вижда от ls / по същия начин и изписвате.


    6

    Вече може да влезем в /boot. Имаме папка с конфигурацията на GRUB, имаме и няколко ядра които може да заредим. Да видим какво има за конфигурация в /boot/grub

    7

    Жалко, липсва /boot/grub/grub.cfg. На практика конфигурационния файл на GRUB липсва. Пълна боза, голяма мъка. Всичко трябва да се прави на ръка. Поне модулите в /boot/grub/i3886-pc да са налични. Да проверим.

    8
    9

    Налични са, поне това успокоява. За по-нататъшната работа ще са необходими някои от тях. Да ги заредим.

    10

    За да стане ясно какво направих. Първо инсталирах някои от модулите, които се зареждаха автоматично от /boot/grub/grub.cfg. Пробвах да заредя ядрото но ми изписа "Unknown command 'Linux'". Това автоматично ми каза нямаш модула linux. Заредих го с insmod linux. След това заредих ядрото чрез vmlinuz-5.10.0-21-amd64 и initrd.img-5.10.0-21-amd64. Накрая стартирах системата. Появи се следния екран.

    11

    Идва да ни напомни, че задачата се мъчи да се изпълни от /dev/disk/by-uuid/......... Тук искам да поясня. Този диск беше описан в /etc/fstab и това е първия диск втория дял (/dev/sda2). За съжаление първия диск изгоря и сега нямаме /boot. Изчакваме спокойно 1 мин. и 30 сек. Дозареждат се останалите неща. Появява се следния екран.

    12

    Прекрасно почти всичко се зареди. Вкарваме паролата на потребителя ROOT и натискаме Enter.


    13

    В системата сме. Не се рестартираме, защото ще трябва наново да правим всички тези манипулации за да достигнем пак до тук. Затова ще е необходимо да се дефинира /boot и да се инсталира GRUB. Да го направим.

    14

    Какво виждаме. Имаме папка /boot но от долната команда df -h виждаме, че там няма нищо монтирано. И няма да се монтира, защото в /etc/fstab е описан изгорелия диск. (UUID=8bb2a............). Трябва да поправим тази грешка. Първо да определим UUID на втория дял на здравия диск.

    15

    Намерихме UUID на /dev/sda2, даже го записахме в /etc/fstab. Да ремонтираме /etc/fstab

    16

    Счупения диск го коментираме с #, а здравия го описваме. Рестартираме се.

    17

    За Вас може да е и изненада но пак не сме готови. Това е така защото не инсталирахме GRUB. Ако се чудите, защо не го инсталирахме по-рано, отговора е "Защото имаме счупен ZFS mirror" Но тук не трябва да се плашите. На практика нямаме зареден само /boot/grub/grub.cfg.

    18

    Действаме по познатите стъпки. Дефинираме root и prefix. Но в /boot/grub отново липсва grub.cfg. Така трябва и да бъде щом не сме се заредили до логин и парола. Продължаваме с зареждане на модулите необходими за старт на ОС.

    19

    Инсталирахме модулите необходими на ядрото. Да го заредим

    20

    Заредихме ядрото и стартирахме зареждането на останалите модули и сървиси. Вкарваме име и парола на ROOT и сме вътре в системата. Сега ще се закача през SSH към сървъра, за да мога да показвам командите и отговорите не на картинки.

    df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 394M 604K 393M 1% /run zp0/debian 26G 693M 25G 3% / zp0/debian/home 25G 128K 25G 1% /home zp0/debian/var 25G 114M 25G 1% /var tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 2.0G 101M 1.7G 6% /boot tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000

    Супер имаме монтиран дял в /boot Остава да инсталираме GRUB.

    grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001 Installing for i386-pc platform. Installation finished. No error reported. update-initramfs -u -k all update-initramfs: Generating /boot/initrd.img-5.10.0-21-amd64 update-initramfs: Generating /boot/initrd.img-5.10.0-20-amd64 update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.10.0-21-amd64 Found initrd image: /boot/initrd.img-5.10.0-21-amd64 Found linux image: /boot/vmlinuz-5.10.0-20-amd64 Found initrd image: /boot/initrd.img-5.10.0-20-amd64 Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. done

    Рестартираме се. Всичко зарежда както трябва. Оправихме системата да зарежда от здравия диск. Но това не е всичко. Все още имаме счупен mirror.

    zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zp0 30.5G 808M 29.7G - - 0% 2% 1.00x DEGRADED - zpool status pool: zp0 state: DEGRADED status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J scan: resilvered 822M in 00:00:02 with 0 errors on Sat Feb 4 12:28:49 2023 config: NAME STATE READ WRITE CKSUM zp0 DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 35954620164555522 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 ONLINE 0 0 0 errors: No known data errors

    Виждаме, че имаме zpool (zp0), който е деградирал. Обаче обърнете внимание mirror-0 съществува, като казва, че липсва /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3. Сега ние няма как да намерим диск с такова ID. Ще сложим нов диск в системата и ще изградим наново mirror-a. Така и така е счупен първия диск да сложим нов по-голям, хем ще подобрим системата.


    21

    Обновихме системата с диск 77GB. Повтаряме стъпките за оразмеряване на диска, създаване на mirror и т.н.

    lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 77G 0 disk sdb 8:16 0 33G 0 disk ├─sdb1 8:17 0 1M 0 part ├─sdb2 8:18 0 2G 0 part /boot └─sdb3 8:19 0 31G 0 part sr0 11:0 1 388M 0 rom zd0 230:0 0 4G 0 disk [SWAP]

    Имаме диск с размер 77GB без дялове. Да го оразмерим,

    /usr/sbin/parted /dev/sda GNU Parted 3.4 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. # Мерната ни единица ще е мегабайт (parted) unit mib # Създаваме таблица за раздели. (parted) mklabel gpt # Да проверим: (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags # Всичко е праилно. Създаваме и първия раздел EFI (parted) mkpart Partition name? []? bios_grub File system type? [ext2]? Натискаме Enter Start? 1 End? 2 # Раздела ще се казва bios_grub, ще започва от 1MB и ще завършва на 2MB, на практика ще е 1MB голям. f Проверяваме: (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub # Всичко е праилно. Да вдигнем и флага на раздела. (parted) set 1 bios_grub on (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub # Всичко е правилно. Създаваме втория раздел. Той трябва да за /boot (parted) mkpart Partition name? []? zpb File system type? [ext2]? Натискаме просто Enter Start? 2 End? 2050 (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 zpb # Големината на дяла е 2GB. Да създадем и трети дял. Той ще е за файловата система ZFS. (parted) mkpart Partition name? []? zp0 File system type? [ext2]? Просто натискаме Enter Start? 2050 End? -1 (-1 означава до края на диска) (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 zpb 3 2050MiB 78847MiB 76797MiB ext2 zp0 # Всичко е праилно. Излизаме (parted) q Information: You may need to update /etc/fstab.


    Да проверим.

    lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 77G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part └─sda3 8:3 0 75G 0 part sdb 8:16 0 33G 0 disk ├─sdb1 8:17 0 1M 0 part ├─sdb2 8:18 0 2G 0 part /boot └─sdb3 8:19 0 31G 0 part sr0 11:0 1 388M 0 rom zd0 230:0 0 4G 0 disk [SWAP]

    Различават се само по размера на последния дял. Това да не Ви притеснява. Ремонтираме mirror-a. Да видим състоянието на zpool zp0

    zpool status zp0 pool: zp0 state: DEGRADED status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J scan: resilvered 822M in 00:00:02 with 0 errors on Sat Feb 4 12:28:49 2023 config: NAME STATE READ WRITE CKSUM zp0 DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 35954620164555522 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 ONLINE 0 0 0 errors: No known data errors

    Нищо не се е променило. Имаме липсващ дял в mirror-a. За да оправим проблема, първо трябва да откачим разваления диск от mirror-a.

    zpool detach zp0 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3


    Да видим състоянието на пула.

    zpool status pool: zp0 state: ONLINE scan: resilvered 822M in 00:00:02 with 0 errors on Sat Feb 4 12:28:49 2023 config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 ONLINE 0 0 0 errors: No known data errors

    Пула вече не е mirror. Да добавим новия диск към съществуващия пул.

    zpool attach zp0 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 zpool status pool: zp0 state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Sun Feb 5 22:15:40 2023 809M scanned at 4.54M/s, 808M issued at 4.54M/s, 809M total 823M resilvered, 99.97% done, no estimated completion time config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ONLINE 0 0 0 (resilvering) errors: No known data errors

    До тук виждаме, че пула е ONLINE, протича синхронизация между двата диска (99.97% синхронизирани). Новия диск ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 се синхронизира със стария ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001 Изчакваме докато завърши синхронизацията. Между другото можете да гледате как протича синхронизацията чрез:

    watch zpool status

    Синхронизацията завърши. Остана новия диск да го направим и той да е зареждащ. Ако случайно се счупи стария (33GB), да заредим от новия (77GB).

    grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001 Installing for i386-pc platform. Installation finished. No error reported. grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001 Installing for i386-pc platform. Installation finished. No error reported. update-initramfs -u -k all update-initramfs: Generating /boot/initrd.img-5.10.0-21-amd64 update-initramfs: Generating /boot/initrd.img-5.10.0-20-amd64 update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.10.0-21-amd64 Found initrd image: /boot/initrd.img-5.10.0-21-amd64 Found linux image: /boot/vmlinuz-5.10.0-20-amd64 Found initrd image: /boot/initrd.img-5.10.0-20-amd64 Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. done

    Инсталирахме GRUB на двата диска. Създадохме папката /boot/grub в двата диска. Да проверим. За единия диск няма проблем той е монтиран в /boot. За другия обаче трябва да се постараем и него да го монтираме.

    df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 394M 628K 393M 1% /run zp0/debian 26G 693M 25G 3% / zp0/debian/home 25G 128K 25G 1% /home zp0/debian/var 25G 116M 25G 1% /var tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sdb2 2.0G 101M 1.7G 6% /boot tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000

    /dev/sdb2 е монтиран в /boot. Да монтираме /dev/sda2 в /mnt.

    mount /dev/sda2 /mnt mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sda2, missing codepage or helper program, or other error.

    Не става, грешна файлова система. Да проверим:

    lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 ├─sda2 └─sda3 zfs_member 5000 zp0 13080312810463377289 sdb ├─sdb1 ├─sdb2 ext4 1.0 b4c08e3f-c389-4883-9552-5614dd43e64b 1.7G 5% /boot └─sdb3 zfs_member 5000 zp0 13080312810463377289 sr0 zd0 swap 1 ea38fc96-4cec-45b1-aef8-8b9189861a94 [SWAP]

    Ето я и разликата. sdb2 е форматирана във файлова система ext4, а sda2 не е форматирана. Да оправим този проблем.

    mkfs.ext4 /dev/sda2 mke2fs 1.46.2 (28-Feb-2021) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: c6138e21-3d41-4a4f-98e6-6be50564b371 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done

    Форматиран дял. Да го монтираме и да проверим съдържанието на дяла.

    mount /dev/sda2 /mnt ls -l /mnt total 16 drwx------ 2 root root 16384 Feb 5 22:51 lost+found

    Празен дял. Лошооооооо. Ако сега се рестартираме и се помъчим да се заредим от новия диск нищо няма да стане. Защото за новата система нито ще има /boot, нито ще разбере от къде и кои ядра да зареди, нито ще има конфигурация на GRUB. Затова всичко отначало и проверяваме.

    grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001 Installing for i386-pc platform. Installation finished. No error reported. grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001 Installing for i386-pc platform. Installation finished. No error reported.


    Да проверим:

    ls -l /boot/ total 93696 -rw-r--r-- 1 root root 236452 Dec 13 22:46 config-5.10.0-20-amd64 -rw-r--r-- 1 root root 236452 Jan 21 16:35 config-5.10.0-21-amd64 drwxr-xr-x 5 root root 4096 Feb 5 22:31 grub -rw-r--r-- 1 root root 39666941 Feb 5 22:31 initrd.img-5.10.0-20-amd64 -rw-r--r-- 1 root root 41737897 Feb 5 22:30 initrd.img-5.10.0-21-amd64 drwx------ 2 root root 16384 Feb 4 12:11 lost+found -rw-r--r-- 1 root root 83 Dec 13 22:46 System.map-5.10.0-20-amd64 -rw-r--r-- 1 root root 83 Jan 21 16:35 System.map-5.10.0-21-amd64 -rw-r--r-- 1 root root 7008928 Dec 13 22:46 vmlinuz-5.10.0-20-amd64 -rw-r--r-- 1 root root 7019136 Jan 21 16:35 vmlinuz-5.10.0-21-amd64 ls -l /boot/grub/ total 40 drwxr-xr-x 2 root root 4096 Feb 4 13:15 fonts -rw-r--r-- 1 root root 7274 Feb 5 22:31 grub.cfg -rw-r--r-- 1 root root 1024 Feb 4 13:15 grubenv drwxr-xr-x 2 root root 20480 Feb 5 22:57 i386-pc drwxr-xr-x 2 root root 4096 Feb 5 22:57 locale

    За /dev/sdb2 монтиран в /boot всичко е наред. Да проверим за /dev/sda2 монтиран в /mnt.

    ls -l /mnt/ total 16 drwx------ 2 root root 16384 Feb 5 22:51 lost+found

    Тук нищо няма. Чрез grub-install /dev/..... инсталирахме първата част на GRUB в MBR. Да проверим със следващите команди какво ще се получи. Няма да бързам да подсказвам.

    update-initramfs -u -k all update-initramfs: Generating /boot/initrd.img-5.10.0-21-amd64 update-initramfs: Generating /boot/initrd.img-5.10.0-20-amd64 ls -l /mnt/ total 16 drwx------ 2 root root 16384 Feb 5 22:51 lost+found update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.10.0-21-amd64 Found initrd image: /boot/initrd.img-5.10.0-21-amd64 Found linux image: /boot/vmlinuz-5.10.0-20-amd64 Found initrd image: /boot/initrd.img-5.10.0-20-amd64 Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. done ls -l /mnt total 16 drwx------ 2 root root 16384 Feb 5 22:51 lost+found

    Какво разбрахте до тук? Втория дял си остава проблемен. Защо е така? 1. /boot сме го описали в /etc/fstab да е за /dev/sdb2. 2. За /dev/sda2 системата нищо не знае. 3. GRUB се създава и конфигурационен файл също създава но ги записва там където знае /boot/grub. Варианти? Да монтираме /dev/sda2 в /etc/fstab пак в /boot? Не става. В /etc/fstab може да съществува само един дял за /boot. Да използваме dd if=/dev/sdb2 of=/dev/sda2. Така и двата дяла ще имат едно и също ID. Да видим обаче grub.conf. Ще маркирам важните неща.

    nano /boot/grub/grub.cfg ............................. ............................. ............................. set linux_gfx_mode= export linux_gfx_mode menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b5869b32daa93789' { load_video insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd1,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2 b4c08e3f-c389-4883-9552-5614dd43e64b else search --no-floppy --fs-uuid --set=root b4c08e3f-c389-4883-9552-5614dd43e64b fi echo 'Loading Linux 5.10.0-21-amd64 ...' linux /vmlinuz-5.10.0-21-amd64 root=ZFS=zp0/debian ro quiet echo 'Loading initial ramdisk ...' initrd /initrd.img-5.10.0-21-amd64 } ............................. ............................. .............................

    Отново греда. Казва твърдо искам да заредя от втория диск (hd1) от втория дял (gpt2). Тук едно голямо НО. Това не се отнася за всички дистрибуции на Linux. Примерно при Debian този номер минава. Добре тогава, ако се счупи втория диск, не може ли да извадим хардуерно от SATA_0 новия диск и да го сложим в SATA_1? Това е решение, обаче ако правите нещата на момента. Представете си, че системата работи 5 години и се чупи. Сигурни ли сте, че ще помните толкова време? За да не си блъскате главата използвайте:

    dd if=/dev/sdb2 of=/dev/sda2

    След това инсталирайте GRUB с трите команди. Когато се счупи системата, влизате през LiceCD и оправяте нещата. Показал съм варианта в Инсталиране на Debian 11 на BIOS и ZFS-1. Търсите секцията: "Правилен ремонт на GRUB" Много се замотахме и не знам дали изтървахте идеята. Затова напомням. До тук: - Изгоря първия диск на системата (/dev/sda - 33GB) - Заменихме го с 77GB на който първите два дяла са точно като на /dev/sdb - Махнахме стария развален дял от огледалото (mirror-0) - Вече няма mirror-0 - Създаваме нов mirror-0 от дялове 3 на дискове /dev/sda и /dev/sdb. Дяловете са с различна големина, но за сега нищо не правим. - Инсталираме GRUB на /dev/sda и /dev/sdb използвайки ID на дисковете. - Правим dd на /dev/sdb2 и /dev/sda2 Да подготвим и /etc/fstab описвайки втория дял на първия диск, ако не използвахме командата dd.

    /usr/sbin/blkid /dev/sda2 | cut -d ' ' -f 2 UUID="c6138e21-3d41-4a4f-98e6-6be50564b371" /usr/sbin/blkid /dev/sda2 | cut -d ' ' -f 2 >> /etc/fstab nano /etc/fstab /dev/zvol/zp0/debian/swap0 none swap swap 0 0 UUID=b4c08e3f-c389-4883-9552-5614dd43e64b /boot ext4 defaults 0 1 UUID=c6138e21-3d41-4a4f-98e6-6be50564b371 /boot2 ext4 defaults 0 2

    Забележете, новия дял го монтирваме под /boot2, различно от стария. Съответно казваме да се зареди най-накрая (2). Първо е swap със стойност 0, след това е /boot със стойност 1 и накрая /boot2 със стойност на зареждане 2. Така с малко поправки по /etc/fstab пускаме системата в действие. Супер бързо. И все пак да ползваме командата dd.

    dd if=/dev/sdb2 of=/dev/sda2 4194304+0 records in 4194304+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 808.019 s, 2.7 MB/s lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 ├─sda2 ext4 1.0 b4c08e3f-c389-4883-9552-5614dd43e64b 1.8G 0% /mnt └─sda3 zfs_member 5000 zp0 13080312810463377289 sdb ├─sdb1 ├─sdb2 ext4 1.0 b4c08e3f-c389-4883-9552-5614dd43e64b 1.7G 5% /boot └─sdb3 zfs_member 5000 zp0 13080312810463377289 sr0 zd0 swap 1 ea38fc96-4cec-45b1-aef8-8b9189861a94 [SWAP]

    Двата дяла на двата диска са с едно и също UUID. Така не се налага да ремонтираме /etc/fstab. Спираме компютъра. Махаме диска от 33GB и пускаме наново компютъра. Да пробваме дали ще се заредим от първия диск. Готово заредихме се. Да проверим:

    df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 394M 592K 393M 1% /run zp0/debian 26G 693M 25G 3% / zp0/debian/home 25G 128K 25G 1% /home zp0/debian/var 25G 117M 25G 1% /var tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 2.0G 101M 1.7G 6% /boot tmpfs 394M 0 394M 0% /run/user/1000 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 77G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 75G 0 part sr0 11:0 1 1024M 0 rom zd0 230:0 0 4G 0 disk [SWAP]

    Един наличен диск с размер 77GB. Спираме компютъра и слагаме още един диск 77GB.

    22

    Пускаме наново компютъра. И проверяваме.

    lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 77G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 75G 0 part sdb 8:16 0 77G 0 disk sr0 11:0 1 1024M 0 rom zd0 230:0 0 4G 0 disk [SWAP] zpool status pool: zp0 state: DEGRADED status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Replace the device using 'zpool replace'. see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J scan: resilvered 824M in 00:03:01 with 0 errors on Sun Feb 5 22:18:41 2023 config: NAME STATE READ WRITE CKSUM zp0 DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 14621945585726743087 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ONLINE 0 0 0 errors: No known data errors zpool detach zp0 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 zpool status pool: zp0 state: ONLINE scan: resilvered 824M in 00:03:01 with 0 errors on Sun Feb 5 22:18:41 2023 config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ONLINE 0 0 0 /usr/sbin/parted /dev/sdb GNU Parted 3.4 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. # Мерната ни единица ще е мегабайт (parted) unit mib # Създаваме таблица за раздели. (parted) mklabel gpt # Да проверим: (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags # Всичко е праилно. Създаваме и първия раздел EFI (parted) mkpart Partition name? []? bios_grub File system type? [ext2]? Натискаме Enter Start? 1 End? 2 # Раздела ще се казва bios_grub, ще започва от 1MB и ще завършва на 2MB, на практика ще е 1MB голям. Проверяваме: (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub # Всичко е праилно. Да вдигнем и флага на раздела. (parted) set 1 bios_grub on (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub # Всичко е правилно. Създаваме втория раздел. Той трябва да за /boot (parted) mkpart Partition name? []? zpb File system type? [ext2]? Натискаме просто Enter Start? 2 End? 2050 (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 zpb # Големината на дяла е 2GB. Да създадем и трети дял. Той ще е за файловата система ZFS. (parted) mkpart Partition name? []? zp0 File system type? [ext2]? Просто натискаме Enter Start? 2050 End? -1 (-1 означава до края на диска) (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 78848MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 zpb 3 2050MiB 78847MiB 76797MiB ext2 zp0 # Всичко е праилно. Излизаме (parted) q Information: You may need to update /etc/fstab.

    zpool status pool: zp0 state: ONLINE scan: resilvered 824M in 00:03:01 with 0 errors on Sun Feb 5 22:18:41 2023 config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ONLINE 0 0 0 errors: No known data errors zpool attach zp0 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 watch zpool status pool: zp0 state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Mon Feb 6 01:03:59 2023 810M scanned at 36.8M/s, 143M issued at 6.52M/s, 810M total 140M resilvered, 17.71% done, no estimated completion time config: NAME STATE READ WRITE CKSUM zp0 ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 ONLINE 0 0 0 ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001-part3 ONLINE 0 0 0 (resilvering)

    Изчакваме да се синхронизират дяловете. Инсталираме GRUB

    grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001 Installing for i386-pc platform. Installation finished. No error reported. grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001 Installing for i386-pc platform. Installation finished. No error reported. update-initramfs -u -k all update-initramfs: Generating /boot/initrd.img-5.10.0-21-amd64 update-initramfs: Generating /boot/initrd.img-5.10.0-20-amd64 update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.10.0-21-amd64 Found initrd image: /boot/initrd.img-5.10.0-21-amd64 Found linux image: /boot/vmlinuz-5.10.0-20-amd64 Found initrd image: /boot/initrd.img-5.10.0-20-amd64 Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. done dd if=/dev/sda2 of=/dev/sdb2 reboot

    Отново всичко върви. Мислех в тази статия да покажа смяна на дискове за UEFI, но пак ми се струва че ще е дълго. Затова в следващата.