Два запутанных пула ZFS?

Два запутанных пула ZFS?

Я пытаюсь навести порядок в системе сервера Ubuntu 12.04 LTS с использованием ZFS. Вот что показывает статус zpool:

  pool: TB2
 state: UNAVAIL
status: One or more devices could not be used because the label is missing
        or invalid.  There are insufficient replicas for the pool to continue
        functioning.
action: Destroy and re-create the pool from
        a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    TB2         UNAVAIL      0     0     0  insufficient replicas
      sdd       ONLINE       0     0     0
      sde       ONLINE       0     0     0
      sdf       ONLINE       0     0     0
      sdg       ONLINE       0     0     0
      sdh       ONLINE       0     0     0
      sdi       ONLINE       0     0     0
      sdj       ONLINE       0     0     0
      sds       ONLINE       0     0     0
      sdt       UNAVAIL      0     0     0

  pool: TB4
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: resilvered 2.52T in 16h41m with 0 errors on Tue Feb  6 09:27:46 2018
config:

    NAME                                              STATE     READ WRITE CKSUM
    TB4                                               DEGRADED     0     0     0
      raidz2-0                                        DEGRADED     0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG9MBVS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG8G71M    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGH0LHV    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAG8MV3T    ONLINE       0     0     0
        spare-4                                       DEGRADED     0     0     0
          ata-Hitachi_HDS724040ALE640_PK2311PAG614MM  UNAVAIL      0     0     0
          ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV  ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAGH2XRW    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG7TGDS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGG3K0V    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG59PYM    ONLINE       0     0     0
    spares
      ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV      INUSE     currently in use

errors: No known data errors

Я хочу сделать две вещи: 1. Заменить неисправный диск в пуле TB4. Это я знаю, как сделать. 2. Полностью уничтожить и заново создать пул TB2.

Обычно я бы просто выполнил zpool destroy TB2 и начал бы заново. Однако предыдущий администратор использовал имена sd* для TB2 и идентификаторы дисков для TB4. Просматривая /dev/disk/by-id, я обнаружил, что два диска TB4 (...71M и ...EAV) имеют символические ссылки на /dev/sdj и /dev/sds соответственно. Но эти sdj и sds оба указаны как часть пула TB2. Я боюсь, что выполнение zpool destroy TB2 повредит диски в пуле TB4, поскольку в документации говорится, что destroy записывает данные на диски-участники. Есть ли способ заставить ZFS просто забыть о TB2, не выполняя фактическую запись?

Я спросил предыдущего администратора, почему он использовал два разных метода (/dev/sd* и by-id). Он сказал, что назначение букв дисков определенным жестким дискам, похоже, не повторялось от загрузки к загрузке, поэтому, когда он создал TB4, он использовал by-id. Я думаю, что эта путаница TB2 и TB4 является результатом этого.

Сейчас я думаю сделать следующее:

  1. выключи машину
  2. извлеките все диски.
  3. Перезагрузить.
  4. zpool уничтожить -f TB2
  5. выключите и переустановите диски TB4
  6. переформатируйте диски TB2 на другой машине
  7. Переустановите диски TB2 и создайте новый пул, используя идентификаторы дисков (не sd*).

Кажется ли это разумным? Есть ли более простой способ?

Спасибо всем, кто может помочь мне выбраться из этой ситуации.

Майкл

решение1

Ваш предложенный метод, кажется, будет работать. Однако, он также неоправданно сложен. Вместо этого я бы предложил:

  1. zpool export TB2. Это приведет к отключению всех ресурсов, связанных с пулом, и ваша система не будет пытаться перемонтировать их (и, возможно, записывать в них), если вы zpool importсначала не запустите .
  2. Ремонт TB4. (Или вы можете сделать это позже.)
  3. zpool create <new pool> ...(ссылка на диски по идентификатору, чтобы избежать повторного наложения). Возможно, вам придется принудительно создать, так как может оказаться, что эти диски использовались неимпортированным пулом.

Если вы хотите провести пробный запуск процедуры, я думаю, вы можете создать несколько томов на TB4 ( zfs create -V 5gb TB4/volume1) и сделать из них два «вложенных пула» ( zpool create testpool1 ...) с перекрывающимся томом. Все остальное должно работать так же, как указано выше.

Связанный контент