Назад | Перейти на главную страницу

Восстановление / импорт пула ZFS Linux с повторяющимся именем пула

Сегодня я сделал что-то очень глупое, пытаясь добавить третье зеркало к существующему zpool Linux с именем backup. Достаточно сказать, что я сделал пару ошибок, потому что на самом деле я не занимаюсь администрированием своей ZFS, кроме как менять диски каждые пару лет. И, пытаясь исправить их, я неправильно прочитал онлайн-совет по воссозданию пула и создал новый пул с именем backup тем самым разрушая существующий пул. (Да, я использовал -f вариант после того, как пожаловался. Да я идиот. Теперь я знаю, что больше никогда этого не сделаю. Давайте двигаться дальше.)

Из того, что я прочитал в Интернете, мой оригинал backup пул, над которым я «создал», скорее всего, невозможно восстановить. Что вроде нормально, потому что он назван backup по какой-то причине - в нем в основном хранятся мои резервные копии за ~ 15 лет. Однако есть несколько вещей, которые было бы неплохо вернуть (некоторые несущественные данные, которые я временно переместил туда), и несколько вещей, на повторную настройку которых у меня уйдет несколько дней, связанных с настройками резервного копирования, которые находился на том томе. (Теперь я знаю, что нужно сделать резервную копию этого материала в другом месте, так что это будет полезным опытом.)

Но у меня есть резервная копия моих резервных копий - сегодня я заменял третье зеркало для диска, который я удалил несколько месяцев назад во время другого обновления моей системы (вместе с обновлением ОС). Этот диск на самом деле не вышел из строя, но он был старым и начал накапливать пару сбойных секторов, поэтому я подумал, что мог бы просто вынуть его, а не ждать, пока он повредится или что-то в этом роде.

Как бы то ни было, у меня все еще есть этот старый диск, поэтому я решил, что могу просто вставить его обратно в свою систему и восстановить оттуда данные пула. Мне не хватало данных резервных копий только за последние несколько месяцев. Я никогда официально не экспортировал пул на этом диске или что-то в этом роде. С тех пор я обновил свою ОС, поэтому не ожидал, что она автоматически обнаружит этот диск. (Я не знаю, подключен ли он к тому же порту SATA или нет, так как я переставил несколько дисков.)

Но zpool import похоже, что команда ничего не находит автоматически. Поиграйте с некоторыми вариантами, zpool import видит (теперь уничтоженную) вторую версию backup пул, но это просто пустой пул, который я случайно создал на двух других дисках.

Какие-нибудь советы о том, как я могу попытаться прочитать данные на этом третьем диске? Насколько я помню, это было идеально функциональное и современное зеркало пула ZFS, прежде чем я вытащил его из кейса несколько месяцев назад. В частности:

  1. Тот факт, что есть разрушенный пул, называется backup потенциально мешает возможности обнаружить и попытаться восстановить / импортировать этот старый пул? Есть ли способ обойти это?
  2. На моем сервере все еще установлена ​​старая ОС, которая, как мне кажется, работала, когда я использовал старый диск. Я попытался загрузиться в него, чтобы посмотреть, может ли он просто обнаружить пул ZFS, но этого не произошло. (Опять же, диск может быть не подключен к тому же месту.) Но есть ли какие-либо файлы журнала ZFS или другие вещи, которые я мог бы извлечь, которые могут содержать метаданные в этом старом пуле, или идентификационный номер, или что-то, что я потенциально можно использовать, чтобы заставить ZFS импортировать то, что должно быть неповрежденным зеркалом на этом диске?
  3. Я просто предполагаю, что мой пул на первых двух дисках был уничтожен из-за create -f команда. Но если у кого-то есть идея, как я мог бы восстановить первый пул прямо там, это, очевидно, было бы здорово.
  4. Есть ли другая причина, по которой ZFS не обнаружит старое третье зеркало как диск пула ZFS? Если да, есть ли другие предложения? Другие инструменты восстановления я могу попробовать?

Спасибо за любую помощь или предложения.

РЕДАКТИРОВАТЬ: вот результат zdb -l /dev/sdb1 (это третий привод)

------------------------------------
LABEL 0
------------------------------------
    version: 5000
    name: 'backup'
    state: 0
    txg: 0
    pool_guid: 3936176493905234028
    errata: 0
    hostid: 8323329
    hostname: [omitted]
    top_guid: 14695910886267065742
    guid: 17986383713788026938
    vdev_children: 1
    vdev_tree:
        type: 'mirror'
        id: 0
        guid: 14695910886267065742
        whole_disk: 0
        metaslab_array: 34
        metaslab_shift: 33
        ashift: 12
        asize: 1000197324800
        is_log: 0
        create_txg: 4
        children[0]:
            type: 'disk'
            id: 0
            guid: 17914838236907067293
            path: '/dev/sdd1'
            whole_disk: 0
            DTL: 143
            create_txg: 4
        children[1]:
            type: 'disk'
            id: 1
            guid: 17986383713788026938
            path: '/dev/sdb1'
            whole_disk: 0
            DTL: 141
        children[2]:
            type: 'disk'
            id: 2
            guid: 1683783279473519399
            path: '/dev/sdc1'
            whole_disk: 0
            DTL: 145
            create_txg: 4
    features_for_read:
        com.delphix:hole_birth
        com.delphix:embedded_data
    create_txg: 0
    labels = 0 1 2 3 

Если я правильно интерпретирую, статус 0 означает, что пул не должен быть поврежден. Но когда я попытался импортировать даже с использованием GUID пула zpool import 3936176493905234028, Я получаю сообщение об ошибке «не удается импортировать ... нет такого пула» (Я предполагаю, что мне следует использовать pool_guid, но я также пробовал использовать guid и top_guid, и, похоже, ничего не работает.)

EDIT2: я восстановил файл zpool.cache из исходной ОС, в которой этот пул был активен, и попробовал zpool import -c zpool.cache, который дал это:

   pool: backup
     id: 3936176493905234028
  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:

    backup      UNAVAIL  insufficient replicas
      mirror-0  UNAVAIL  insufficient replicas
        sdd1    FAULTED  corrupted data
        sdc1    FAULTED  corrupted data

Этого и следовало ожидать. Это два диска, на которых пул был перезаписан моей командой create. Однако sdb1 не указан как потенциальный диск - вероятно, потому, что я удалил его из пула после того, как вынул диск. Тем не менее, я думаю, что у меня есть неповрежденная копия старых зеркальных данных на sdb1, и zdb соглашается. Почему не импортируется?