Вопрос или проблема
Я недавно тестировал/запускал ZFS без каких-либо проблем до сегодняшнего дня, когда при проведении планового технического обслуживания сервера (перезагрузка) обнаружил, что пул не работает после перезагрузки.
Я пытался принудительно импортировать, но, как я вижу ниже, указано Пул не может быть импортирован из-за поврежденных устройств или данных
, это действительно правда на 100%?
Проблем с SMART на любом диске не обнаружено.
pool: pool-data
id: 14453175902998199895
state: FAULTED
status: Метаинформация пула повреждена.
action: Пул не может быть импортирован из-за поврежденных устройств или данных.
Пул может быть активен на другой системе, но может быть импортирован с использованием
флага '-f'.
см.: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-72
config:
pool-data FAULTED поврежденные данные
raidz1-0 ONLINE
sdc ONLINE
sdi ONLINE
sdb ONLINE
sdj ONLINE
sdd ONLINE
sde ONLINE
sdf ONLINE
sdg ONLINE
sdk ONLINE
sdh ONLINE
zdb
pool-data:
version: 5000
name: 'pool-data'
state: 0
txg: 519077
pool_guid: 14453175902998199895
errata: 0
hostid: 1738607750
hostname: 'NAS-01'
com.delphix:has_per_vdev_zaps
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: 14453175902998199895
create_txg: 4
children[0]:
type: 'raidz'
id: 0
guid: 4655233045005615974
nparity: 1
metaslab_array: 128
metaslab_shift: 34
ashift: 9
asize: 100008161443840
is_log: 0
create_txg: 4
com.delphix:vdev_zap_top: 65
children[0]:
type: 'disk'
id: 0
guid: 1507687035392982689
path: '/dev/sdc1'
devid: 'ata-HGST_HUH721010ALE604_2YGPR21D-part1'
phys_path: 'pci-0000:05:00.0-ata-2.0'
whole_disk: 1
DTL: 398
create_txg: 4
com.delphix:vdev_zap_leaf: 66
children[1]:
type: 'disk'
id: 1
guid: 16752044042809806952
path: '/dev/sdd1'
devid: 'ata-HGST_HUH721010ALE604_7JKK83XC-part1'
phys_path: 'pci-0000:04:00.0-ata-1.0'
whole_disk: 1
DTL: 397
create_txg: 4
com.delphix:vdev_zap_leaf: 67
children[2]:
type: 'disk'
id: 2
guid: 14913161468002727643
path: '/dev/sdb1'
devid: 'ata-HGST_HUH721010ALE604_2TKY354D-part1'
phys_path: 'pci-0000:00:1f.2-ata-2.0'
whole_disk: 1
DTL: 396
create_txg: 4
com.delphix:vdev_zap_leaf: 68
children[3]:
type: 'disk'
id: 3
guid: 7507268696590144628
path: '/dev/sde1'
devid: 'ata-HGST_HUH721010ALE604_7JKW16BC-part1'
phys_path: 'pci-0000:06:00.0-ata-2.0'
whole_disk: 1
DTL: 395
create_txg: 4
com.delphix:vdev_zap_leaf: 69
children[4]:
type: 'disk'
id: 4
guid: 1678307232513936730
path: '/dev/sdf1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCG3WR8N-part1'
phys_path: 'pci-0000:05:00.0-ata-1.0'
whole_disk: 1
DTL: 394
create_txg: 4
com.delphix:vdev_zap_leaf: 70
children[5]:
type: 'disk'
id: 5
guid: 9207660239927187273
path: '/dev/sdg1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCG4PR1N-part1'
phys_path: 'pci-0000:03:00.0-ata-2.0'
whole_disk: 1
DTL: 393
create_txg: 4
com.delphix:vdev_zap_leaf: 71
children[6]:
type: 'disk'
id: 6
guid: 4690065413242099082
path: '/dev/sdh1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCG6929N-part1'
phys_path: 'pci-0000:03:00.0-ata-1.0'
whole_disk: 1
DTL: 392
create_txg: 4
com.delphix:vdev_zap_leaf: 72
children[7]:
type: 'disk'
id: 7
guid: 18184749073390403542
path: '/dev/sdi1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCGXPVUP-part1'
phys_path: 'pci-0000:00:1f.2-ata-1.0'
whole_disk: 1
DTL: 391
create_txg: 4
com.delphix:vdev_zap_leaf: 73
children[8]:
type: 'disk'
id: 8
guid: 6330580480364133578
path: '/dev/sdk1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCJMSNYP-part1'
phys_path: 'pci-0000:04:00.0-ata-2.0'
whole_disk: 1
DTL: 388
create_txg: 4
com.delphix:vdev_zap_leaf: 74
children[9]:
type: 'disk'
id: 9
guid: 15327784406027912491
path: '/dev/sdj1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCHG44TP-part1'
phys_path: 'pci-0000:06:00.0-ata-1.0'
whole_disk: 1
DTL: 385
create_txg: 4
com.delphix:vdev_zap_leaf: 75
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
zdb -l /dev/sdb1
------------------------------------
LABEL 0
------------------------------------
version: 5000
name: 'pool-data'
state: 0
txg: 519077
pool_guid: 14453175902998199895
errata: 0
hostid: 1738607750
hostname: 'NAS-01'
top_guid: 4655233045005615974
guid: 14913161468002727643
vdev_children: 1
vdev_tree:
type: 'raidz'
id: 0
guid: 4655233045005615974
nparity: 1
metaslab_array: 128
metaslab_shift: 34
ashift: 9
asize: 100008161443840
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 1507687035392982689
path: '/dev/sdc1'
devid: 'ata-HGST_HUH721010ALE604_2YGPR21D-part1'
phys_path: 'pci-0000:05:00.0-ata-2.0'
whole_disk: 1
DTL: 398
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 16752044042809806952
path: '/dev/sdd1'
devid: 'ata-HGST_HUH721010ALE604_7JKK83XC-part1'
phys_path: 'pci-0000:04:00.0-ata-1.0'
whole_disk: 1
DTL: 397
create_txg: 4
children[2]:
type: 'disk'
id: 2
guid: 14913161468002727643
path: '/dev/sdb1'
devid: 'ata-HGST_HUH721010ALE604_2TKY354D-part1'
phys_path: 'pci-0000:00:1f.2-ata-2.0'
whole_disk: 1
DTL: 396
create_txg: 4
children[3]:
type: 'disk'
id: 3
guid: 7507268696590144628
path: '/dev/sde1'
devid: 'ata-HGST_HUH721010ALE604_7JKW16BC-part1'
phys_path: 'pci-0000:06:00.0-ata-2.0'
whole_disk: 1
DTL: 395
create_txg: 4
children[4]:
type: 'disk'
id: 4
guid: 1678307232513936730
path: '/dev/sdf1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCG3WR8N-part1'
phys_path: 'pci-0000:05:00.0-ata-1.0'
whole_disk: 1
DTL: 394
create_txg: 4
children[5]:
type: 'disk'
id: 5
guid: 9207660239927187273
path: '/dev/sdg1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCG4PR1N-part1'
phys_path: 'pci-0000:03:00.0-ata-2.0'
whole_disk: 1
DTL: 393
create_txg: 4
children[6]:
type: 'disk'
id: 6
guid: 4690065413242099082
path: '/dev/sdh1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCG6929N-part1'
phys_path: 'pci-0000:03:00.0-ata-1.0'
whole_disk: 1
DTL: 392
create_txg: 4
children[7]:
type: 'disk'
id: 7
guid: 18184749073390403542
path: '/dev/sdi1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCGXPVUP-part1'
phys_path: 'pci-0000:00:1f.2-ata-1.0'
whole_disk: 1
DTL: 391
create_txg: 4
children[8]:
type: 'disk'
id: 8
guid: 6330580480364133578
path: '/dev/sdk1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCJMSNYP-part1'
phys_path: 'pci-0000:04:00.0-ata-2.0'
whole_disk: 1
DTL: 388
create_txg: 4
children[9]:
type: 'disk'
id: 9
guid: 15327784406027912491
path: '/dev/sdj1'
devid: 'ata-WDC_WD102KFBX-68M95N0_VCHG44TP-part1'
phys_path: 'pci-0000:06:00.0-ata-1.0'
whole_disk: 1
DTL: 385
create_txg: 4
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
labels = 0 1 2 3
Операционная система: Debian GNU/Linux 12 (bookworm)
Ядро: Linux 6.1.0-30-amd64
Архитектура: x86-64
zfs-2.1.11-1+deb12u1
zfs-kmod-2.1.11-1+deb12u1
Ответ или решение
Теория
ZFS (Zettabyte File System) — это усовершенствованная файловая система с функциями управления томами, первоначально разработанная Sun Microsystems. Она имеет множество преимуществ, таких как целостность данных, защита от повреждений, эффективно выполняет активацию снимков и клонирование. Однако, как и любая другая система, она не застрахована от неисправностей, особенно при работе на уровне оборудования или в случае неожиданного отключения питания.
Состояние FAULTED по отношению к ZFS pool указывает на серьезные проблемы, такие как повреждение метаданных, которые не позволяют импортировать пул. В вашем случае, несмотря на то, что все устройства RAIDZ1-0 находятся в состоянии ONLINE, сама конфигурация пула FAULTED, что указывает на повреждение метаданных.
Пример
Вы столкнулись с ситуацией, когда после простого перезагрузки сервера ZFS pool перестал работать. Это типичный сценарий, особенно если не были предприняты меры по защите от сбоя электропитания или если произошли незаметные аппаратные сбои. В вашем случае, несмотря на то, что SMART-отчеты показывают, что все диски в норме, метаданные самого пула оказались повреждены. Стандартными средствами восстановления такие повреждения устранить сложно, и принудительный импорт пула может быть рискованным, поскольку может привести к потере данных, если будет выполнен без должной подготовки.
Применение
-
Резервное копирование: Перед выполнением каких-либо восстановительных действий рекомендуется создать резервные копии данных с дисков, если это возможно. Такие действия можно сделать с использованием
dd
или другого инструмента для побайтного копирования, чтобы иметь возможность вернуться к исходному состоянию. -
Идентификация проблемы: Внимательно изучите вывод
zdb
, чтобы понять, какие части метаданных повреждены. Это может быть связано с конкретными областями диска, которые стоит проверить. Например, можно воспользоваться утилитами для проверки состояния файловой системы или физического расположения дисков. -
Принудительный импорт пула: Если резервное копирование произведено и все альтернативные решения исчерпаны, можно попытаться выполнить принудительный импорт пула с флагом
-f
. Имейте в виду, что это может привести к необратимой потере данных. Убедитесь, что сервер и все его компоненты полностью исправны, включая наличие источника бесперебойного питания и стабильность электричества. -
Восстановление данных: Если принудительный импорт привел к частичному восстановлению пула, стоит сразу же скопировать все доступные данные на другой носитель. После этого можно попробовать восстановить оставшиеся данные специальными утилитами восстановления для ZFS или воспользоваться услугами специализированных компаний.
-
Проверка оборудования: Проверьте, не произошла ли ошибка из-за аппаратных проблем, даже если результаты SMART-тестов нормальные. Проблемы могут крыться в материнской плате, соединениях контроллера или других компонентах. Возможно, имеет смысл заменить кабели SATA, проверить работу контроллера и другие аппаратные аспекты.
-
Профилактика: Чтобы избежать подобных ситуаций в будущем, настоятельно рекомендуется регулярно создавать моментальные снимки (
snapshots
) и поддерживать актуальную резервную копию данных. Настройте мониторинг системы для постоянного наблюдения за состоянием пула и устройствами.
Поддержание работоспособного и надежного ZFS пула требует регулярного обслуживания и своевременного реагирования на любые предупреждающие сигналы. Система ZFS предоставляет множество инструментов для диагностики и восстановления, но конечный успех зависит от тщательного выполнения профилактических мер и правильного подхода к устранению проблем.