| Summary: | Нет поддержки zfs | ||
|---|---|---|---|
| Product: | Branch p11 | Reporter: | |
| Component: | grub | Assignee: | Egor Ignatov <egori> |
| Status: | CLOSED FIXED | QA Contact: | qa-p11 <qa-p11> |
| Severity: | normal | ||
| Priority: | P5 | CC: | mail, obidinog |
| Version: | unspecified | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
|
Description
mail
2025-05-27 10:38:47 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 на оба диска для обеспечения отказоустойчивости.
Платформа: 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 не проверялось Нашел в чем проблема, не хватает коммита c464f1ec3 (fs/zfs/zfs: Mark vdev_zaps_v2 and head_errlog as supported, 2024-05-16) Добавлю в следующий релиз (grub-2.12-alt13) 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) |