Увеличить ZFS RAID-Z[123] без ухудшения качества?

Увеличить ZFS RAID-Z[123] без ухудшения качества?

Я знаю, что на ZFS единственный способ увеличить RAID-Z (или RAID-Z2 или RAID-Z3) vdev — это заменить диски на более крупные; изменить геометрию невозможно. Однако возможно ли это сделать без ухудшения массива в процессе?

В качестве примера предположим, что у меня есть массив RAID-Z с 4 дисками: 1x2 ТБ и 3x1 ТБ дают 3 ТБ полезного пространства. При всех работающих дисках я покупаю еще 3 по 2 ТБ, чтобы расширить массив (до 6 ТБ полезного пространства). Если я удалю и заменю каждый из 1 ТБ на 2 ТБ, по одному за раз, чтобы заставить каждый resilver, то я буду ненужно и многократно ухудшать массив и увеличивать риск отказа в процессе.

Я надеюсь, что возможно зеркалировать каждый диск перед его заменой. То есть добавить первые 2 ТБ в запасной отсек, зеркалировать в него первый диск 1 ТБ, затем удалить 1 ТБ и вставить 2 ТБ в слот удаленного диска; затем повторить для второго и третьего дисков по 1 ТБ. Это может даже потенциально устранить необходимость в повторном переносе данных — или пересчете четности, в любом случае.

Возможно ли такое?

решение1

Предложенное вами решение возможно, но имеет ряд существенных недостатков:

  • zpool import -o readonly=on ${YOUR_ZFS_POOL}Во время клонирования диска невозможно ничего записать в пул ( ).
  • Вам необходимо экспортировать пул ( zpool export ${YOUR_ZFS_POOL}) для каждого отключаемого диска.

После клонирования vdev-диска необходимо:

  1. Экспортируйте пул ( zpool export ${YOUR_ZFS_POOL}).
  2. Удалите ( zpool labelclear ${OLD_DISK_DEVICE}) или физически удалите старый диск.
    Предупреждение:Если вы удалите диск, отменить действие будет невозможно.
  3. При необходимости увеличьте раздел vdev на новом диске.
  4. Импортируйте пул ( zpool import ${YOUR_ZFS_POOL}).
    Предупреждение:После этого момента отмена невозможна. Старый диск больше не может быть включен в тот же пул.
  5. Расширьте диск ( zpool online -e ${NEW_DISK_VDEV}).

После того, как вы повторите эти шаги для каждого заменяемого диска, новая емкость должна вступить в силу.


Встроенная функция замены ZFS разработана для того, чтобы избежать всех этих дополнительных сложностей, описанных в разделе выше. Если вы боитесь повредить свой RAID-Z zpool во время resilver, возможно, вам следует:

  • создали пул с большей избыточностью (RAID-Z2, RAID-Z3) или
  • сохраняйте резервную копию пула в другом месте, пока расширяете массив.

Кроме того, если диск действительно выйдет из строя, будете ли вы все равно довольствоваться RAID-Z?

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

Использование zpool replaceбудет:

  • будет быстрее*, поскольку будет скопировано только используемое хранилище, а не все блочное устройство
    *, если у вас естьфункция последовательной очистки/пересеребряной очистки
  • не будет простоев, так как пул будет полностью работоспособен, пока происходит восстановление
  • исключить человеческий фактор, поскольку вы будете использовать ожидаемый ZFS рабочий процесс замены диска

Связанный контент