Замена неисправного диска в пуле ZFS

У меня большой дисковый пул ZFS; 3 вложенных RAIDZ2 vdevs.

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

Разумеется, vdev, к которому принадлежал диск, стал деградированным, а диск недоступен.

Я отложил диск так …

zpool offline diskpool sdo 

Быстрое состояние «zpool» показывает диск как офлайн … пока все хорошо.

Я заменил диск и подтвердил, что на моем контроллере SATA обнаружен новый диск, каким он был. Затем я попытался получить linux для повторного сканирования шины scsi для обнаружения диска. Здесь моя первая проблема возникает.

Насколько мне известно, следующая команда используется для поиска правильной хост-шины для повторного сканирования …

 grep mpt /sys/class/scsi_host/host?/proc_name 

Однако в моей системе Centos 7.2 эта команда не имеет выхода. Это не ошибка, она просто дает мне нулевой вывод и ждет моей следующей команды.

Я использую несколько карт специалиста, которые позволяют мне подключать многие устройства sata. Обычно я сканирую автобус с помощью

 echo "- - -" > /sys/class/scsi_host/hostX/scan 

Где hostX – правильная хост-шина, но поскольку я не могу найти хост-шину, я не могу выполнить этот шаг.

Есть ли другой способ получить эту информацию или изменить команду в Centos 7.2 или что-то еще?

Кроме того, я решил перезагрузить машину, чтобы продолжить тестирование. После перезагрузки пул ZFS не был присоединен. Мне пришлось вручную импортировать его с помощью «zpool import diskpool». Это работало нормально, но, как ни странно, после его импорта, если я делаю статус «zpool», я больше не вижу идентификаторы устройств, как это мне показывалось раньше …

  raidz2-2 ONLINE 0 0 0 /dev/sdd ONLINE 0 0 0 /dev/sde ONLINE 0 0 0 /dev/sdf ONLINE 0 0 0 /dev/sdg ONLINE 0 0 0 

Вместо этого, похоже, серийные номера дисков …

  raidz2-2 ONLINE 0 0 0 ata-ST8000AS0002-1NA17Z_Z840DG66 ONLINE 0 0 0 ata-ST8000AS0002-1NA17Z_Z840DVE0 ONLINE 0 0 0 ata-ST8000AS0002-1NA17Z_Z840CQFB ONLINE 0 0 0 ata-ST8000AS0002-1NA17Z_Z840DP2V ONLINE 0 0 0 

Это вызовет проблему в будущем, как если бы еще один диск вышел из строя, я буду пытаться определить правильный диск для замены.

Есть ли способ, которым я могу переключиться обратно, чтобы снова показать идентификатор устройства?

Заранее спасибо!

  • Загрузите небольшое изображение в формате ZFS
  • Загрузка FreeBSD вместе с Linux
  • FreeBSD 10: Мне нужны тюрьмы?
  • Как приостановить MySQL, прежде чем делать снимок LVM / ZFS?
  • Любой способ сделать диск (ZFS) недоступным?
  • коэффициент дедупликации zfs «низкий»
  • Как я могу автоматически сделать файлы файлов ZFS mount shared / rshared?
  • Пул нельзя импортировать, поскольку он форматируется с использованием несовместимой версии
  • One Solution collect form web for “Замена неисправного диска в пуле ZFS”

    ZFS обнаруживает диски не по имени в файловой системе, а по их UUID, записанному на диск (или, по крайней мере, что-то похожее, а не на 100% уверенному, что это фактически UUID). Когда запускается zpool import , диски перечисляются, ZFS перестраивает все пулы и затем использует имя устройства (без фактического включения какого-либо каталога IME, обычно это что-то вроде sda а не /dev/sda ) в выводе zpool status . Таким образом, если вы перемещаете диски (или если ядро перемещает диски вокруг, что может случиться с современными ядрами на современном оборудовании), zpool все равно будет обнаруживать диски в том же порядке, что и раньше; диски, появившиеся вначале на выходе, снова появятся на выходе, даже если ядро ​​больше не перечисляет их в этом выпуске.

    Что случилось с вами здесь, вероятно, из-за того, что исходный zpool import не работал, ядро ​​могло завершить загрузку, udev сделал намного больше работы, а затем, когда вы сделали ручной zpool import , по умолчанию нумерация всех ваших дисков оказалась первой, а не основанной на sdX . Скорее всего, в следующий раз, когда вы перезагрузите машину, используемые имена вернутся к схеме sdX .

    К счастью, разрешение имен от одной схемы именования на другую довольно просто:

     wouter@gangtai:/dev/disk/by-id$ ls -l total 0 lrwxrwxrwx. 1 root root 9 Mar 31 18:15 ata-SAMSUNG_MZ7TE256HMHP-00004_S1RKNSAFC04685 -> ../../sda lrwxrwxrwx. 1 root root 10 Mar 31 18:15 ata-SAMSUNG_MZ7TE256HMHP-00004_S1RKNSAFC04685-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 9 Mar 31 18:15 wwn-0x50025388a089e89c -> ../../sda lrwxrwxrwx. 1 root root 10 Mar 31 18:15 wwn-0x50025388a089e89c-part1 -> ../../sda1 

    Существует множество схем именования ( by-id , by-uuid и by-path ), все из которых можно найти в /dev/disk .

    Сказав все это, я должен сказать, что я не согласен с вашим утверждением, что было бы легче выяснить, какой диск – это, глядя на имена sdX . Современные ядра больше не назначают статические имена устройств определенным устройствам; поэтому в современных дистрибутивах используются файлы fstab основе UUID, а не на основе sdX . Серийный номер, по сути, является гораздо более надежным способом выяснить, что является сломанным диском; в конце концов, это написано на фактическом диске , в отличие от имени sdX , которое может отличаться от загрузки для загрузки (я действительно столкнулся с этим в ZFS-окне с шестнадцатью жесткими дисками). Любой из других методов ( by-uuid , by-id , и особенно by-path в корпоративных дисках с несколькими дисками) гораздо надежнее.

    Linux и Unix - лучшая ОС в мире.