Обновлен Ubuntu, все диски в одном zpool отмечены как недоступные


8

Я только что обновил Ubuntu 14.04, и у меня было два пула ZFS на сервере. У меня была небольшая проблема в борьбе с драйвером ZFS и версией ядра, но теперь это решено. Один бассейн подключился к сети и смонтирован нормально. Другой не сделал. Основное различие между инструментом состоит в том, что один представляет собой просто пул дисков (хранилище видео / музыки), а другой - набор raidz (документы и т. Д.).

Я уже пытался экспортировать и повторно импортировать пул, но безрезультатно, попытка импорта дает мне это:

root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/
   pool: storage
     id: 15855792916570596778
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

        storage                                      UNAVAIL  insufficient replicas
          raidz1-0                                   UNAVAIL  insufficient replicas
            ata-SAMSUNG_HD103SJ_S246J90B134910       UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523  UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969  UNAVAIL

Символические ссылки для тех, кто /dev/disk/by-idсуществует, также существуют:

root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51*
lrwxrwxrwx 1 root root  9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9

Осматривая различные /dev/sd*перечисленные устройства, они кажутся правильными (3 диска по 1 ТБ, которые были в массиве raidz).

Я запустил zdb -lна каждом диске, сбросив его в файл и запустив diff. Единственная разница в 3 - это поля guid (которые, я полагаю, ожидаются). Все 3 ярлыка на каждом в основном идентичны и выглядят следующим образом:

version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: 15855792916570596778
hostname: 'kyou'
top_guid: 1683909657511667860
guid: 8815283814047599968
vdev_children: 1
vdev_tree:
    type: 'raidz'
    id: 0
    guid: 1683909657511667860
    nparity: 1
    metaslab_array: 33
    metaslab_shift: 34
    ashift: 9
    asize: 3000569954304
    is_log: 0
    create_txg: 4
    children[0]:
        type: 'disk'
        id: 0
        guid: 8815283814047599968
        path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1'
        whole_disk: 1
        create_txg: 4
    children[1]:
        type: 'disk'
        id: 1
        guid: 18036424618735999728
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1'
        whole_disk: 1
        create_txg: 4
    children[2]:
        type: 'disk'
        id: 2
        guid: 10307555127976192266
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1'
        whole_disk: 1
        create_txg: 4
features_for_read:

Тупо, у меня нет последней резервной копии этого пула. Тем не менее, пул был в порядке до перезагрузки, и Linux видит диски нормально (у меня сейчас работает smartctl для двойной проверки)

Итак, в итоге:

  • Я обновил Ubuntu и потерял доступ к одному из двух моих zpools.
  • Разница между пулами в том, что был JBOD, другой был в страхе.
  • Все диски в не монтируемом zpool помечены как UNAVAIL, без замечаний по поврежденным данным.
  • Оба пула были созданы с дисками, на которые ссылаются из /dev/disk/by-id/.
  • Симлинки с /dev/disk/by-idразных /dev/sdустройств вроде бы правильные
  • zdb можете читать этикетки с дисков.
  • Пул уже пытался экспортировать / импортировать, и он не может импортировать снова.

Есть ли какая-то черная магия, которую я могу вызвать через zpool / zfs, чтобы вернуть эти диски в разумный массив? Могу ли я работать zpool create zraid ...без потери моих данных? Мои данные все равно пропали?

Ответы:


5

После много-много гугля на это конкретное сообщение об ошибке я получаю:

root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use

(Включено здесь для потомков и поисковых индексов) Я нашел это:

https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc

Он использовал те же разделы и добавлял их в mdraid во время любой загрузки до загрузки ZFS.

Я вспомнил, что видел несколько строк mdadm dmesgи достаточно точно:

root@kyou:/home/matt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid5 sdd[2] sdb[0] sde[1]
      1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

Эти диски когда-то были частью программного массива raid5. По какой-то причине во время обновления было решено выполнить повторное сканирование дисков и обнаружить, что диски когда-то были частью массива md, и решили воссоздать его. Это было проверено с:

root@kyou:/storage# mdadm --examine /dev/sd[a-z]

Эти три диска показали кучу информации. На данный момент остановка массива:

root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126

И повторный запуск импорта:

root@kyou:/home/matt# zpool import -f storage

вернул массив в онлайн.

Теперь я делаю снимок этого пула для резервного копирования и запускаю mdadm --zero-superblockих.


4

Ubuntu, похоже, имеет некоторые досадные проблемы с udev, которые мы не видим на стороне Red Hat / CentOS. Я бы порекомендовал использовать имена устройств на основе WWN, если вы можете, поскольку они кажутся менее восприимчивыми к этому.

Вы видели: почему при перезагрузке одна из сторон моего зеркала ZFS стала UNAVAIL?


2
Я видел их, и, читая тему, связанную в одну, кажется, что проблема в том, что udev не создает символические ссылки для всех разделов на устройстве. Я только что проверил все три диска. У каждого из них есть номера разделов 1 и 9, и у них есть символические ссылки /dev/disk/by-idдля этих дисков, и все символические ссылки для одного устройства указывают на один и тот же /dev/sd*диск. И самое близкое, что я могу найти к решению (использовать замену zpool), я не могу сделать, так как не могу повторно импортировать пул.
Мэтт Зикер

2

Я почти точно столкнулся с этой проблемой, пытаясь обновить ядро ​​серии 3.13 на Debian Wheezy. Вы правы в своем комментарии; это ошибка Udev. К сожалению, я никогда не сортировал его, но стоит изучить другие ядра, особенно серии 3.11, для совместимости с версией ZOL 0.6.2. Просто используйте старое ядро, пока не выйдет 0.6.3.


Довольно недопустимо, чтобы udev сломался таким образом. Я не пользуюсь Ubuntu, но такие вещи делают его по-настоящему неполным по сравнению с предложениями RHEL.
Ewwhite
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.