두 개의 얽힌 ZFS 풀?

두 개의 얽힌 ZFS 풀?

ZFS를 사용하여 Ubuntu 12.04 LTS 서버 시스템의 혼란을 정리하려고 합니다. 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를 수행하고 다시 시작합니다. 그러나 이전 관리자는 TB2에는 sd* 이름을 사용하고 TB4에는 디스크 ID를 사용했습니다. /dev/disk/by-id를 살펴보면서 TB4 드라이브 중 두 개(...71M 및 ...EAV)가 각각 /dev/sdj 및 /dev/sds에 심볼릭 링크되어 있음을 발견했습니다. 그러나 이러한 sdj와 sd는 모두 TB2 풀의 일부로 나열됩니다. zpool destroy TB2를 수행하면 TB4 풀의 드라이브가 손상될까 두렵습니다. 문서에서는 destroy가 멤버 디스크에 쓰기를 한다고 나와 있기 때문입니다. 실제로 쓰지 않고 ZFS가 TB2를 잊어버리게 할 수 있는 방법이 있습니까?

이전 관리자에게 왜 두 가지 다른 방법(/dev/sd* 및 by-id)을 사용하는지 물었습니다. 그는 특정 하드 드라이브에 드라이브 문자를 할당하는 것이 부팅마다 반복 가능한 것 같지 않아 TB4를 만들 때 by-id를 사용했다고 말했습니다. 나는 TB2와 TB4의 얽힘이 그 결과라고 생각합니다.

내 현재 생각은 다음과 같습니다.

  1. 기계를 꺼라
  2. 모든 드라이브를 당깁니다.
  3. 재부팅합니다.
  4. zpool destroy -f TB2
  5. TB4 드라이브 종료 및 재설치
  6. 다른 시스템에서 TB2 드라이브를 다시 포맷합니다.
  7. TB2 드라이브를 다시 설치하고 디스크 ID(sd* 아님)를 사용하여 새 풀을 만듭니다.

이것이 합리적으로 보입니까? 더 쉬운 방법이 있나요?

이 혼란에서 나를 도와줄 수 있는 사람에게 감사드립니다.

남자 이름

답변1

귀하가 제안한 방법이 효과가 있을 것 같습니다. 그러나 이는 불필요하게 복잡하기도 합니다. 대신에 나는 다음과 같이 제안하고 싶습니다.

  1. zpool export TB2. 이렇게 하면 풀과 관련된 모든 리소스가 마운트 해제되고 시스템은 먼저 실행하지 않는 한 해당 리소스를 다시 마운트(및 쓰기 가능)하려고 시도하지 않습니다 zpool import.
  2. TB4를 수리하세요. (아니면 나중에 해도 됩니다.)
  3. zpool create <new pool> ...(다시 겹치는 것을 피하기 위해 디스크를 ID로 참조) 가져오지 않은 풀에서 해당 디스크를 사용하고 있음을 알 수 있으므로 강제 생성해야 할 수도 있습니다.

절차를 시험적으로 실행하고 싶다면 TB4( zfs create -V 5gb TB4/volume1)에 일부 볼륨을 생성하고 그 중에서 zpool create testpool1 ...볼륨이 겹치는 두 개의 "중첩 풀"( )을 만들 수 있을 것 같습니다. 다른 모든 것은 위와 동일하게 작동해야 합니다.

관련 정보