Во-первых, для работы пула 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. Если вы можете позволить себе использовать доступное дисковое пространство для обеспечения безопасности данных (и, возможно, для повышения производительности чтения), рассмотрите возможность размещения дисков ваших будущих пулов в зеркальных виртуальных устройствах.