Рейтинг:1

Можно ли удалить диск из полосы ZFS?

флаг me

У меня есть большой пул в системе. Система является узлом хранения в кластере Hadoop, поэтому с чередованием все в порядке, потому что, если мы потеряем локальный пул, мы сможем восстановить данные на уровне кластера.

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

Я предполагаю, что ответ «нет», потому что традиционный RAID работает на блочном уровне, но, возможно, пул хранения ZFS достаточно умен, чтобы хотя бы попытаться переместить данные файла.

> список sudo zpool
НАЗВАНИЕ РАЗМЕР ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
бак 19,9 т 8,09 т 11,8 т - - 15% 40% 1,00x ДЕГРАДАЦИЯ -
> статус sudo zpool
  бассейн: танк
 состояние: ДЕГРАДАЦИЯ
статус: На одном или нескольких устройствах произошла ошибка, в результате чего данные
        коррупция. Приложения могут быть затронуты.
Действие: Восстановите рассматриваемый файл, если это возможно. В противном случае восстановить
        весь пул из резервной копии.
   см.: http://zfsonlinux.org/msg/ZFS-8000-8A
  сканирование: скраб восстановил 0B за 0 дней 02:45:39 с 0 ошибками в воскресенье 9 января 03:09:41 2022
конфигурация:

        ИМЯ СОСТОЯНИЕ ЧТЕНИЕ ЗАПИСЬ CKSUM
        бак ДЕГРАДИРОВАННЫЙ 0 0 0
          ata-ST2000DM001-1ER164_Z4Z0xxxx ОНЛАЙН 0 0 0
          ata-ST2000DM001-1ER164_Z4Z0xxxx DEGRADED 96 0 0 слишком много ошибок
          scsi-35000cca22dc7xxxx ОНЛАЙН 0 0 0
          scsi-35000cca22dc7xxxx ОНЛАЙН 0 0 0
          scsi-35000cca22dc8xxxx ОНЛАЙН 0 0 0
          scsi-35000cca22dc8xxxx ОНЛАЙН 0 0 0
          scsi-35000cca22dc7xxxx ОНЛАЙН 0 0 0
          scsi-35000cca22dc7xxxx ОНЛАЙН 0 0 0
          scsi-35000cca22dc7xxxx ОНЛАЙН 0 0 0
          ata-ST2000DM001-1ER164_Z4Z3xxxx ОНЛАЙН 0 0 0
          ata-ST2000NM0011_Z1P3xxxx ОНЛАЙН 0 0 0

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

Рейтинг:0
флаг ro

Во-первых, для работы пула ZFS необходимо, чтобы все виртуальные устройства верхнего уровня работали. Если один vdev отключится, вы потеряете доступ ко всем данным в пуле. Вы используете отдельные диски как vdev, поэтому, если этот диск выйдет из строя (в отличие от его текущего состояния «много ошибок чтения»), вам придется воссоздать весь пул с нуля.

Если вы работаете в Solaris или используете OpenZFS 0.8 или более позднюю версию, вы сможете запустить:

zpool удалить бак ata-ST2000DM001-1ER164_Z4Z0xxxx

Это может не сработать! И если это произойдет, это может привести к необратимому снижению производительности пула.

Удаление vdev требует, чтобы на оставшихся дисках было достаточно места для перемещенных данных. Похоже, у вас, вероятно, достаточно места в этом случае, но я упоминаю проблему для полноты картины.

По крайней мере, в OpenZFS существует ряд ограничений на то, когда вы можете удалять vdev. Вы можете удалить vdev, только если ваш пул состоит исключительно из однодисковых vdev и/или зеркальных vdev. Ваш пул соответствует требованиям, поскольку вы используете исключительно однодисковые виртуальные устройства. Но если бы у вас были какие-нибудь raidz, draid или vdev со специальным распределением на OpenZFS, вы бы не смогли этого сделать.

Последнее предостережение заключается в том, что удаление vdev влечет за собой постоянное снижение производительности в OpenZFS. OpenZFS запишет внутреннюю таблицу для всех блоков, которые ранее были на удаленном диске. Пока эти блоки существуют в пуле с этого момента, любой доступ к ним потребует косвенного поиска в таблице переназначения. Это может значительно замедлить произвольный доступ. Я недостаточно знаю о внутренностях Solaris ZFS, чтобы сказать, делает ли он что-то подобное.

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

Если у вас есть свободный слот для добавления диска, вам может быть лучше вставить запасной диск и использовать zpool заменить заменить неисправный диск новым. Это повлечет за собой ту же нагрузку чтения для копирования данных (и будет нести те же риски отказа одного диска во время процесса), но если это удастся, вам не нужно будет беспокоиться о потенциальных недостатках, связанных с удалением vdev.

В общем, ZFS может быть очень хрупкой, если вы используете ее по назначению — с однодисковыми виртуальными устройствами без резервирования. Есть старая шутка о том, что ноль в RAID0 означает, насколько вы должны заботиться о своих данных. Пул ZFS однодисковых vdev по существу аналогичен RAID0 с точки зрения безопасности данных. Отказ любого отдельного диска, скорее всего, приведет к потере всех ваших данных. Даже если вы можете позволить себе замену данных, убедитесь, что вы учитываете время, необходимое для этой замены. Если вы можете позволить себе снижение производительности в обмен на безопасность данных, рассмотрите возможность размещения дисков ваших будущих пулов в RAIDZ2 vdev. Если вы можете позволить себе использовать доступное дисковое пространство для обеспечения безопасности данных (и, возможно, для повышения производительности чтения), рассмотрите возможность размещения дисков ваших будущих пулов в зеркальных виртуальных устройствах.

Ответить или комментировать

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