Linux
  • << DEBIAN >>

  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   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 Сървър
  •     Добавяне на втори диск
  •     Файлов сървър + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на Nginx
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •       Защита - SPF, DKIM и DMARK
  •       Подобрение Антивирус
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •       DKIM, SPF и DMARK
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - 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
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • Инсталиране на Debian 11 с UEFI

    Както споменах по-рано ще инсталираме Debian 11 с файлова система ZFS на дънна платка с UEFI. За разлика от BSD системите където ZFS е вграден в ядрото тук се инсталира отделно. За целта: Създаваме виртуална машина със следните параметри: CPU - 4 ядра RAM - 4 GB HDD - 2 броя с еднакви размери по 33GB Вместо BIOS ще ползваме UEFI Ако пък не Ви е интересна инсталацията отидете направо на "Инсталиране на ZFS" Да започваме:

    Pic01
    Pic02

    Както в първия случай първо ще инсталираме системата на втория диск и след това ще я прехвърлим на първия с нейните си особености. Започваме инсталацията.

    1

    Забележете инсталираме с UEFI


    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    Избираме ръчно оразмеряване на диска. Първо защото ще инсталираме операционната система върху втория диск и след това ще е малко нестандартно.


    18

    Виждаме, че имаме два твърди диска. Временно ще инсталираме върху втория. Честно казано инсталацията на Debian 11 се побира и върху 8GB но от повече глава не боли. Избираме втория диск и натискаме Enter върху него.


    19

    Създаваме празна таблица върху втория диск.


    20

    Избираме свободното място което създадохме и натискаме Enter върху него.


    21

    Създаваме нов раздел. Той ще е специален и се казва EFI system partition.


    22

    Размера му варира от 100 до 128МB. В случая се презастраховам и избирам 128MB.


    23

    Ще започва от първото свободно място. В случая от началото на диска.


    24

    Ще му дадем име. Натискаме Enter върху мястото което съм показал


    25

    Даваме му име esp.


    26
    27

    Ще се ползва като EFI системен раздел.


    28

    Забележете, раздела е Bootable. Самата инсталация ще дооразмери раздела, ще го форматира под FAT32 и тук ще се разположат образите за зареждане на системата.


    29

    Завършваме със създаването на esp.


    30

    Избираме останалото свободно място. Натискаме Enter върху него.


    31

    Създаавме нов дял.


    32

    Даваме му цялото останало свободно място.


    33

    Ще му дадем име.


    34

    Ще се казва lvm.


    35

    Ще се използва като.


    36

    Физически дял за LVM.


    37

    Готови сме със дяла.


    38

    Сега да настроим логическия дял който създадохме.


    39

    Първо да запишем настройките които направихме до тук.


    40

    За начало създаваме логическа група.


    41

    Ще се казва vg0.


    42

    Ще бъде разположен върху втория физически дял на диска.


    43

    Създаваме накрая и логически том.


    44

    Логическия том ще бъде върху логическата група.


    45

    Ще се казва root.


    46

    Предлага ни да използваме цялото пространство. Това нас не ни устройва. Трябва да остане едно примерно от 250МВ до 512МБ за снапшот на системата.


    47

    Избираме да е 33GB. Оставаме резерв за снапшота.


    48

    Готови сме с изграждането на логическия дял.


    49

    Сега да дефинираме логическия дял за какво ще се ползва.


    50

    Ще го използваме върху:


    51

    Файлова система Ext4.


    52

    Ще бъде монтиран в:


    53

    Корена на каталога / за root файловата система


    54

    Готови сме с дефинирането на логическия дял root.


    55

    Готови сме с настройката на целия диск. Записваме ги.

    br
    56

    Предупреждава ни, че не сме създали дял за swap. Ние нарочно не сме направили и не искаме да се връщаме за да го създадем.


    57

    Накрая потвърждаваме да се запишат всички настройки върху диска които създадохме до тук.


    58

    Пита ни имаме ли други носители за инсталиране. Казваме, че нямаме.


    59

    Трябва да укажем държавата от която ще изберем огледален сървър.


    60

    Трябва да укажем и от кой точно сървър.


    61

    Аз не ползвам прокси затова и не указвам такова. До края инсталацията протича както в предната статия и няма да я обяснявам.


    62
    63
    64
    65
    66
    67
    68

    Готови сме с инсталацията. Даже се рестартирахме и заредихме наново. Понякога след рестарта системата не може да определи от къде да се зареди:

    UEFIShell

    Обаче системата вижда раздела (FS0, оградения в червено), но по някаква причина не може да получи достъп до него. За целта: Shell> fs0: и натискаме Enter FS0:\> ls Directory of: FS0:\ 01/20/2023 22:26 DIR 512 EFI 0 File(s) 0 bytes 1 Dir(s) FS0:\> cd EFI FS0:\EFI\> ls FS0:\EFI\> cd debian FS0:\EFI\debian\> ls FS0:\EFI\debian\> grubx64.efi Така системата вече може да се зареди и може да се логнем. За да се логнем автоматично след рестарта просто трябва да се изпълни:

    grub-install


    До тук имаме инсталиран Debina 11 на един LVM виртуален дял на втория твърд диск. Преди да започнем инсталацията на ZFS на втория диск, да оправим шела. ROOT има непълни пътища в шела. Вариант 1, пишем в шела:

    export PATH=/sbin:$PATH


    Или чрез:

    nano /root/.bashrc PATH=$PATH:/usr/sbin


    Готови сме, вече може да инсталираме ZFS. За начало да видим текущото състояние.

    df -h Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 394M 616K 393M 1% /run /dev/mapper/vg0-root 11G 1.1G 9.3G 11% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sdb1 120M 5.8M 114M 5% /boot/efi tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000

    ОС е инсталирана на структура LVM, а корена на системата се намира в логическата група vg0. Всичко е правилно. ПРАВИМ ПЪРВА СНИМКА НА СИСТЕМАТА - Installed LVM

    Инсталиране на ZFS

    Ще инсталираме файловата система ZFS. Проверяваме дали в стандартните репозитори има пакетите за ZFS.

    apt search zfs-initramfs Sorting... Done Full Text Search... Done

    Няма ги, защото не са дефинирани. Да ги опишем.

    echo "deb http://deb.debian.org/debian bullseye-backports main contrib" >> /etc/apt/sources.list.d/backports.list echo "deb-src http://deb.debian.org/debian bullseye-backports main contrib" >> /etc/apt/sources.list.d/backports.list echo "Package: src:zfs-linux" >> /etc/apt/preferences.d/90_zfs echo "Pin: release n=bullseye-backports" >> /etc/apt/preferences.d/90_zfs echo "Pin-Priority: 990" >> /etc/apt/preferences.d/90_zfs apt update # Или по другия начин: nano /etc/apt/sources.list.d/backports.list deb http://deb.debian.org/debian bullseye-backports main contrib deb-src http://deb.debian.org/debian bullseye-backports main contrib nano /etc/apt/preferences.d/90_zfs Package: src:zfs-linux Pin: release n=bullseye-backports Pin-Priority: 990 apt update


    И отново проверяваме:

    apt search zfs-initramfs Sorting... Done Full Text Search... Done zfs-initramfs/bullseye-backports 2.1.7-1~bpo11+1 all OpenZFS root filesystem capabilities for Linux - initramfs

    Готово. Пакетите са налични, остава да ги инсталираме, но за начало някои помощни пакети:

    apt install linux-headers-$(uname -r) linux-image-amd64 dkms parted rsync -y


    Сега да инсталираме и самия ZFS.

    apt install zfs-dkms zfs-initramfs zfs-zed zfsutils-linux -y

    Заради това лицензионно споразумение, ZFS не може да се вгради в ядрото на Linux. Инсталацията не протича много бързо, необходимо е доза търпение.

    Licenses

    Да проверим дали всичко е инсталирано:

    lsmod | grep zfs zfs 3960832 6 zunicode 335872 1 zfs zzstd 577536 1 zfs zlua 184320 1 zfs zavl 16384 1 zfs icp 319488 1 zfs zcommon 106496 2 zfs,icp znvpair 114688 2 zfs,zcommon spl 114688 6 zfs,icp,zzstd,znvpair,zcommon,zavl

    Всичко е точно. Преди обаче да продължим ми се иска да покажа /boot/efi/EFI/debian/grub.cfg

    nano /boot/efi/EFI/debian/grub.cfg search.fs_uuid 77551a79-a885-47d3-8e05-d6732ada5ff2 root lvmid/7MvQwW-t2Zi-f9cP-IQd3-23P7-j7Qy-cChT90/RmvWQC-sZ0V-ohCe-cCfd-q9JD-rwNW-HS646X set prefix=($root)'/boot/grub' configfile $prefix/grub.cfg

    Казваме да търси файловата система в LVM структурата (/dev/vg0/root).За ROOT (корена на каталога) да се обръща към логическата група vg0 / логическия том (root). Или по-точно корена на системата се намира в /dev/vg0/root. Дефинираме и префикс (/dev/vg0/root/boot/grub). Тук ще се намира ядрото на системата. Още конфигурираме и къде да търси конфигурационния файл на GRUB, чрез configure $prefix/grub.cfg. На практика казахме търси конфигурационния файл в /dev/vg0/root/boot/grub/grub.cfg. Ако се чудите как достигнах до този извод ето го по-долу и отговора.

    vgdisplay | grep UUID VG UUID 7MvQwW-t2Zi-f9cP-IQd3-23P7-j7Qy-cChT90 lvdisplay | grep UUID LV UUID RmvWQC-sZ0V-ohCe-cCfd-q9JD-rwNW-HS646X blkid /dev/vg0/root | cut -d ' ' -f2 UUID="77551a79-a885-47d3-8e05-d6732ada5ff2"

    Оразмеряване на първия диск за прехвъляне на Debian11 от втория

    ПРАВИМ НОВА СНИМКА НА ВИРТУАЛНАТА МАШИНА Installed ZFS Преди да започнем тази тема ми се иска да обясня разликата между BIOS и UEFI. Въз основа на това ще можете да разберете защо точно така ще оразмеря диска.

    66

    Принципа на зареждане на BIOS e: BIOS-a на компютъра указва да търси на зареждащия диск първите сектори в които е записан MBR. Съответно в MBR е указано къде се намира зареждащия модул на линукса (GRUB), a GRUB казва кое ядро да зареди и накрая ядрото комуникира с операционната система. Проблема идва когато се работи с големи дискове и големи RAM памети на сървъра, затова се е появил UEFI UEFI грубо казано е по-нов BIOS. Новите дънни платки са с UEFI и имат режим Legacy наподобяващ BIOS. В случая обаче ще говорим за чист UEFI. Първата разлика с BIOS e, че не се поддържат дискове с таблица на дяловете MSDOS, дори и дисковете да са по-малки от 2.2ТВ. За тази цел UEFI ползва EFI зареждащ дял на диска. Разликата между MBR и EFI първо е размера който се записва на диска. При MBR размера е по-малък от 512 байта, при EFI размера е поне 128МВ. Друга разлика с горния случай е /boot. В горния случай имаме само /boot, тук EFI се намира вътре в /boot (/boot/EFI). На практика имаме заедно EFI и Boot Loader. И после се зарежда ядрото и системата. Управлението на сървъри с UEFI е много по-мъчно и трябва добре да се знае материята. Доста писах да се захващаме с разделението на първия диск. За начало да видим какво разделение на дисковете имаме до сега:

    ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Jan 28 23:46 /dev/sda brw-rw---- 1 root disk 8, 16 Jan 28 23:46 /dev/sdb brw-rw---- 1 root disk 8, 17 Jan 28 23:46 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Jan 28 23:46 /dev/sdb2

    Два диска, като първия не е оразмерен. Следващия момент е да инсталираме инструмент с който да разделим диска. Лична аз ползвам parted.

    apt install parted -y


    Да разделим първия диск./dev/sda

    /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: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags # Всичко е праилно. Създаваме и първия раздел EFI (parted) mkpart Partition name? []? esp File system type? [ext2]? fat32 Start? 1 End? 129 # Раздела ще се казва esp, ще е с fat32 файлова система, ще започва от 1MB и ще завършва на 129MB, на практика ще е 128MB голям. Проверяваме: # (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp # Всичко е праилно. Да вдигнем и флага на раздела. (parted) set 1 esp on (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp boot, esp # Всичко е правилно. Създаваме втория раздел. Той трябва да за /boot (parted) mkpart Partition name? []? boot File system type? [ext2]? Натискаме просто Enter Start? 129 End? 2177 (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp boot, esp 2 129MiB 2177MiB 2048MiB ext2 boot # Големината на дяла е 2GB. Да създадем и трети дял. Той ще е за файловата система ZFS. (parted) mkpart Partition name? []? zp0 File system type? [ext2]? Просто натискаме Enter Start? 2177 End? -1 (-1 означава до края на диска) (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp boot, esp 2 129MiB 2177MiB 2048MiB ext2 boot 3 2177MiB 33791MiB 31614MiB ext2 zp0 # Всичко е праилно. Излизаме (parted) q Information: You may need to update /etc/fstab.


    Създаване на zpool и dataset на първия диск

    На третия дял ще създадем ZFS пул. За начало да създадем папка в която ще монтираме самите пулове.

    mkdir /mnt/zpool


    Създаваме и пула. Разликата от дънните платки с BIOS е, че тук има само един zpool.

    zpool create -o ashift=9 -o altroot=/mnt/zpool -O relatime=off -O atime=off -O canmount=off -O compression=lz4 -O xattr=sa -O normalization=formD -O acltype=posixacl -m none -f zp0 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3

    Тук ще се наложи да обясня какво направих: zpool create - начало на създаване на пул -o ashift=9 - отговаря за фическите сектори на диска. С parted когато разделяхме диска получихме Sector size (logical/physical): 512B/512B. 2 на степен 9 e 512. Ако обаче физическия сектор беше 4096 (4КВ) то тогава вместо 9 ще сложим 12. Ако пък не знаете колко Ви е физическия сектор, слагайте 12. -o altroot=/mnt/zpool - указва относително изместване на корена на файловата система (/). Така това което изместим вече ще е корен на файловата система. -O relatime=off, -O atime=off - намалят времето за запис върху твърдия диск -O canmount=off - указва, че коренения датасет не ни трябва да се монтира засега -O compression=lz4 - указваме метод на компресия на данните, в случая е lz4, много добър и бърз -O normalization=formD - указваме поддръжката на UTF-8 файловия формат да е в formD стандарт. -m none - указва, че не е необходимо да се монтира коренния датасет, защото указахме canmount=off zp0 /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 - даваме име на пула (zp0) и указваме къде ще се намира. Една забележка: вместо /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001-part3 можеше просто да кажем /dev/sda3 но това е лоша практика. И да проверим какво създадохме:

    zpool list NAME SIZE ALLOC FREЕ CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zp0 30.5G 133K 30.5G - - 0% 0% 1.00x ONLINE /mnt/zpool

    Забележете точката на монтиране на пула. Много важен момент за напред. Казахме преди, че със създаване на пула автоматично се създава и датасет. Да проверим.

    zfs list NAME USED AVAIL REFER MOUNTPOINT zp0 158K 29.5G 24K none

    Правилно със създаването на пула zp0 се създаде и датасет zp0. Забележете датасета не е монтиран, защото при създаване на пула използвахме ключ -m none. Това добре, но все пак трябва да създадем пул за корена на файловата система.

    /usr/sbin/zfs create -o mountpoint=/ zp0/debian

    Създадохме дата сет с точка на монтиране / (корена) и намиращ се в zp0/debian Да видим какво сме направили:

    zfs list NAME USED AVAIL REFER MOUNTPOINT zp0 178K 29.5G 24K none zp0/debian 24K 29.5G 24K /mnt/zpool

    Имаме коренен датасет zp0/debian с точка на монтиране /mnt/zpool. Ще поясня. Когато решим да прехвърляме инсталирания Debian от втория диск на ZFS датасета, то физически ще прехвърлим всички папки (целия каталог) в /mnt/zpool. Малко е объркващо. Ще се постарая да го обясня все едно е стандартна инсталация. Когато инсталираме Debian създаваме отделни дялове на диска и в тези дялове монтираме дадени каталози (папки). Пример: Съдаваме дял от диска примерно /dev/sda3 и казваме, че там ще се монтира корена на каталога / (root). Създаваме дял boot на /dev/sda2 и го монтираме в каталога /boot Създаваме дял home на /dev/sda4 и него монтираме в каталога /home По тази логика на нас коренния дял ни е /dev/sda3, a /dev/sda2 и /dev/sda4 са потдялове, защото основния каталог е /, а каталозите /boot, /home са подкаталози на коренния каталог /. Така е и при ZFS. Имаме коренен датасет zp0/debian. Ще има и други датасетове примерно за home които ще ползват коренния датасет, а физически за корен на новата операзионна система която ще прехвърляме ще е /mnt/zpool. До тук имаме датасет zp0 който се появи при създаването на zpool zp0. Но той няма точка на монтиране, защото така създадохме пула. Този датасет няма да го използваме. Имаме втори датасет zp0/debian. Това ще е корена на системата и точката на монтиране му е /mnt/zpool. Изместваме точката на монтиране за да може след като направим снапшота там да прехвърлим системата. Ако се пробвахме да я прехвърлим направо в zp0/debian нямаше да се получи. За разлика от предния път както при BIOS-a, тук няма да може да създадем втори zpool за /boot. Това се налага поради факта, че при UEFI се налага да създадем дял EFI който трябва да се намира в /boot. Получава се /boot/EFI. Поради тази причина ще се наложи тези дялове да ги опишем в /etc/fstab. Ако се чудите, защото тогава не описахме /boot при BIOS, това е поради факта, че ZFS системата не се описва в /etc/fstab. Затова по-лесно се управлява сървъри създадени върху дънни платки с BIOS. При UEFI за да подмените зареждащия диск, ще се наложи да се заредите през Live CD и от там да опишете новите дялове за зареждане. Не знам дали ме разбрахте, но в следващата статия ще демонстрирам как примерно ако се счупи зареждащия диск, как се ремонтира системата. Казахме, че в пула се създават или обикновени dataset или Volum. До тук имаме изграден коренен dataset zp0/debian с точка на монтиране /mnt/zpool. Можехме с това да спрем, но някои от подкаталозите като home, var и swap са особени и затова ще ги създадем отделно като под датасетове на коренния. Ще започнем с HOME. Особеното е, че в него не трябва да позволяваме да се стартират скриптове приложения от чуждо име. Ако даден потребител има права върху скрипта или приложението, само той може да го стартира, а друг потребител не може. Това се прави с цел защита от вируси и хакване. И съобразявайки се с гореказаното да създадем dataset за home.

    /usr/sbin/zfs create -o setuid=off -o mountpoint=/home zp0/debian/home

    Оново няколко пояснения. Точката на монтиране на датасета zp0/debian/home ще е /home o setuid=off - повишава безопасността. На тази директория флага set uid не може да се вдига. По този начин под чуждо име в директорията не може да се изпълняват програми, без да се негова собственост. Още една забележка, не създадохме папка home в /mnt/zpool. Това е така защото когато създадохме датасета за home, казахме, че ще е в корена zp0/debian, а на zp0/debian точката на монтиране е /mnt/zpool. Така на практика създадохме датасет zp0/debian/home и точката му на монтиране стана /mnt/zpool/home и тази папка автоматично се създаде със създаването на датасета. Пример:

    ls -l /bin/ping -rwsr-xr-x 1 root root 77432 Feb 2 2021 /usr/bin/ping

    файла ping се намира в /bin/ping и независимо, че е собственост на потребителя root заради флага s всеки може да ипълнява този файл от името на root. За повечето каталози това е нормално, но за /home това не трябва да се случва. Може да проверим

    ls -l /mnt/zpool/ total 1 drwxr-xr-x 2 root root 2 Jan 27 20:18 home

    Както обясних горе. Да проверим и датасетовете.

    zfs list NAME USED AVAIL REFER MOUNTPOINT zp0 272K 29.5G 24K none zp0/debian 49K 29.5G 25K /mnt/zpool zp0/debian/home 24K 29.5G 24K /mnt/zpool/home

    Всичко е точно както го говорехме по-нагоре. По същата логика да създадем дата сет за var

    /usr/sbin/zfs create -o setuid=off -o exec=off -o mountpoint=/var zp0/debian/var

    Тук разликата спрямо home e exec=off - ако създадем файл с права x, то нормално те се стартират, но тук това го забраняваме, защото с фючера exec=off забраняваме изпълнението на файла. В тази папка нямат място файлове които се стартират. По същата логика може да изнесем на отделен датасет /var/log. Можете примерно на този датасет да кажете да не може да препълва датасета и т.н. в зависимост какви неща искате да направите. Имате пълното право и свобода на действие в зависимост от ситуацията. Да видим до тук какво се получи.

    zfs list NAME USED AVAIL REFER MOUNTPOINT zp0 322K 29.5G 24K none zp0/debian 73K 29.5G 25K /mnt/zpool zp0/debian/home 24K 29.5G 24K /mnt/zpool/home zp0/debian/var 24K 29.5G 24K /mnt/zpool/var ls -l /mnt/zpool/ total 2 drwxr-xr-x 2 root root 2 Jan 27 20:18 home drwxr-xr-x 2 root root 2 Jan 27 20:38 var


    Обърнете внимание когато спирате машината, последния датасет не се разлогва (/var). Така, че помислете си дали да съществура по този начин.

    Прехвърляне на системата от втория на първия диск

    За да прехвърлим системата ще е необходимо да подготвим първия дял на първия диск. Там ще бъде разположена EFI частта. За целта трябва да е форматирана във формат Fat32. Стандартно в Debian тази помощна програма я няма, затова първо ще инсталираме dosfstools, който съдържа в себе си mkfs.vfat.

    apt install dosfstools


    Вече може да форматираме.

    /usr/sbin/mkfs.vfat /dev/sda1 mkfs.fat 4.2 (2021-01-31)


    Готови сме за пълно прехвърляне. Каталог, пулове, dataset-и, монтирани дялове, всичко сме подготвили. И тук на помощ ни идва правенето на snapshot (временна снимака) използвайки прелестите на LVM. Създаваме временна снимка. Ако се сещате когато правихме логически дялове във втория диск за root не използвахме цялото пространство, а отделихме за временна снимка. Време е да го използваме сега. Гледаме колко място имаме свободно:

    vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size <32.88 GiB PE Size 4.00 MiB Total PE 8417 Alloc PE / Size 7867 / 30.73 GiB Free PE / Size 550 / <2.15 GiB

    Останало е по-малко от 2.15GB. На нас ни е необходимо по принцип за чиста инсталация 256MB, в краен случай 512МВ. Имаме достатъчно място да създадем временната снимка коренния каталог на втория диск.

    /usr/sbin/lvcreate -s -n root_snap -L512M /dev/vg0/root Logical volume "root_snap" created.

    Създаваме снапшот (-s), с име (-n) root_snap, с големина на блока -L512M байта на тома /dev/vg0/root. Указахме големина на блока 512MB, това е достатъчно да прехвърлим цялата ОС. Ако съм честен и на 256М също стига. Проблема е, че не може направо да се достъпи временната снимка, защото има блокова структура (както твърдите дискове). Ще се наложи и нея да я монтираме. За начало създаваме каталог където да я монтираме:

    mkdir /mnt/root


    Вече може да монтираме временната снимка.

    mount /dev/vg0/root_snap /mnt/root/ ls -l /mnt/root/ total 76 lrwxrwxrwx 1 root root 7 Jan 28 21:32 bin -> usr/bin drwxr-xr-x 4 root root 4096 Jan 28 23:14 boot drwxr-xr-x 4 root root 4096 Jan 28 21:33 dev drwxr-xr-x 73 root root 4096 Jan 29 11:30 etc drwxr-xr-x 3 root root 4096 Jan 28 21:39 home lrwxrwxrwx 1 root root 31 Jan 28 21:35 initrd.img -> boot/initrd.img-5.10.0-21-amd64 lrwxrwxrwx 1 root root 31 Jan 28 21:33 initrd.img.old -> boot/initrd.img-5.10.0-20-amd64 lrwxrwxrwx 1 root root 7 Jan 28 21:32 lib -> usr/lib lrwxrwxrwx 1 root root 9 Jan 28 21:32 lib32 -> usr/lib32 lrwxrwxrwx 1 root root 9 Jan 28 21:32 lib64 -> usr/lib64 lrwxrwxrwx 1 root root 10 Jan 28 21:32 libx32 -> usr/libx32 drwx------ 2 root root 16384 Jan 28 21:32 lost+found drwxr-xr-x 3 root root 4096 Jan 28 21:32 media drwxr-xr-x 3 root root 4096 Jan 28 23:53 mnt drwxr-xr-x 2 root root 4096 Jan 28 21:33 opt drwxr-xr-x 2 root root 4096 Dec 9 21:15 proc drwx------ 3 root root 4096 Jan 28 23:07 root drwxr-xr-x 2 root root 4096 Jan 28 21:39 run lrwxrwxrwx 1 root root 8 Jan 28 21:32 sbin -> usr/sbin drwxr-xr-x 2 root root 4096 Jan 28 21:33 srv drwxr-xr-x 2 root root 4096 Dec 9 21:15 sys drwxrwxrwt 10 root root 4096 Jan 29 10:46 tmp drwxr-xr-x 14 root root 4096 Jan 28 21:33 usr drwxr-xr-x 11 root root 4096 Jan 28 21:33 var lrwxrwxrwx 1 root root 28 Jan 28 21:35 vmlinuz -> boot/vmlinuz-5.10.0-21-amd64 lrwxrwxrwx 1 root root 28 Jan 28 21:33 vmlinuz.old -> boot/vmlinuz-5.10.0-20-amd64

    Супер имаме достъп до папки и файлове на snapshot-a. Обърнете внимание на каталога (папката) boot. Тя трябва да съществува. Готови сме. Можем да прехвърлим системата от временната снимка. За целта ще ползваме програмата rsync

    /usr/bin/rsync -avPX /mnt/root/* /mnt/zpool/

    Изчакваме достатъчно време за да се прехвърли системата. Да проверим дали е на новото място:

    ls -l /mnt/zpool/ total 36 lrwxrwxrwx 1 root root 7 Jan 28 21:32 bin -> usr/bin drwxr-xr-x 5 root root 4096 Jan 28 23:14 boot drwxr-xr-x 4 root root 16 Jan 28 21:33 dev drwxr-xr-x 73 root root 156 Jan 29 11:30 etc drwxr-xr-x 3 root root 3 Jan 28 21:39 home lrwxrwxrwx 1 root root 31 Jan 28 21:35 initrd.img -> boot/initrd.img-5.10.0-21-amd64 lrwxrwxrwx 1 root root 31 Jan 28 21:33 initrd.img.old -> boot/initrd.img-5.10.0-20-amd64 lrwxrwxrwx 1 root root 7 Jan 28 21:32 lib -> usr/lib lrwxrwxrwx 1 root root 9 Jan 28 21:32 lib32 -> usr/lib32 lrwxrwxrwx 1 root root 9 Jan 28 21:32 lib64 -> usr/lib64 lrwxrwxrwx 1 root root 10 Jan 28 21:32 libx32 -> usr/libx32 drwx------ 2 root root 2 Jan 28 21:32 lost+found drwxr-xr-x 3 root root 4 Jan 28 21:32 media drwxr-xr-x 3 root root 3 Jan 28 23:53 mnt drwxr-xr-x 2 root root 2 Jan 28 21:33 opt drwxr-xr-x 2 root root 2 Dec 9 21:15 proc drwx------ 3 root root 6 Jan 28 23:07 root drwxr-xr-x 2 root root 2 Jan 28 21:39 run lrwxrwxrwx 1 root root 8 Jan 28 21:32 sbin -> usr/sbin drwxr-xr-x 2 root root 2 Jan 28 21:33 srv drwxr-xr-x 2 root root 2 Dec 9 21:15 sys drwxrwxrwt 10 root root 10 Jan 29 10:46 tmp drwxr-xr-x 14 root root 14 Jan 28 21:33 usr drwxr-xr-x 11 root root 13 Jan 28 21:33 var lrwxrwxrwx 1 root root 28 Jan 28 21:35 vmlinuz -> boot/vmlinuz-5.10.0-21-amd64 lrwxrwxrwx 1 root root 28 Jan 28 21:33 vmlinuz.old -> boot/vmlinuz-5.10.0-20-amd64

    Всичко се е прехвърлило, даже структурата на каталозите и тя е прехвърлена. Повече временната снимка не ни е нужна може да я изтрием. Стъпките ще са: Размонтираме времената снимка (/mnt/root) и я трием.

    umount /mnt/root/ /usr/sbin/lvremove /dev/vg0/root_snap Do you really want to remove active origin logical volume vg0/root with 1 snapshot(s)? [y/n]: y Logical volume vg0/root contains a filesystem in use. Logical volume vg0/root not removed. Volume group "snap" not found Cannot process volume group snap


    Форматирахме първия дял на първия диск във формат Fat32. Този дял трябва да се монтира в /mnt/zpool/boot/efi за да бъде запазена структурата на каталога. Да проверим първо какво имаме в /mnt/zpool/boot и /mnt/zpool/boot/efi.

    ls -l /mnt/zpool/boot total 86251 -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 2 root root 2 Jan 29 20:58 efi drwxr-xr-x 5 root root 8 Jan 29 21:04 grub -rw-r--r-- 1 root root 31952237 Jan 29 21:00 initrd.img-5.10.0-20-amd64 -rw-r--r-- 1 root root 42129196 Jan 29 21:17 initrd.img-5.10.0-21-amd64 -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 /mnt/zpool/boot/efi total 0

    Последния каталог е празен. Да монтираме там /dev/sda1, който преди това форматирахме във формат Fat32.

    mount /dev/sda1 /mnt/zpool/boot/efi

    Дяла е монтиран. Да продължим с донастройката на копираната система.

    ПРАВИМ НОВА СНИМКА НА СИСТЕМАТА rsync

    Работа с новата система

    Първо създаваме папка където да монтираме това което споменах.

    mkdir /mnt/zpool/run/udev


    Сега да ги монтираме в съответните им папки.

    mount -t proc none /mnt/zpool/proc mount --rbind /sys /mnt/zpool/sys mount --rbind /dev /mnt/zpool/dev mount --rbind /run/udev /mnt/zpool/run/udev


    СНИМКА - ChROOT И да се прехвърлим в новата система

    /usr/sbin/chroot /mnt/zpool/ /bin/bash df -hT Filesystem Type Size Used Avail Use% Mounted on zp0/debian zfs 30G 803M 29G 3% / zp0/debian/home zfs 29G 128K 29G 1% /home zp0/debian/var zfs 29G 112M 29G 1% /var /dev/sda1 vfat 128M 0 128M 0% /boot/efi udev devtmpfs 2.0G 0 2.0G 0% /dev tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 394M 652K 393M 1% /run/udev

    Забележете, имаме монтиран /dev/sda1 в /boot/efi, а не сме монтирали /dev/sda2 в /boot. Така трябва да бъде. За сега /boot ще се намира в zpool-a zp0. По-точно в dataset-a zp0/debian. Макар, че не е много правилно това, на този етап ни устройва. Имаме пълната структура на каталога на ОС. Имаме къде да се създаде GRUB както и къде да се разположи ядрото. Остава да дефинираме /etc/fstab какво и от къде да зарежда, както да инсталираме и конфигурираме GRUB.

    Дефиниране начина на зареждане на новия Debian

    Казахме, /boot се намира в корена на системата в zpool-a. ZFS системата не се описва в /etc/fstab. Тя сама се дефинира по друг начин. Остава обаче да укажем къде ще се намира EFI. Той трябва да е /boot/efi. Точно това трябва да укажем в /etc/fstab.

    /usr/sbin/blkid /dev/sda1 /dev/sda1: SEC_TYPE="msdos" UUID="8308-3071" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="esp" PARTUUID="f62cf9b4-6e8e-48fe-bfa6-d500b94694ca"


    Трябва ни само частта UUID="7143-74B7", да я отделим:

    /usr/sbin/blkid /dev/sda1 | cut -d ' ' -f 3 UUID="8308-3071"


    И да я запишем в /etc/fstab.

    /usr/sbin/blkid /dev/sda1 | cut -d ' ' -f 3 >> /etc/fstab

    С boot сме готови. И да редактираме /etc/fstab

    nano /etc/fstab # Това се получи #file system mount point type options dump pass /dev/mapper/vg0-root / ext4 errors=remount-ro 0 1 UUID=925C-D178 /boot/efi vfat umask=0077 0 1 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 UUID="8308-3071" # А трябва да е: #file system mount point type options dump pass # /dev/mapper/vg0-root / ext4 errors=remount-ro 0 1 # UUID=925C-D178 /boot/efi vfat umask=0077 0 1 # /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 UUID=8308-3071 /boot/efi vfat umask=0077 0 1

    Забележете освен /boot/efi нищо друго не дефинираме. За останалото се грижи ZFS системата. Даже и /boot не съществува като запис в /etc/fstab, защото се намира в zpool-a zp0. Следващото нещо е да укажем на GRUB, че ще зарежда от ZFS. Ако забелязахте никъде не указахме в /etc/fstab нито zpool нито dataset.

    nano /etc/default/grub GRUB_CMDLINE_LINUX="boot=zfs rpool=zp0 bootfs=zp0/debian"


    Да инсталираме GRUB на /dev/sda. До тук /boot/efi е празна папка.

    ls -l /boot/efi/ total 0

    Правилно празна е. Да проверим какво става след инсталацията на GRUB. Първо разбира се го инсталираме.

    grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_00000000000000000001 Installing for x86_64-efi platform. Installation finished. No error reported.


    Проверяваме:

    ls -l /boot/efi/ total 2 drwxr-xr-x 3 root root 2048 Jan 30 00:02 EFI

    Имаме създадена папка EFI Да проверим какво има в нея:

    ls -l /boot/efi/EFI/ total 2 drwxr-xr-x 2 root root 2048 Jan 30 00:02 debian ls -l /boot/efi/EFI/debian/ total 5882 -rwxr-xr-x 1 root root 108 Jan 30 00:02 BOOTX64.CSV -rwxr-xr-x 1 root root 84648 Jan 30 00:02 fbx64.efi -rwxr-xr-x 1 root root 114 Jan 30 00:02 grub.cfg -rwxr-xr-x 1 root root 4150720 Jan 30 00:02 grubx64.efi -rwxr-xr-x 1 root root 845480 Jan 30 00:02 mmx64.efi -rwxr-xr-x 1 root root 934240 Jan 30 00:02 shimx64.efi

    Имаме създадени файлова за зареждане на GRUB. Да проверим конфигурационния файл на GRUB:

    nano /boot/efi/EFI/debian/grub.cfg search.fs_uuid 9d204568374b4969 root hd0,gpt3 set prefix=($root)'/debian@/boot/grub' configfile $prefix/grub.cfg

    Забелязахте ли разликата между файла създаден в първоначалната инсталация и сега? Преди имахме: search.fs_uuid 77551a79-a885-47d3-8e05-d6732ada5ff2 root lvmid/7MvQwW-t2Zi-f9cP-IQd3-23P7-j7Qy-cChT90/RmvWQC-sZ0V-ohCe-cCfd-q9JD-rwNW-HS646X, сега е: search.fs_uuid 9d204568374b4969 root hd0,gpt3 (или казано на прост език, преди зареждахме от LVM сега от ZFS). 9d204568374b4969 това е ID на zpool-a zp0, а по-точно на dataset-a zp0/debain. Има и още една разлика. Преди беше: set prefix=($root)'/boot/grub', сега е: set prefix=($root)'/debian@/boot/grub'. Червения надпис е разликата. С debian@ се означава ползването на ZFS файлова система. А по-точно символа @ означава ползването на ZFS. Отвлякохме се малко но беше важно. Значи с инсталирането на GRUB създадохме файлове за зареждане и конфигурационнен файл.

    Обновяване на GRUB в новата система.

    Обновяваме INITRAM

    /usr/sbin/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

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

    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. Found Debian GNU/Linux 11 (bullseye) on /dev/mapper/vg0-root Adding boot menu entry for UEFI Firmware Settings ... done

    Забележете откри инсталацията и на втория диск. Готови сме. Да излезем от прехвърлената система и да рестартираме машината.

    exit reboot


    ----------------------------------------------------------------------------------------------------------------------- Не забравяйте след рестарта да настроите UEFI да стартира от първия диск. ----------------------------------------------------------------------------------------------------------------------- Презаредихме се, успешно заредихме с ZFS. Остана съвсем малко да завършим с изграждането операционната система на първия диск. Ако забелязахте нищо не направих със SWAP-a. Имаме zpool (zp0), в него ще създадем dataset тип Volum и това ще ни е SWAP-a.

    zfs-overview

    zfs create -V 4G -b 8192 -o logbias=throughput -o sync=always -o primarycache=metadata -o secondarycache=none -o com.sun:auto-snapshot=false -o compression=zle zp0/debian/swap0

    Отново пояснения: -V 4G - ще бъде volum и с размер 4GB, изчислете си колко ви трябва и толкова слагайте. Като правило вземете минимум да е 2GB. -b 8192 - размер на блока -o logbias=throughput, -o sync=always, -o primarycache=metadata, -o secondarycache=none -o com.sun:auto-snapshot=false - отговарят за кеширане на данните -o compression=zle - компресираме датасета с бърз компресиращ алгоритъм zp0/debian/swap0 - даваме име на ZFS волюма. Ако по някаква причина не Ви стига Swap-a, то правите нов (втори) и също го описвате в /etc/fstab. Създадохме dataset Volum за SWAP. Да проверим дали е активен:

    swapon -s

    Нямаме нищо, защото не сме го създали. Да го създадем, като укажем къде да се намира:

    /usr/sbin/mkswap /dev/zvol/zp0/debian/swap0 Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=9e087cc4-f03e-48d5-a51c-c3f9ab496478


    Вече имаме. За да се зареди след рестарта трябва да се опише в /etc/fstab. Да го опишем:

    nano /etc/fstab UUID=8308-3071 /boot/efi vfat umask=0077 0 1 /dev/zvol/zp0/debian/swap0 none swap sw 0 0


    И да проверим наново:

    swapon -s

    Отново нямаме. Това е така защото не сме се рестартирали и да се зареди SWAP-a от /etc/fstab. Да заредим тогава на ръка от този файл SWAP-a:

    swapon -a


    И да проверим:

    swapon -s Filename Type Size Used Priority /dev/zd0 partition 4194300 0 -2

    По този начин го включихме. Ако не ни достига SWAP-a то по този начин може да се увеличи с още един dataset и да се опише в /etc/fstab.

    zfs create -V 4G -b 8192 -o logbias=throughput -o sync=always -o primarycache=metadata -o secondarycache=none -o com.sun:auto-snapshot=false -o compression=zle zp0/debian/swap1 /usr/sbin/mkswap /dev/zvol/zp0/debian/swap1 nano /etc/fstab UUID=A626-0384 /boot/efi vfat umask=0077 0 1 /dev/zvol/zp0/debian/swap0 none swap sw 0 0 /dev/zvol/zp0/debian/swap1 none swap sw 0 0 swapon -a swapon -s Filename Type Size Used Priority /dev/zd0 partition 4194300 0 -2 /dev/zd16 partition 4194300 0 -3


    Отново проверяваме какво постигнахме до тук.

    zfs list NAME USED AVAIL REFER MOUNTPOINT zp0 5.03G 24.5G 24K none zp0/debian 5.03G 24.5G 810M / zp0/debian/home 29K 24.5G 29K /home zp0/debian/swap0 4.13G 28.6G 12K - zp0/debian/var 112M 24.5G 112M /var

    Имаме dataset корен, home, var и SWAP със съответните си точки за монтиране. До тук с едната част от задачата сме готови. Преди да продължим с изграждането на RAID1 бих искал да обърнете внимание как зарежда Linux-a в този случай:

    nano /boot/grub/grub.cfg -------------------------- -------------------------- -------------------------- insmod gzio insmod part_gpt insmod zfs set root='hd0,gpt3' echo 'Loading Linux 5.10.0-21-amd64 ...' linux /debian@/boot/vmlinuz-5.10.0-21-amd64 root=ZFS=zp0/debian ro boot=zfs rpool=zp0 bootfs=zp0/debian quiet -------------------------- -------------------------- --------------------------

    /debian@ - zp0/debian означаващо корена на каталозите /. root=ZFS=zp0/debian - указва къде е корена файловата система. boot=zfs rpool=zp0 bootfs=zp0/debian quiet - ако се сещате описах ги в /etc/defaults/grub в "GRUB_CMDLINE_LINUX="boot=zfs rpool=zp0 bootfs=zp0/debian" и обясних кое за какво е. Натъртих тук, защото в една следваща тема ще подхвана за ремонт на GRUB. Важно е да вникнете как зарежда Linux ОС. Още нещо: Никъде не описахме /dev/sda2, даже в /etc/fstab. По принцип този дял се заделя за /boot. Знаете ли защо?

    df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 394M 632K 393M 1% /run zp0/debian 26G 810M 25G 4% / 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/sda1 128M 5.8M 122M 5% /boot/efi tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000

    Липсва отделна монтираща точка за /boot. Значи се намира в ZFS-a. Затова и не се описва никъде. Така на практика обаче дяла /dev/sda2 остава неизползваем, /boot заема място от /dev/sda3. По-нататък ще поправим тази грешка. Ако се сещате в предните статии обяснявах, че /boot не е добре да е в zpool, защото при промяна на настройките на пула се чупеше зареждащия модул. ВРЕМЕННА СНИМКА - Debian 11 on ZFS

    МОЖЕ ДА СЕ КАЖЕ ЧЕ ДОПУСНАХ ГРЕШКА

    Демонстрирах един от начините за инсталиране на Debian със ZFS. Системата ще работи, ако не си играете постоянно с настройки на пула и dataset zp0. По този начин системата лесно се управлява и лесно се ремонтира. Но добрата практика е /boot да е на отделен пул или просто да се остави в дял извън пуловете. Това го демонстрирах в предните две статии, когато /boot беше в пул zpb и когато беше в отделен дял на диска (/dev/sda2). По същата логика може да се изгради инсталацията и тук.

    Изграждане на RAID1 с втория диск

    След рестарта от първия диск системата зареди успешно. В зареждащото меню се появи и старата система. На нас тя вече не ни е нужна. Трябва да зачистим диска от LVM, да го разделим както първия диск и накрая да го направим огледален с първия. За щастие ZFS има такава опция и се нарича MIRROR равносилна на RAID1. Започваме отзад напред с развалянето на LVM. И първата стъпка е да премахнем логическите дялове.

    lvremove /dev/vg0/root Do you really want to remove active origin logical volume vg0/root with 1 snapshot(s)? [y/n]: y Logical volume "root_snap" successfully removed Logical volume "root" successfully removed


    Да изтрием и логическата група

    vgremove vg0 Volume group "vg0" successfully removed


    Остана да изтрием и дефинирания физически диск като логически.

    pvremove /dev/sdb2 Labels on physical volume "/dev/sdb2" successfully wiped.

    Остана и /dev/sdb1 но той е физически дял и с parted ще го оправим.

    Разеляне на втория физически диск като първия

    За целта пак ползваме parted.

    /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: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags # Всичко е праилно. Създаваме и първия раздел EFI (parted) mkpart Partition name? []? esp File system type? [ext2]? fat32 Start? 1 End? 129 # Раздела ще се казва esp, ще е с fat32 файлова система, ще започва от 1MB и ще завършва на 129MB, на практика ще е 128MB голям. Проверяваме: # (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp # Всичко е праилно. Да вдигнем и флага на раздела. (parted) set 1 esp on (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp boot, esp # Всичко е правилно. Създаваме втория раздел. Той трябва да за /boot (parted) mkpart Partition name? []? boot File system type? [ext2]? Натискаме просто Enter Start? 129 End? 2177 (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp boot, esp 2 129MiB 2177MiB 2048MiB ext2 boot # Големината на дяла е 2GB. Да създадем и трети дял. Той ще е за файловата система ZFS. (parted) mkpart Partition name? []? zp0 File system type? [ext2]? Просто натискаме Enter Start? 2177 End? -1 (-1 означава до края на диска) (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat32 esp boot, esp 2 129MiB 2177MiB 2048MiB ext2 boot 3 2177MiB 33791MiB 31614MiB ext2 zp0 # Всичко е праилно. Сравняваме с диск /dev/sda (parted) select /dev/sda Using /dev/sda (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 129MiB 128MiB fat16 esp boot, esp 2 129MiB 2177MiB 2048MiB ext4 boot 3 2177MiB 33791MiB 31614MiB zp0 # Излизаме (parted) q Information: You may need to update /etc/fstab.


    Създаване на MIRROR

    За начало да проверим пуловете.

    zpool status pool: zp0 state: ONLINE 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 имаме един диск само. За огледало са нужни два. Да създадем MIRROR-a.

    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

    Създадохме MIRROR-a. Да видим състоянието му:

    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 Jan 29 16:28:55 2023 826M scanned at 413M/s, 197M issued at 98.3M/s, 826M total 200M resilvered, 23.81% done, 00:00:06 to go 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) errors: No known data errors

    Имаме създаден MIRROR, който в момента се синхронизира. Синхронизацията е достигнала 23.81%.

    Настройка на системата на втория диск

    ВРЕМЕННА СНИМКА НА СИСТЕМАТА RAID1 Какво имаме до тук:

    df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 394M 660K 393M 1% /run zp0/debian 26G 810M 25G 4% / zp0/debian/home 25G 128K 25G 1% /home zp0/debian/var 25G 113M 25G 1% /var tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda1 128M 5.8M 122M 5% /boot/efi tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000

    Зареждаме от /dev/sda1 и корена на каталога се намира в zp0/debian. /boot съответно се намира също като подкаталог на корена. Сега ще се постараем да се зарежда и от /dev/sdb1 примерно ако изгори или се развали нещо първия диск. Все пак сме имали mirror между /dev/sda3 и /dev/sdb3 така, че корена на каталога ще го има на двата под дяла. Какво ни интересува:

    blkid /dev/sr0: BLOCK_SIZE="2048" UUID="2022-12-17-10-46-11-00" LABEL="Debian 11.6.0 amd64 n" TYPE="iso9660" PTUUID="256ed913" PTTYPE="dos" /dev/sda1: SEC_TYPE="msdos" UUID="8308-3071" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="esp" PARTUUID="f62cf9b4-6e8e-48fe-bfa6-d500b94694ca" /dev/sda3: LABEL="zp0" UUID="11322125777116023145" UUID_SUB="13960000402311805467" BLOCK_SIZE="512" TYPE="zfs_member" PARTLABEL="zp0" PARTUUID="369b4781-5d73-4368-9bb0-568c8b634d7a" /dev/sdb1: UUID="925C-D178" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="esp" PARTUUID="aaaa55f1-a70c-471d-91ae-bb305ff2c05b" /dev/sdb3: LABEL="zp0" UUID="11322125777116023145" UUID_SUB="4378263990942333786" BLOCK_SIZE="512" TYPE="zfs_member" PARTLABEL="zp0" PARTUUID="1284ab14-8ea9-4568-b69c-987149f13131" /dev/zd0: UUID="9e087cc4-f03e-48d5-a51c-c3f9ab496478" TYPE="swap"

    Вълнува ни UUID, тип на файловата система vfat и типа на дяла esp. В случая на sda1 и sdb1 са еднакви, без UUID. За по-нагледно:

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

    За sdb1 нямаме монтирана точка. За още по-нагледно

    lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 vfat FAT16 8308-3071 122M 5% /boot/efi ├─sda2 └─sda3 zfs_member 5000 zp0 11322125777116023145 sdb ├─sdb1 vfat FAT32 925C-D178 ├─sdb2 └─sdb3 sr0 iso9660 Joliet Extension Debian 11.6.0 amd64 n 2022-12-17-10-46-11-00 zd0 swap 1 9e087cc4-f03e-48d5-a51c-c3f9ab496478 [SWAP]

    За начало обърнете внимание на ID на zp0. След това вижте sda1. Форматиран, монтиран и има данни на него, докато на sdb1 няма нищо, нито формат, нито монтиране, нито данни. Да поправим това. Форматираме дяла sdb1 във формат FAT.

    mkfs.vfat /dev/sdb1 mkfs.fat 4.2 (2021-01-31)


    Да проверим какво се получи:

    lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 vfat FAT16 8308-3071 122M 5% /boot/efi ├─sda2 └─sda3 zfs_member 5000 zp0 11322125777116023145 sdb ├─sdb1 vfat FAT16 381B-A545 ├─sdb2 └─sdb3 sr0 iso9660 Joliet Extension Debian 11.6.0 amd64 n 2022-12-17-10-46-11-00 zd0 swap 1 9e087cc4-f03e-48d5-a51c-c3f9ab496478 [SWAP]

    Втория диск също е форматиран но нищо няма на него. Да му инсталираме GRUB. За начало създаваме папка където да се монтира /dev/sdb1.

    mkdir /boot/efi2


    Монтираме първия дял на втория диск.

    mount /dev/sdb1 /boot/efi2


    Проверяваме какво имаме в папката.

    ls -l /boot/efi2 total 0


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

    grub-install /dev/disk/by-id/ata-VMware_Virtual_SATA_Hard_Drive_01000000000000000001 --efi-directory=/boot/efi2 Installing for x86_64-efi platform. Installation finished. No error reported.


    Да проверим какво се получи.

    ls -l /boot/efi2/ total 4 drwxr-xr-x 3 root root 2048 Feb 11 00:40 EFI drwxr-xr-x 2 root root 2048 Feb 11 00:40 grub ls -l /boot/efi2/EFI/debian/ total 5882 -rwxr-xr-x 1 root root 108 Feb 11 00:40 BOOTX64.CSV -rwxr-xr-x 1 root root 84648 Feb 11 00:40 fbx64.efi -rwxr-xr-x 1 root root 123 Feb 11 00:40 grub.cfg -rwxr-xr-x 1 root root 4150720 Feb 11 00:40 grubx64.efi -rwxr-xr-x 1 root root 845480 Feb 11 00:40 mmx64.efi -rwxr-xr-x 1 root root 934240 Feb 11 00:40 shimx64.efi

    Правилно. Всичко е тук. Да проверим по-нагледно.

    lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 vfat FAT16 8308-3071 122M 5% /boot/efi ├─sda2 └─sda3 zfs_member 5000 zp0 11322125777116023145 sdb ├─sdb1 vfat FAT16 381B-A545 122M 5% /boot/efi2 ├─sdb2 └─sdb3 sr0 iso9660 Joliet Extension Debian 11.6.0 amd64 n 2022-12-17-10-46-11-00 zd0 swap 1 9e087cc4-f03e-48d5-a51c-c3f9ab496478 [SWAP]

    Всичко е правилно. Двата дяла са заети с по 5%. Следва обновяване на INITRAM и GRUB

    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. Adding boot menu entry for UEFI Firmware Settings ... done

    Прекрасно. Обновихме и GRUB. Така ще може да се зарежда и от двата диска. Проблема е следния. Указали сме на ОС къде се намира /boot, къде е EFI. Във файла /etc/fstab сме описали всичко това, обаче за първия диск. Ако изгори точно той, ще се наложи да се влезе през Lice CD да се достъпи fstab и да се опише зареждането от втория диск. Сега ще се подготвим точно за това.

    blkid /dev/sda1 | cut -d ' ' -f 3 UUID="8308-3071" blkid /dev/sda1 | cut -d ' ' -f 3 >> /etc/fstab blkid /dev/sdb1 | cut -d ' ' -f 3 UUID="381B-A545" blkid /dev/sdb1 | cut -d ' ' -f 3 >> /etc/fstab blkid /dev/sda2 | cut -d ' ' -f 3 PARTUUID="91b873b9-b89d-4dc0-9bb8-c6a4b94c68a0" blkid /dev/sda2 | cut -d ' ' -f 3 >> /etc/fstab blkid /dev/sdb2 | cut -d ' ' -f 3 PARTUUID="3c1215f5-f07d-40a0-83b7-c4eec25bb482" blkid /dev/sdb2 | cut -d ' ' -f 3 >> /etc/fstab blkid /dev/sdb /dev/sdb: PTUUID="65315569-3f33-431c-874c-85d006c75ec4" PTTYPE="gpt" blkid /dev/sdb1 /dev/sdb1: SEC_TYPE="msdos" UUID="381B-A545" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="esp" PARTUUID="aaaa55f1-a70c-471d-91ae-bb305ff2c05b" blkid /dev/sdb2 /dev/sdb2: PARTLABEL="boot" PARTUUID="3c1215f5-f07d-40a0-83b7-c4eec25bb482"

    В първите четири групи от по три реда изваждаме информацията която ни е необходима и я записваме в /etc/fstab. fstab не е завършен. Последните три команди ще ги коментирам но накрая. Първата команда: Отделяме UUID на първия диск, първия дял (/dev/sda1). Втора команда: Записваме UUID в /etc/fstab. Трета команда: Отделяме UUID на втория диск, първия дял (/dev/sdb1). Четвърта команда: Записваме UUID в /etc/fstab. По аналогия същото правим и за вторите дялове на първия и втория диск. Последните три команди показват цялото съдържание на втория диск, на втория диск първия дял и на втория диск втория дял. Нарочно показах тези команди за да обърнете внимание на PTUUID, UUID и PARTUUID. Когато почнете да редактирате /etc/fstab обърнете внимание как ще запишете отделните дялове. Практически да покажем как ще изглежда /etc/fstab първо преди ремонта:

    nano /etc/fstab UUID=8308-3071 /boot/efi vfat umask=0077 0 1 /dev/zvol/zp0/debian/swap0 none swap sw 0 0 UUID="8308-3071" UUID="381B-A545" PARTUUID="91b873b9-b89d-4dc0-9bb8-c6a4b94c68a0" PARTUUID="3c1215f5-f07d-40a0-83b7-c4eec25bb482"

    Това е резултата от горните команди. Трябва да се получи следното:

    nano /etc/fstab #UUID=E3E0-B818 /boot/efi vfat umask=0077 0 1 /dev/zvol/zp0/debian/swap0 none swap sw 0 0 UUID=8308-3071 /boot/efi vfat umask=0077 0 1 UUID=381B-A545 /boot2/efi vfat umask=0077 0 1 PARTUUID=91b873b9-b89d-4dc0-9bb8-c6a4b94c68a0 /boot ext4 defaults 0 2 PARTUUID=3c1215f5-f07d-40a0-83b7-c4eec25bb482 /boot2 ext4 defaults 0 2

    До тук: - дефинирахме първия дял на първия диск да бъде за /boot/efi - втория дял на първия диск да бъде за /boot. - първия дял на втория диск ще бъде монтиран в /boot2/efi - втория дял на втория диск ще бъде монтиран в /boot2. - SWAP дяла не го променяме. Бих искал да обърнете внимание как са описани първите дялове и вторите. Първия дял е с UUID, втория използва PARTUUID. Ако опишете първия и втория само с UUID то зареждането на системата ще се счупи. За да се зареди правилно /etc/fstab ще се наложи да създадем каталози /boot2 и boot2/efi.

    mkdir -p /boot2/efi ls -l /boot2/ total 1 drwxr-xr-x 2 root root 2 Feb 11 13:20 efi


    Преди да се рестартираме да прехвърлим ядрото на /dev/sda2 и /dev/sdb2. За целта временно да монтираме двата дяла в /mnt/boot и /mnt/boot2.

    mount /dev/sda2 /mnt/boot mount: /mnt/boot: mount point does not exist.

    Липсва каталога /mnt/boot. Да го създадем и наново да монтираме /dev/sda2

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

    Отново не става, защото /dev/sda2 не форматиран. Да го форматираме и наново да монтираме.

    mkfs.ext4 /dev/sda2 mke2fs 1.46.2 (28-Feb-2021) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: d8634498-2a5b-47c5-922e-dc9b6770115b 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/boot

    Готово. Същата процедура правим за /dev/sdb2

    mkdir /mnt/boot2 mkfs.ext4 /dev/sdb2 mke2fs 1.46.2 (28-Feb-2021) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: d8290e0d-5f33-421b-a0c7-3ddd4076b13e 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/sdb2 /mnt/boot2

    Вече можем да прехвърлим ядрата на /dev/sda2 и /dev/sdb2 За целта ползваме командата за синхронизация rsync.

    rsync -avPX /boot/* /mnt/boot rsync -avPX /boot/* /mnt/boot2


    Проверяваме дали е прехвърлено ядрото на двата дяла.

    ls -l /mnt/boot total 93704 -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 drwx------ 3 root root 4096 Jan 1 1970 efi drwxr-xr-x 4 root root 4096 Jan 1 1970 efi2 drwxr-xr-x 5 root root 4096 Feb 11 00:56 grub -rw-r--r-- 1 root root 39660799 Feb 11 00:50 initrd.img-5.10.0-20-amd64 -rw-r--r-- 1 root root 41743435 Feb 11 00:50 initrd.img-5.10.0-21-amd64 drwx------ 2 root root 16384 Feb 11 13:27 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 /mnt/boot2 total 93704 -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 drwx------ 3 root root 4096 Jan 1 1970 efi drwxr-xr-x 4 root root 4096 Jan 1 1970 efi2 drwxr-xr-x 5 root root 4096 Feb 11 00:56 grub -rw-r--r-- 1 root root 39660799 Feb 11 00:50 initrd.img-5.10.0-20-amd64 -rw-r--r-- 1 root root 41743435 Feb 11 00:50 initrd.img-5.10.0-21-amd64 drwx------ 2 root root 16384 Feb 11 13:33 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

    Всичко се е прехвърлило правилно. До тук имаме: - Изграден mirror ZFS на /dev/sda3 и /dev/sdb3 - Инсталиран GRUB на /dev/sda1 и /dev/sdb1 - Налично ядро на /dev/sda2 и /dev/sdb2 - Дефинирано зареждане от първия диск в /etc/fstab. - За сега /boot се намира в zpool-a zp0. След успешния рестарт да проверим какво имаме. На практика нищо не сме променяли в системата.

    df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 394M 624K 393M 1% /run zp0/debian zfs 26G 810M 25G 4% / zp0/debian/home zfs 25G 128K 25G 1% /home zp0/debian/var zfs 25G 114M 25G 1% /var tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 ext4 2.0G 116M 1.7G 7% /boot /dev/sdb2 ext4 2.0G 116M 1.7G 7% /boot2 /dev/sdb1 vfat 128M 5.8M 122M 5% /boot2/efi /dev/sda1 vfat 128M 5.8M 122M 5% /boot/efi tmpfs tmpfs 394M 0 394M 0% /run/user/1000

    Точно както я описахме в /etc/fstab. Имаме монтирани дялове /dev/sda1, /dev/sdb1, /dev/sda2 и /dev/sdb2. Това означава, че ядрото вече не се намира в пула, а се зареди от отделен физически дял, в случая /dev/sda2. Да видим по-нагледно ситуацията.

    lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 vfat FAT16 8308-3071 122M 5% /boot/efi ├─sda2 ext4 1.0 d8634498-2a5b-47c5-922e-dc9b6770115b 1.7G 6% /boot └─sda3 zfs_member 5000 zp0 11322125777116023145 sdb ├─sdb1 vfat FAT16 381B-A545 122M 5% /boot2/efi ├─sdb2 ext4 1.0 d8290e0d-5f33-421b-a0c7-3ddd4076b13e 1.7G 6% /boot2 └─sdb3 zfs_member 5000 zp0 11322125777116023145 sr0 iso9660 Joliet Extension Debian 11.6.0 amd64 n 2022-12-17-10-46-11-00 zd0 swap 1 9e087cc4-f03e-48d5-a51c-c3f9ab496478 [SWAP]

    Гледаме червения надпис. Зареждаме системата по правилен начин. Ядрото се намира в /boot а GRUB с конфигурациите си в /boot/efi. Оправихме още една грешка. Извадихме зареждането на системата от zpool-a. Вече може спокойно да се предефинира както пула така и dataset-a без да се притесняваме, че ще счупим зареждането на Debian.

    Надежност

    ВРЕМЕННА СНИМАК - Reliability Всички тези врътки ги правим с една единствена цел. Системата по възможност да не спира да работи. Независимо от това няма нищо вечно. Да покажем ако премигне тока и се повреди първия диск, какво ще стане.

    1HDD

    Наличен само един диск. Другия е изгорял. Да стартираме системата.

    69

    Изчакахме достатъчно дълго време и се появи горния екран. Стига се до piix4_smbus и тук нещата спират. Предлага да въведем паролата на root за да продължим. Преди това обаче обърнете внимание какво не се е получило. - изтекло време за достъп до устройство /dev/disk/by-partuuid/91b8........ - нямаме достъп до /boot (/dev/sda2) - нямаме достъп до /boot/efi (/dev/sda1) Това е така защото в /etc/fstab сме казали, че ще се зареждаме от първия диск (/dev/sda1, /dev/sda2). Сега просто трябва да поправим файла да се зареждаме от втория диск. Предвидливо преди това вмъкнахме втория диск с дяловете си във /boot2 и /boot2/efi. Да поправим файла /etc/fstab.

    nano /etc/fstab #UUID=8308-3071 /boot/efi vfat umask=0077 0 1 UUID=381B-A545 /boot/efi vfat umask=0077 0 1 #PARTUUID=91b873b9-b89d-4dc0-9bb8-c6a4b94c68a0 /boot ext4 defaults 0 2 PARTUUID=3c1215f5-f07d-40a0-83b7-c4eec25bb482 /boot ext4 defaults 0 2

    Коментираме (спираме) първия развален диск. На втория диск казваме, че няма каталога на монтиране да е /boot2, а /boot Рестартираме се. Системата зарежда нормално. Следващата стъпка ще е намиране на нов диск, разделянето му и т.н., но в друга статия. С това смятам да приключвам. Темата стана дълга но е важно да се разбере начина на работа на ОС при UEFI.