1

Я пытаюсь навести порядок в серверной системе 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, уничтожаю TB2 и начинаю заново. Однако предыдущий администратор использовал имена sd * для TB2 и идентификаторы дисков для TB4. Просматривая /dev /disk /by-id, я обнаружил, что два диска TB4 (... 71M и ...EAV) связаны с /dev /sdj и /dev /sds соответственно. Но эти sdj и sds оба перечислены как часть пула TB2. Я боюсь, что уничтожение zpool 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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .