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