Назад | Перейти на главную страницу

Создать пул zfs, позволяющий заменить один из дисков на диск чуть меньшего размера

Это вопрос относительно zfs в Linux (CentOS 7). У меня очень простая установка с двумя дисками по 8 ТБ, один из которых является зеркалом другого.

zpool create -f -o ashift = 12 $ zpoolName зеркало $ disksById

Если необходимо заменить один из дисков, размер заменяемого диска должен быть равен или больше, чем размер самого маленького из двух дисков в конфигурации, согласно страницам руководства zpool. Из того, что я понял, часто бывает так, что точный размер обычно немного отличается между дисками разных марок и моделей (и версий модели), даже если все они имеют маркировку 8 ТБ. Тем не мение, Я хотел бы иметь возможность заменить его любым другим диском на 8 ТБ, не обязательно той же марки и модели.

Как мне этого добиться?

Я ожидал, что для команды zpool create будет добавлена ​​опция, чтобы не весь диск использовался для пула, но оставлял некоторую слабину, однако я не могу найти такой вариант. Единственное предложение, которое я видел, - это разбить диск на разделы перед созданием пула, создать один раздел «пул» и один «резервный» раздел, но я читал, что это повлияет на производительность диска, поскольку кеш диска не может использоваться должным образом. zfs, поэтому я полагаю, что хотел бы этого избежать.

Единственное предложение, которое я видел, - это разбить диск на разделы перед созданием пула, создать один раздел «пул» и один «резервный» раздел.

Это правильный ответ.

но я читал, что это повлияет на производительность диска, поскольку кеш диска не может использоваться должным образом с помощью zfs.

Это недоразумение. Использование раздела, а не полного диска влияет на производительность только в том случае, если раздел не выровнен, что обычно требует определенного реального определения со стороны пользователя, если вы используете не очень современные редакторы разделов. Linux и BSD fdisk, sfdisk и gparted - все понимают границы разделов и работают в них, если прямо не вынуждены этого не делать.

Кроме того, если вы внимательно посмотрите на диск, который был загружен в zfs целиком, вы заметите, что zfs фактически разделил его. Пример:

root@banshee:~# zpool status data
  pool: data
 state: ONLINE
  scan: scrub repaired 0 in 27h54m with 0 errors on Mon Mar 13 05:18:20 2017
config:

    NAME                                           STATE     READ WRITE CKSUM
    data                                           ONLINE       0     0     0
      mirror-0                                     ONLINE       0     0     0
        wwn-0x50014ee206fd9549  ONLINE       0     0     0
        wwn-0x50014ee2afb368a9    ONLINE       0     0     0
      mirror-1                                     ONLINE       0     0     0
        wwn-0x50014ee25d2510d4  ONLINE       0     0     0
        wwn-0x5001517bb29d5333  ONLINE       0     0     0

errors: No known data errors

root@banshee:~# ls -l /dev/disk/by-id | grep 510d4
lrwxrwxrwx 1 root root  9 Mar 22 15:57 wwn-0x50014ee25d2510d4 -> ../../sdd
lrwxrwxrwx 1 root root 10 Mar 22 15:57 wwn-0x50014ee25d2510d4-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Mar 22 15:57 wwn-0x50014ee25d2510d4-part9 -> ../../sdd9

Как видите, ZFS уже разбила необработанные диски в пуле. Пул использует раздел 1; перегородка 9 оставлена ​​слабиной.

root@banshee:~# sfdisk -d /dev/sdd
label: gpt
label-id: B2DED677-DB67-974C-80A6-070B72EB8CFB
device: /dev/sdd
unit: sectors
first-lba: 34
last-lba: 3907029134

/dev/sdd1 : start=        2048, size=  3907010560, type=6A898CC3-1DD2-11B2-99A6-080020736631, uuid=A570D0A4-EA32-F64F-80D8-7479D918924B, name="zfs"
/dev/sdd9 : start=  3907012608, size=       16384, type=6A945A3B-1DD2-11B2-99A6-080020736631, uuid=85D0957B-65AF-6B4A-9F1B-F902FE539170

sdd9 составляет 16384 сектора. Это диск размером 4 КБ, поэтому получается 64 МБ, и любой диск, который не более чем на 63 МБ меньше существующего, должен подойти в качестве замены этому, если он выйдет из строя.

Единственное предложение, которое я видел, - это разбить диск на разделы перед созданием пула.

Это действительно единственное решение. Вам не нужно создавать второй небольшой раздел, это пространство может оставаться нераспределенным. Поскольку разница между дисками обычно довольно мала, вы теряете всего несколько мегабайт, что не является проблемой для дисков 8 ТБ.

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