2

Я читаю на эту тему, можно ли использовать ZFS в Linux для корневой файловой системы, и есть интересная статья в вики . Но расположение разделов в примере мне не понятно.

# sgdisk     -n1:0:0      -t1:BF01 /dev/disk/by-id/scsi-SATA_disk1
Run this if you need legacy (BIOS) booting:
# sgdisk -a1 -n2:34:2047  -t2:EF02 /dev/disk/by-id/scsi-SATA_disk1
Run this for UEFI booting (for use now or in the future):
# sgdisk     -n3:1M:+512M -t3:EF00 /dev/disk/by-id/scsi-SATA_disk1
Run this in all cases:
# sgdisk     -n9:-8M:0    -t9:BF07 /dev/disk/by-id/scsi-SATA_disk1

Что я не понимаю в этом примере, так это первый раздел. Читая справочную страницу sgdisk, мне не ясно, имеет ли первый раздел только один размер блока или он охватывает практически все устройство. В последнем случае это будет означать, что все остальные созданные разделы создаются внутри первого? Что меня удивляет, так это следующее предложение на странице руководства:

Начальное или конечное значение 0 указывает значение по умолчанию, которое является началом самого большого доступного блока для начального сектора и концом того же блока для конечного сектора.

"Тот же блок" звучит как один блок физического устройства, например, 512 байт или 4 тыс. Байт данных? Или это означает некоторый непрерывный объем памяти, охватывающий несколько логических / физических блоков в конце?

Для меня важно понять это из-за следующего предложения в вики:

Корневой пул не обязательно должен быть одним диском; он может иметь топологию зеркала или raidz. В этом случае повторите команды разбиения для всех дисков, которые будут частью пула. Затем создайте пул с помощью zpool create ... rpool mirror /dev /disk /by-id /scsi-SATA_disk1-part1 /dev /disk /by-id /scsi-SATA_disk2-part1 (или замените зеркало на raidz, raidz2, или raidz3 и список разделов с дополнительных дисков).

Как вы понимаете, только первый раздел помещается в пул, остальные, созданные выше, вообще не упоминаются. Что я не понимаю, так это то, что другие разделы являются частью part1 и поэтому неявно доступны в пуле или вообще не используются для пула. Например, GRUB установлен в один из других разделов, в этом случае нет ссылки на пул ZFS:

# mkdosfs -F 32 -n EFI /dev/disk/by-id/scsi-SATA_disk1-part3
[...]
# echo PARTUUID=$(blkid -s PARTUUID -o value \
      /dev/disk/by-id/scsi-SATA_disk1-part3) \
      /boot/efi vfat nofail,x-systemd.device-timeout=1 0 1 >> /etc/fstab

Мне кажется, что part3 не является частью пула ZFS и поэтому используется отдельно. Но как это соответствует размеру part1? Переборка только один блок , кажется, не имеет особого смысла, а если part3 содержится в part1 каким - то образом, что это будет означать , что является частью пула ZFS, но имя без него, а?

Мне нужно понять, как обеспечивается избыточность для загрузочных разделов в установке с несколькими устройствами и разделами, как в приведенном выше примере. По сравнению с mdadm , общая цель - настройка RAID10, где всегда отражаются два устройства, а затем разделы этих устройств распределяются по всем зеркалам. В конце, с 6 дисками один будет в 3 раза больше хранилища для загрузочных разделов и корневого пула. ZFS в целом может это сделать, я просто не уверен, что входит в пул и распространяется ли избыточность на загрузочные разделы.

Мое нынешнее ощущение, что это не тот случай, и мне понадобится mdadm чтобы сделать загрузочные разделы избыточными. Просто потому, что приведенный выше пример GRUB обращается к некоторому конкретному диску и разделу, физическому устройству, а не к некоторому логическому зеркалу, созданному ZFS. Кроме того, этот раздел отформатирован с использованием FAT32 вместо ZFS. Это не означает, что ZFS вообще заботится о любом из этих разделов.

Итак, в конце концов, поддерживает ли ZFS установку RAID10, сопоставимую с возможной для mdadm включая все загрузочные разделы, root и все такое, правда?

1 ответ1

2

Каждый диск (по крайней мере, два, в любом случае) должен иметь загрузочный раздел, который не является частью пула ZFS, чтобы обеспечить избыточность в случае аппаратного сбоя.

В приведенных выше инструкциях он создает загрузочный раздел EFI как проактивную меру против будущих изменений (загрузочные разделы EFI - это толстые файловые системы FAT small-ish FAT, которые в основном загружают драйверы).

В любом случае, ни один из этих первых трех разделов не будет принадлежать zpool - только последний (самый большой).

Этот HOWTO для ZFS на Root для FreeBSD объясняет это более подробно. (Но разные команды могут только сделать это более запутанным ...)

Учтите следующее:

  • Ваша прошивка (BIOS, EFI, что угодно) ничего не знает, кроме как найти загрузочный
  • Там нет ничего, кроме JBOD (просто куча дисков)

Вы не можете загружаться с ZFS напрямую, потому что ваша прошивка не знает, что такое ZFS. Таким образом, должен существовать раздел, отличный от ZFS, с которого может загружаться прошивка, и поскольку он не защищен избыточностью ZFS, имеет смысл иметь его копии во многих местах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .