Bug 54480 - Нет поддержки zfs
Summary: Нет поддержки zfs
Status: CLOSED FIXED
Alias: None
Product: Branch p11
Classification: Unclassified
Component: grub (show other bugs)
Version: unspecified
Hardware: x86_64 Linux
: P5 normal
Assignee: Egor Ignatov
QA Contact: qa-p11@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-05-27 10:38 MSK by mail
Modified: 2025-06-19 18:30 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mail 2025-05-27 10:38:47 MSK
Если система переносится на ZFS, тогда при выполнении установки grub получаем ошибку:
# grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdc --boot-directory=/mnt/rpool/boot --root-directory=/mnt/rpool --modules=zfs
Installing for x86_64-efi platform.
grub-install: error: unknown filesystem.
При попытке проверить совместимость системы, получаем ошибку:
# grub-probe --target=fs /mnt/efi_sdc
grub-probe: error: unknown filesystem.
Comment 1 obidinog@basealt.ru 2025-05-28 09:26:02 MSK
Уточните, пожалуйста, на каком дистрибутиве воспроизводится и подробные шаги для воспроизведения ошибки
Comment 2 mail 2025-05-28 14:50:58 MSK
Использовал virtualization-pve-11.0-RC1-x86_64.iso             08-May-2025 08:04      2G:
Ниже расписаны шаги с описанием, которые применял для получения ошибки (дойти до ошибки можно и с одним диском, создать два раздела, один отправить в vfat второй в zfs, результат будет схожий):
-------
Подготовка

    Проверка текущей системы
        Убедитесь, что система загружена с /dev/sda (Btrfs) и работает корректно.
        Проверьте разметку диска /dev/sda:
        bash

lsblk
fdisk -l /dev/sda
Пример вывода lsblk:
text

    NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda           8:0    0  500G  0 disk
    ├─sda1        8:1    0  512M  0 part /boot/efi
    ├─sda2        8:2    0  465G  0 part /
    Запишите размеры и типы разделов, особенно EFI (/boot/efi) и корневого раздела (/).

Проверка целевых дисков

    Убедитесь, что /dev/sdc и /dev/sdd доступны и не содержат важных данных:
    bash

lsblk /dev/sdc /dev/sdd
Проверьте, что диски имеют одинаковый размер (или близкий, так как RAID1 использует минимальный размер):
bash

    fdisk -l | grep -E '/dev/sdc|/dev/sdd'

Установка необходимых пакетов

    Проверьте, установлен ли ZFS:
    bash

zfs version
Если ZFS не установлен, установите его:
bash
apt-get update
apt-get install zfsutils-linux
Убедитесь, что GRUB2 с поддержкой ZFS установлен:
bash
grub-install --version
Если требуется, установите GRUB2:
bash

    apt-get install grub-efi

Резервное копирование

    Создайте резервную копию системы, например, с помощью rsync:
    bash

        rsync -aAXv / /mnt/backup
        (предполагается, что /mnt/backup — внешний диск или другой раздел).

Этап 1: Подготовка дисков /dev/sdc и /dev/sdd для ZFS RAID1

    Очистка дисков
        Убедитесь, что на /dev/sdc и /dev/sdd нет важных данных, затем очистите их:
        bash

    wipefs -a /dev/sdc
    wipefs -a /dev/sdd

Создание разделов

    Скопируйте разметку с /dev/sda (EFI и корневой раздел) на /dev/sdc и /dev/sdd:
    bash

    sgdisk --replicate=/dev/sdc /dev/sda
    sgdisk -G /dev/sdc
    sgdisk --replicate=/dev/sdd /dev/sda
    sgdisk -G /dev/sdd
        sgdisk --replicate копирует таблицу разделов.
        sgdisk -G обновляет GUID для избежания конфликтов.

Проверка разметки

    Убедитесь, что разметка на /dev/sdc и /dev/sdd идентична /dev/sda:
    bash

    fdisk -l /dev/sdc
    fdisk -l /dev/sdd
    Ожидается: /dev/sdc1 и /dev/sdd1 — EFI (тип EF00, FAT32), /dev/sdc2 и /dev/sdd2 — для ZFS.

Форматирование EFI разделов

    Отформатируйте EFI разделы на /dev/sdc1 и /dev/sdd1:
    bash

        mkfs.vfat -F32 /dev/sdc1
        mkfs.vfat -F32 /dev/sdd1

Этап 2: Создание ZFS RAID1 пула

    Создание ZFS пула
        Создайте ZFS пул с типом RAID1 (mirror) на разделах /dev/sdc2 и /dev/sdd2. Используйте идентификаторы /dev/disk/by-id/:
        bash

zpool create -f -o ashift=12 rpool mirror /dev/disk/by-id/<id-sdc2> /dev/disk/by-id/<id-sdd2>

    Найдите идентификаторы:
    bash

        ls -l /dev/disk/by-id/
        Пример: /dev/disk/by-id/ata-WDC_WD5000AAKX-001CA0_WD-WMAY12345678-part2
        ashift=12 подходит для дисков с сектором 4K (проверьте спецификации дисков).

Создание файловой системы

    Создайте файловую систему ZFS для корня:
    bash

    zfs create rpool/ROOT
    zfs create rpool/ROOT/alt-1
        rpool/ROOT/alt-1 будет корневой файловой системой.

Настройка параметров ZFS

    Установите точку монтирования:
    bash

zfs set mountpoint=/mnt/rpool rpool/ROOT/alt-1
Включите сжатие (рекомендуется):
bash

    zfs set compression=lz4 rpool

Проверка пула

    Убедитесь, что пул создан и работает:
    bash

zpool status rpool
Ожидаемый результат:
text

        pool: rpool
        state: ONLINE
        config:
            NAME        STATE     READ WRITE CKSUM
            rpool       ONLINE       0     0     0
              mirror-0  ONLINE       0     0     0
                sdc2    ONLINE       0     0     0
                sdd2    ONLINE       0     0     0

Этап 3: Перенос данных с Btrfs на ZFS

    Копирование данных
        Скопируйте данные с текущей системы на ZFS:
        bash

    rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/rpool

Копирование EFI раздела

    Смонтируйте EFI разделы и скопируйте содержимое:
    bash

    mkdir /mnt/efi_sdc /mnt/efi_sdd
    mount /dev/sdc1 /mnt/efi_sdc
    mount /dev/sdd1 /mnt/efi_sdd
    rsync -aAXv /boot/efi/ /mnt/efi_sdc
    rsync -aAXv /boot/efi/ /mnt/efi_sdd

Проверка данных

    Убедитесь, что данные скопированы корректно:
    bash

        ls -l /mnt/rpool
        ls -l /mnt/efi_sdc/EFI
        ls -l /mnt/efi_sdd/EFI

Этап 4: Настройка загрузки с ZFS RAID1 (ALT Linux с GRUB2)

    Подготовка GRUB2 для ZFS
        Убедитесь, что GRUB2 поддерживает ZFS. В ALT Linux это обычно включено, но проверьте:
        bash

grub-probe --target=fs /
Если ZFS не поддерживается, установите GRUB2 с поддержкой ZFS:
bash

    apt-get install grub-efi

Установка GRUB2

    Установите GRUB2 на оба EFI раздела (/dev/sdc1 и /dev/sdd1):
    bash

grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdc --boot-directory=/mnt/rpool/boot
grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdd --boot-directory=/mnt/rpool/boot

    Это установит GRUB2 на оба диска для обеспечения отказоустойчивости.
Comment 3 obidinog@basealt.ru 2025-05-30 11:25:40 MSK
Платформа:
virtualization-pve-11.0-RC1-x86_64.iso

Пакет:
grub 2.12-alt11

Ошибка воспроизвелась по вышеуказанным шагам
# grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdb --boot-directory=/mnt/rpool/boot
Выполняется установка для платформы x86_64-efi.
grub-install: ошибка: неизвестная файловая система.

В Sisyphus не проверялось
Comment 4 Egor Ignatov 2025-05-30 12:24:17 MSK
Нашел в чем проблема, не хватает коммита c464f1ec3 (fs/zfs/zfs: Mark vdev_zaps_v2 and head_errlog as supported, 2024-05-16)

Добавлю в следующий релиз (grub-2.12-alt13)
Comment 5 Repository Robot 2025-06-19 18:30:36 MSK
grub-2.12-alt13 -> p11:

 Tue Jun 10 2025 Egor Ignatov <egori@altlinux> 2.12-alt13
 - fix search by uuid for legacy boot
 - fix zfs module (closes: #54480)
 - fix fs write support detection (closes: #54394)
 - update ALT-specific translations (closes: #54493)
 Thu May 15 2025 Egor Ignatov <egori@altlinux> 2.12-alt12
 - update-grub: use system locale when generating config
 - fix PXE boot (closes: #54249)