У меня такой zpool:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
wwn-0x5000cca266f3d8ee ONLINE 0 0 0
wwn-0x5000cca266f1ae00 ONLINE 0 0 0
Этим утром хозяин пережил событие (все еще копаюсь в нем. Нагрузка была очень высокой, и многое не работало, но я все еще мог в него попасть).
При перезагрузке хост завис во время ожидания загрузки на службах, которые полагались на данные из указанного выше пула.
подозревая проблему с пулом, я удалил один из дисков и снова перезагрузился. На этот раз хозяин подключился.
Скраб показал, что все данные на существующем диске в порядке. После этого я снова вставил извлеченный диск. Накопитель начал перенастройку, но проходит около 4% и затем перезагружается.
smartctl не показывает проблем ни с одним из дисков (ошибки не зарегистрированы, WHEN_FAILED пусто).
Однако я не могу сказать, какой диск восстанавливается, и на самом деле похоже, что с пулом все в порядке, и его вообще не нужно восстанавливать.
errors: No known data errors
root@host1:/var/log# zpool status
pool: zfspool
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Dec 8 12:20:53 2019
46.7G scanned at 15.6G/s, 45.8G issued at 15.3G/s, 5.11T total
0B resilvered, 0.87% done, 0 days 00:05:40 to go
config:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
wwn-0x5000cca266f3d8ee ONLINE 0 0 0
wwn-0x5000cca266f1ae00 ONLINE 0 0 0
errors: No known data errors
Как лучше всего выйти из этого цикла восстановления? В других ответах предлагается отсоединить диск, который восстанавливается, но, как я уже сказал, это не похоже ни на один из них.
редактировать:
События zpool - это около 1000 из следующих повторяющихся:
Dec 8 2019 13:22:12.493980068 sysevent.fs.zfs.resilver_start
version = 0x0
class = "sysevent.fs.zfs.resilver_start"
pool = "zfspool"
pool_guid = 0x990e3eff72d0c352
pool_state = 0x0
pool_context = 0x0
time = 0x5ded4d64 0x1d7189a4
eid = 0xf89
Dec 8 2019 13:22:12.493980068 sysevent.fs.zfs.history_event
version = 0x0
class = "sysevent.fs.zfs.history_event"
pool = "zfspool"
pool_guid = 0x990e3eff72d0c352
pool_state = 0x0
pool_context = 0x0
history_hostname = "host1"
history_internal_str = "func=2 mintxg=7381953 maxtxg=9049388"
history_internal_name = "scan setup"
history_txg = 0x8a192e
history_time = 0x5ded4d64
time = 0x5ded4d64 0x1d7189a4
eid = 0xf8a
Dec 8 2019 13:22:17.485979213 sysevent.fs.zfs.history_event
version = 0x0
class = "sysevent.fs.zfs.history_event"
pool = "zfspool"
pool_guid = 0x990e3eff72d0c352
pool_state = 0x0
pool_context = 0x0
history_hostname = "host1"
history_internal_str = "errors=0"
history_internal_name = "scan aborted, restarting"
history_txg = 0x8a192f
history_time = 0x5ded4d69
time = 0x5ded4d69 0x1cf7744d
eid = 0xf8b
Dec 8 2019 13:22:17.733979170 sysevent.fs.zfs.history_event
version = 0x0
class = "sysevent.fs.zfs.history_event"
pool = "zfspool"
pool_guid = 0x990e3eff72d0c352
pool_state = 0x0
pool_context = 0x0
history_hostname = "host1"
history_internal_str = "errors=0"
history_internal_name = "starting deferred resilver"
history_txg = 0x8a192f
history_time = 0x5ded4d69
time = 0x5ded4d69 0x2bbfa222
eid = 0xf8c
Dec 8 2019 13:22:17.733979170 sysevent.fs.zfs.resilver_start
version = 0x0
class = "sysevent.fs.zfs.resilver_start"
pool = "zfspool"
pool_guid = 0x990e3eff72d0c352
pool_state = 0x0
pool_context = 0x0
time = 0x5ded4d69 0x2bbfa222
eid = 0xf8d
...
Теперь это решено.
Ответ на этот вопрос дал следующий вопрос на github:
https://github.com/zfsonlinux/zfs/issues/9551
Красный флаг в этом случае, вероятно, является быстро зацикливающимся "starting deferred resilver"
события как видно в zpool events -v
Первым предложением в ссылке было отключить службу zfs-zed. В моем случае он изначально не был включен.
Второе предложение заключалось в проверке того, что в zpool активирована функция defer_resilver. Кажется, существует потенциальная проблема, когда пул обновляется без включения функций, соответствующих этому обновлению. Этот пул был перемещен с нескольких машин / операционных систем за последние 2 года или около того, поэтому имеет смысл, что он мог быть создан в более старой версии ZFS и находится в более новой версии ZFS на самом текущем хосте:
root@host1:/# zpool get all | grep feature
...
zfspool feature@resilver_defer disabled local
...
Увидев это, я включил эту функцию. Ссылка на github, похоже, предполагала, что это опасно, поэтому убедитесь, что у вас есть резервные копии.
root@host1:/# zpool set feature@resilver_defer=enabled zfspool
После этого статус zpool показал, что ресилвер прогрессирует дальше, чем раньше:
root@host1:/# zpool status
pool: zfspool
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Dec 8 13:53:43 2019
847G scanned at 2.03G/s, 396G issued at 969M/s, 5.11T total
0B resilvered, 7.56% done, 0 days 01:25:14 to go
config:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
wwn-0x5000cca266f3d8ee ONLINE 0 0 0
wwn-0x5000cca266f1ae00 ONLINE 0 0 0
errors: No known data errors