Невозможно восстановить пул zfs без zfs import
работы. Однако zfs import
это не инструмент для восстановления после ошибок, и поэтому общая стратегия состоит в том, чтобы иметь резервную копию вместо того, чтобы полагаться на zfs
отказоустойчивость. Я добавил https://github.com/hiliev/py-zfs-rescue для поддержки пулов Linux: https://github.com/eiselekd/dumpbin-py-zfs-rescue . С этим я смог восстановить мои диски.
Как восстановить raidz с 3 диска, который вышел из строя
У меня есть raidz vdev с 3 дисками. Disk0 теперь не удалось, и я пытаюсь восстановить, однако я не могу запустить zpool import
. Disk0 все еще функционирует, однако таблица разделов была повреждена, и я попытался восстановить.
$ zpool import pool: epool id: 15752543265619539307 state: FAULTED status: One or more devices contains corrupted data. action: The pool cannot be imported due to damaged devices or data. The pool may be active on another system, but can be imported using the '-f' flag. see: http://zfsonlinux.org/msg/ZFS-8000-5E config: epool FAULTED corrupted data raidz1-0 DEGRADED ata-WDC_WD30EZRX-00D8PB0_WD-WMC4N1642572-part1 UNAVAIL corrupted data ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N1KPRKPX-part1 ONLINE ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7ZXC1E0-part1 ONLINE
Есть ли шанс отремонтировать эту настройку?
$ zdb -l /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N1KPRKPX-part1 ------------------------------------ LABEL 0 ------------------------------------ version: 5000 name: 'epool' state: 0 txg: 108340 pool_guid: 157525$43265619539307 errata: 0 hostname: 'eiselekd-lnx' top_guid: 5366409938038884073 guid: 3063814570901399057 vdev_children: 1 vdev_tree: type: 'raidz' id: 0 guid: 5366409938038884073 nparity: 1 metaslab_array: 35 metaslab_shift: 36 ashift: 12 asize: 9001706717184 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 9231358437407247535 path: '/dev/disk/by-id/ata-WDC_WD30EZRX-00D8PB0_WD-WMC4N1642572-part1' whole_disk: 0 create_txg: 4 children[1]: type: 'disk' id: 1 guid: 3063814570901399057 path: '/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N1KPRKPX-part1' whole_disk: 0 DTL: 136 create_txg: 4 children[2]:/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7ZXC1E0-part1 type: 'disk' id: 2 guid: 10884448206527621454 path: '/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7ZXC1E0-part1' whole_disk: 0 create_txg: 4 features_for_read: com.delphix:hole_birth com.delphix:embedded_data labels = 0 1 2 3
В неисправном разделе не отображаются метки:
# zdb -l /dev/disk/by-id/ata-WDC_WD30EZRX-00D8PB0_WD-WMC4N1642572-part1 -------------------------------------------- LABEL 0 -------------------------------------------- failed to unpack label 0 -------------------------------------------- LABEL 1 -------------------------------------------- failed to unpack label 1 -------------------------------------------- LABEL 2 -------------------------------------------- failed to unpack label 2 -------------------------------------------- LABEL 3 -------------------------------------------- failed to unpack label 3
однако есть Ueberblocks (магический 0cb1ba00, найденный в начале и конце раздела): я использовал zfs_revert-0.1.py ( https://gist.github.com/jshoward/5685757 ), тоже посмотрите информацию txg для disk0 и чего-то еще на диске 0 кажется там.
TXG TIME TIMESTAMP BLOCK ADDRESSES 108173 08 Feb 2018 02:24:11 1518053051 [360, 872, 5860494696, 5860495208] 108193 08 Feb 2018 02:25:59 1518053159 [264, 776, 5860494600, 5860495112] 108199 08 Feb 2018 02:26:30 1518053190 [312, 824, 5860494648, 5860495160] 108219 07 Mar 2018 16:44:43 1520437483 [472, 984, 5860494808, 5860495320] 108307 08 Mar 2018 15:58:41 1520521121 [408, 920, 5860494744, 5860495256] 108313 09 Mar 2018 14:25:03 1520601903 [456, 968, 5860494792, 5860495304] 108319 12 Mar 2018 17:33:00 1520872380 [504, 1016, 5860494840, 5860495352] 108325 14 Mar 2018 19:23:31 1521051811 [296, 808, 5860494632, 5860495144] 108331 15 Mar 2018 14:36:25 1521120985 [344, 856, 5860494680, 5860495192] 108337 15 Mar 2018 20:07:58 1521140878 [392, 904, 5860494728, 5860495240]
Так что я думаю, что, возможно, разбиение переместило начало раздела. Не уверен Я сделал, dd if=/dev/sda | strings | grep WCC4N1KPRKPX-part1
однако, информация о метке диска не там ...
Можно ли заменить ata-WDC_WD30EZRX-00D8PB0_WD-WMC4N1642572-part1 новым диском и восстановителем? Http://zfsonlinux.org/msg/ZFS-8000-5E звено в ZFS импортировать выход оленья кожа дают мне надежду, но все же ....
2 ответа на вопрос
Ваш пул состоит из одного raidz1 vdev, который может пережить потерю любого отдельного устройства, и одно устройство в нем «повреждено», поэтому все, что нужно для импорта пула, должно быть прямо здесь.
Я не уверен, почему ZFS не импортировала ваш пул сразу и просто пометила одно устройство как UNAVAIL, но вы пытались использовать -f
в качестве вывода подсказок zpool import
? Это первое, что я попробую.
После того, как пул импортирован, zpool offline
проблемный раздел должен быть тривиальным, или даже лучше просто zpool replace
переписать данные и восстановить избыточность.
В качестве примечания я рекомендую не использовать разделы с ZFS, если у вас нет для этого веских причин. Просто дайте ZFS весь диск (например /dev/disk/by-id/ata-WDC_WD30EZRX-00D8PB0_WD-WMC4N1642572
) и дайте ему справиться с разметкой самостоятельно.
Похожие вопросы
-
4
Могу ли я удалить раздел Boot Camp из моего MacBook?
-
3
Выполнить восстановление заводских настроек на новый диск на компьютере Dell?
-
3
Клонировать все разделы диска?
-
-
6
Бесплатный инструмент для миграции разделов
-
6
Можно ли безопасно изменить размер раздела? Windows XP, NTFS
-
9
Перемещение папки пользователя в Windows Vista / 7 в другой раздел
-
3
Можно ли увеличить объем в разделе Mac OS X?
-
2
Мой новый раздел не пуст
-
6
Нужен ли раздел по какой-либо веской причине, если у меня только одна загрузка?
-
3
Преобразование виртуальной машины Windows в физический раздел