ZFS: Помогите импортировать zpool после обновления Ubuntu с 13.04 до 13.10, идентификаторы устройств были изменены

Я обновил Ubuntu с версии 13.04 до версии 13.10, только чтобы обнаружить, что идентификаторы дисков SATA изменились, и мой пул ZFS теперь выходит из строя.

В новой Ubuntu 13.10 идентификаторы дисков теперь ata- * вместо scsi-SATA _ *.

Это состояние пула после обновления:

  pool: nestpool
 state: UNAVAIL
status: One or more devices could not be used because the label is missing 
    or invalid.  There are insufficient replicas for the pool to continue
    functioning.
action: Destroy and re-create the pool from
    a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

    NAME                                                STATE     READ WRITE CKSUM
    nestpool                                            UNAVAIL      0     0     0  insufficient replicas
      raidz2-0                                          UNAVAIL      0     0     0  insufficient replicas
        scsi-SATA_WDC_WD4000F9YZ-_WD-WCC1F0046946       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WCC4A0026423       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0011145       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0049294       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0051143       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0051756       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0056625       UNAVAIL      0     0     0
        scsi-SATA_WDC_WD4000F9YZ-_WD-WMC1F0200560       UNAVAIL      0     0     0
    logs
      mirror-1                                          UNAVAIL      0     0     0  insufficient replicas
        scsi-SATA_Samsung_SSD_840S1ATNEAD707062H-part2  UNAVAIL      0     0     0
        scsi-SATA_Samsung_SSD_840S1ATNEAD707066K-part3  UNAVAIL      0     0     0

После очень долгих исследований в Интернете я начал следующую процедуру:

Сначала экспортировал пул, используя: zpool export nestpool

Затем попытался импортировать обратно пул, используя: zpool import -m -f -d / dev / disk / by-id nestpool

( Я также пытался использовать все комбинации -m, -f и -d и без них, а также использовать идентификатор вместо имени zpool)

Но импорт завершается неудачно с сообщением: не может импортировать 'nestpool': одно или несколько устройств в настоящее время недоступны

Это текущий вывод zpool import

   pool: nestpool
     id: 3947768928242827823
  state: DEGRADED
 status: One or more devices contains corrupted data.
 action: The pool can be imported despite missing or damaged devices.  The
    fault tolerance of the pool may be compromised if imported.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
 config:

    nestpool                                                DEGRADED
      raidz2-0                                              ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WCC1F0046946          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WCC4A0026423          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0011145          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0049294          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0051143          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0051756          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0056625          ONLINE
        ata-WDC_WD4000F9YZ-09N20L0_WD-WMC1F0200560          ONLINE
    cache
      ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H-part1
    logs
      mirror-1                                              UNAVAIL  insufficient replicas
        ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H      UNAVAIL  corrupted data
        ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707066K      UNAVAIL

Неправильно определены разделы журнала. они должны быть ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H-part2 и ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707066K-part3 . И аргумент -m во время импорта не помогает.

Я не могу найти способ указать zpool import использовать другой путь / идентификатор для устройств журнала. Любая помощь и идея для решения этой проблемы будет высоко ценится. Что еще я могу сделать, чтобы восстановить этот пул?

(Вот текущий вывод gdisk -l для всех дисков: http://pastebin.com/bBec21WN )

1
задан 6 January 2014 в 00:38

1 ответ

Поскольку все по-прежнему оставалось нетронутым, и единственной проблемой, препятствовавшей импорту пула, было неправильное распознавание разделов, используемых для устройств журналов, решение состоит в том, чтобы создать временные символические ссылки в / dev / disk / by-id для отсутствующих перегородки.

В моем случае, как это:

ln -sf ../../sda2 ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707062H
ln -sf ../../sdb3 ata-Samsung_SSD_840_PRO_Series_S1ATNEAD707066K

После этого в моем случае zpool import изменил старые неправильные идентификаторы на новые, которые теперь присутствуют в Ubuntu 13.10 (каждый диск и раздел теперь имеет 2 идентификатора), и мне пришлось также создавать символические ссылки для них, например:

ln -sf ../../sda2 wwn-0x50025385503e8531
ln -sf ../../sdb3 wwn-0x50025385503e8535

После этого zpool import автоматически начал распознавать правильные разделы.

Для импорта я запустил команду:

zpool import -f nestpool

И пул был импортирован. НЕ ЗАБУДЬТЕ исправить временные ссылки! Также после перезапуска сервера ссылки будут воссозданы и исправлены.

В моем случае zpool распознал правильные разделы во время импорта, и никаких дальнейших действий не требовалось. В противном случае необходимо удалить устройства ZIL и заново добавить их обратно, прежде чем что-либо еще!

Не забудьте запустить scrub, и все должно быть на месте.

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

0
ответ дан 6 January 2014 в 00:38

Другие вопросы по тегам:

Похожие вопросы: