JavaScript is required to for searching.
탐색 링크 건너뛰기
인쇄 보기 종료
Oracle Solaris 관리: ZFS 파일 시스템     Oracle Solaris 11 Information Library (한국어)
search filter icon
search icon

문서 정보

머리말

1.  Oracle Solaris ZFS 파일 시스템(소개)

2.  Oracle Solaris ZFS 시작하기

3.  Oracle Solaris ZFS와 전통적인 파일 시스템의 차이

4.  Oracle Solaris ZFS 저장소 풀 관리

5.  ZFS 루트 풀 구성 요소 관리

6.  Oracle Solaris ZFS 파일 시스템 관리

7.  Oracle Solaris ZFS 스냅샷 및 복제 작업

8.  ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호

9.  Oracle Solaris ZFS 위임 관리

10.  Oracle Solaris ZFS 고급 주제

11.  Oracle Solaris ZFS 문제 해결 및 풀 복구

ZFS 오류 식별

ZFS 저장소 풀에서 장치 누락

ZFS 저장소 풀에서 장치 손상

손상된 ZFS 데이터

ZFS 파일 시스템 무결성 검사

파일 시스템 복구

파일 시스템 검증

ZFS 데이터 스크러빙 제어

명시적 ZFS 데이터 스크러빙

ZFS 데이터 스크러빙 및 리실버링

ZFS 관련 문제 해결

ZFS 저장소 풀에 문제가 있는지 확인

zpool status 출력 결과 검토

전체 풀 상태 정보

풀 구성 정보

스크러빙 상태

데이터 손상 오류

ZFS 오류 메시지에 대한 시스템 보고

손상된 ZFS 구성 복구

누락된 장치 해결

물리적으로 장치 재연결

ZFS에 장치 가용성 알림

손상된 장치 교체 또는 복구

장치 오류 유형 확인

일시적인 오류 지우기

ZFS 저장소 풀의 장치 교체

교체 가능한 장치인지 확인

교체할 수 없는 장치

ZFS 저장소 풀의 장치 교체

리실버링 상태 보기

손상된 데이터 복구

데이터 손상 유형 식별

손상된 파일 또는 디렉토리 복구

ZFS 저장소 풀 전반의 손상 복구

부트할 수 없는 시스템 복구

12.  스냅샷 아카이브 및 루트 풀 복구

13.  Oracle Solaris ZFS 권장 방법

A.  Oracle Solaris ZFS 버전 설명

색인

손상된 장치 교체 또는 복구

이 단원에서는 장치 오류 유형 확인, 일시적인 오류 지우기 및 장치 교체 방법에 대해 설명합니다.

장치 오류 유형 확인

손상된 장치라는 용어는 다소 모호하므로 여러 가지 가능한 상황을 들어 설명할 수 있습니다.

장치에서 발생한 문제가 무엇인지 정확하게 확인하는 것은 어려운 프로세스일 수 있습니다. 첫번째 단계는 zpool status 출력에서 오류 카운트를 확인하는 것입니다. 예를 들면 다음과 같습니다.

# zpool status -v tank
  pool: tank
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
  scan: scrub in progress since Tue Sep 27 17:12:40 2011
    63.9M scanned out of 528M at 10.7M/s, 0h0m to go
    0 repaired, 12.11% done
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       2     0     0
          mirror-0  ONLINE       2     0     0
            c2t2d0  ONLINE       2     0     0
            c2t1d0  ONLINE       2     0     0

errors: Permanent errors have been detected in the following files:

        /tank/words

오류는 I/O 오류와 체크섬 오류로 분류되는데, 둘 다 발생 가능한 오류 유형을 나타냅니다. 일반적인 작업의 경우 매우 적은 수의 오류(긴 기간 동안 소수의 오류)가 발생할 것으로 예측됩니다. 많은 수의 오류가 표시될 경우 이는 임박한 장치 오류나 전체 장치 오류를 나타내는 것일 수 있습니다. 그러나 관리자 오류로 인해 많은 오류 카운트가 발생할 수도 있습니다. 정보의 다른 소스는 syslog 시스템 로그입니다. 로그에 많은 수의 SCSI 또는 Fibre Channel 드라이버 메시지가 표시될 경우 이는 심각한 하드웨어 문제를 나타내는 것일 수 있습니다. syslog 메시지가 생성되지 않을 경우 일시적인 손상일 수 있습니다.

목표는 다음 질문에 답하는 것입니다.

이 장치에서 또 다른 오류가 발생할 가능성이 있습니까?

한 번만 발생하는 오류는 일시적인 오류로 간주되고 잠재적인 실패를 나타내지 않습니다. 잠재적인 하드웨어 실패를 나타낼 수 있는 영구적이거나 심각한 오류는 치명적인 오류로 간주됩니다. 오류의 유형을 확인하는 작업은 현재 ZFS에서 제공하는 자동 소프트웨어의 범위를 벗어나는 것이므로, 관리자가 수동으로 많은 부분을 수행해야 합니다. 확인이 이루어진 후에 적절한 조치를 취할 수 있습니다. 일시적인 오류를 지우거나 치명적인 오류가 발생한 장치를 교체하십시오. 이러한 복구 절차는 다음 단원에서 설명합니다.

장치 오류가 일시적인 오류로 간주되더라도 풀 내에서 해결할 수 없는 데이터 오류를 일으킬 수도 있습니다. 이 경우 기본 장치가 정상적으로 작동하거나 복구되었다 하더라도 이러한 오류에는 특별한 복구 절차가 필요합니다. 데이터 오류 복구에 대한 자세한 내용은 손상된 데이터 복구를 참조하십시오.

일시적인 오류 지우기

장치 오류가 일시적인 오류로 간주될 경우, 장치의 이후 상태에 영향을 줄 가능성이 거의 없으므로 치명적인 오류가 발생하지 않음을 나타내도록 안전하게 오류를 지우십시오. RAID-Z 또는 미러링된 장치에 대한 오류 카운터를 지우려면 zpool clear 명령을 사용하십시오. 예를 들면 다음과 같습니다.

# zpool clear tank c1t1d0

이 구문은 장치 오류를 지우고 해당 장치와 연관된 데이터 오류 카운트를 지웁니다.

풀의 가상 장치와 연관된 모든 오류를 지우고 해당 풀과 연관된 데이터 오류 카운트를 지우려면 다음 구문을 사용하십시오.

# zpool clear tank

풀 오류 지우기에 대한 자세한 내용은 저장소 풀 장치 오류 지우기를 참조하십시오.

ZFS 저장소 풀의 장치 교체

장치 손상이 영구적이거나 이후에 영구적인 손상이 될 가능성이 있을 경우 장치를 교체해야 합니다. 장치를 교체할 수 있는 여부는 구성에 따라 달라집니다.

교체 가능한 장치인지 확인

교체할 장치가 중복 구성의 일부일 경우 정상적인 데이터를 검색할 수 있는 충분한 복제본이 있어야 합니다. 예를 들어 4방향 미러의 두 디스크에 결함이 있을 경우 정상 상태인 복제본을 사용할 수 있으므로 둘 중 한 디스크를 교체할 수 있습니다. 그러나 4방향 RAID-Z(raidz1) 가상 장치의 두 디스크에 결함이 있을 경우, 데이터를 검색할 수 있는 충분한 복제본이 없으므로 어떠한 디스크도 교체할 수 없습니다. 장치가 손상되었으나 온라인일 경우 풀이 FAULTED 상태가 아니라면 장치를 교체할 수 있습니다. 그러나 정상적인 데이터를 포함하는 복제본이 부족할 경우 장치의 손상된 데이터가 새 장치로 복사됩니다.

다음 구성에서 c1t1d0 디스크는 교체할 수 있으며, 풀의 데이터는 정상 복제본 c1t0d0에서 복사됩니다.

    mirror            DEGRADED
    c1t0d0             ONLINE
    c1t1d0             FAULTED

c1t0d0 디스크도 교체할 수 있지만, 정상적인 복제본을 사용할 수 없으므로 데이터 자체 치료가 수행되지 않습니다.

다음 구성에서는 결함이 있는 어떠한 디스크도 교체할 수 없습니다. ONLINE 디스크는 풀 자체에 결함이 있으므로 교체할 수 없습니다.

    raidz              FAULTED
    c1t0d0             ONLINE
    c2t0d0             FAULTED
    c3t0d0             FAULTED
    c4t0d0             ONLINE

다음 구성에서 최상위 디스크는 교체할 수 있지만, 디스크에 있는 잘못된 데이터가 새 디스크로 복사됩니다.

c1t0d0         ONLINE
c1t1d0         ONLINE

둘 중 한 디스크에 결함이 있을 경우 풀 자체에 결함이 있으므로 교체할 수 없습니다.

교체할 수 없는 장치

장치 손실로 인해 풀이 실패하거나 장치의 비중복 구성에 너무 많은 데이터 오류가 있는 경우 장치를 안전하게 교체할 수 없습니다. 충분한 중복성을 사용하지 않으면 손상된 장치를 치료할 수 있는 정상적인 데이터가 생기지 않습니다. 이 경우 유일한 옵션은 풀을 삭제하고 구성을 다시 생성한 다음 백업 복사본에서 데이터를 복원하는 것입니다.

전체 풀 복원에 대한 자세한 내용은 ZFS 저장소 풀 전반의 손상 복구를 참조하십시오.

ZFS 저장소 풀의 장치 교체

교체할 수 있다고 장치로 확인되었으면 zpool replace 명령을 사용하여 장치를 교체하십시오. 손상된 장치를 다른 장치로 교체할 경우 다음과 비슷한 구문을 사용하십시오.

# zpool replace tank c1t1d0 c2t0d0

이 명령은 손상된 장치 또는 풀의 다른 장치(중복 구성인 경우)에서 새 장치로 데이터를 마이그레이션합니다. 명령이 완료되면 구성에서 손상된 장치가 분리됩니다. 따라서 시스템에서 해당 당치를 제거할 수 있습니다. 아미 장치를 제거하고 같은 위치의 새 장치로 교체한 경우 명령의 단일 장치 양식을 사용하십시오. 예를 들면 다음과 같습니다.

# zpool replace tank c1t1d0

이 명령은 포맷되지 않은 디스크를 가져와서 적절하게 포맷한 다음 나머지 구성에서 데이터를 리실버링합니다.

zpool replace 명령에 대한 자세한 내용은 저장소 풀의 장치 교체를 참조하십시오.

예 11-1 ZFS 저장소 풀의 장치 교체

다음 예에서는 SATA 장치가 있는 시스템의 미러링된 저장소 풀 tank에서 장치(c1t3d0)를 교체하는 방법을 보여줍니다. c1t3d0 디스크를 같은 위치(c1t3d0)의 새 디스크로 교체하려면 디스크 교체를 시도하기 전에 디스크를 구성 해제해야 합니다. 기본 단계는 다음과 같습니다.

다음 예는 ZFS 저장소 풀에서 디스크를 교체하는 단계를 보여줍니다.

# zpool offline tank c1t3d0
# cfgadm | grep c1t3d0
sata1/3::dsk/c1t3d0            disk         connected    configured   ok
# cfgadm -c unconfigure sata1/3
Unconfigure the device at: /devices/pci@0,0/pci1022,7458@2/pci11ab,11ab@1:3
This operation will suspend activity on the SATA device
Continue (yes/no)? yes
# cfgadm | grep sata1/3
sata1/3                        disk         connected    unconfigured ok
<Physically replace the failed disk c1t3d0>
# cfgadm -c configure sata1/3
# cfgadm | grep sata1/3
sata1/3::dsk/c1t3d0            disk         connected    configured   ok
# zpool online tank c1t3d0
# zpool replace tank c1t3d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Feb  2 13:17:32 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c0t2d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror-2  ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0

errors: No known data errors

zpool output의 경우 replacing 제목 아래에 새 디스크와 이전 디스크를 모두 표시할 수 있습니다. 예를 들면 다음과 같습니다.

replacing     DEGRADED     0     0    0
  c1t3d0s0/o  FAULTED      0     0    0
  c1t3d0      ONLINE       0     0    0

이 텍스트는 교체 프로세스가 진행 중이며 새 디스크를 리실버링하는 중임을 의미합니다.

디스크(c1t3d0)를 다른 디스크(c4t3d0)로 교체하려는 경우에는 zpool replace 명령을 실행하기만 하면 됩니다. 예를 들면 다음과 같습니다.

# zpool replace tank c1t3d0 c4t3d0
# zpool status
  pool: tank
 state: DEGRADED
 scrub: resilver completed after 0h0m with 0 errors on Tue Feb  2 13:35:41 2010
config:

        NAME             STATE     READ WRITE CKSUM
        tank             DEGRADED     0     0     0
          mirror-0       ONLINE       0     0     0
            c0t1d0       ONLINE       0     0     0
            c1t1d0       ONLINE       0     0     0
          mirror-1       ONLINE       0     0     0
            c0t2d0       ONLINE       0     0     0
            c1t2d0       ONLINE       0     0     0
          mirror-2       DEGRADED     0     0     0
            c0t3d0       ONLINE       0     0     0
            replacing    DEGRADED     0     0     0
              c1t3d0     OFFLINE      0     0     0
              c4t3d0     ONLINE       0     0     0

errors: No known data errors

디스크 교체가 완료될 때까지 zpool status 명령을 여러 번 실행해야 할 수도 있습니다.

# zpool status tank
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h0m with 0 errors on Tue Feb  2 13:35:41 2010
config:

        NAME          STATE     READ WRITE CKSUM
        tank          ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c0t1d0    ONLINE       0     0     0
            c1t1d0    ONLINE       0     0     0
          mirror-1    ONLINE       0     0     0
            c0t2d0    ONLINE       0     0     0
            c1t2d0    ONLINE       0     0     0
          mirror-2    ONLINE       0     0     0
            c0t3d0    ONLINE       0     0     0
            c4t3d0    ONLINE       0     0     0

예 11-2 실패한 로그 장치 교체

ZFS는 zpool status 명령 출력에서 계획 로그 오류를 식별합니다. FMA(Fault Management Architecture)에서는 이러한 오류도 보고됩니다. ZFS 및 FMA 모두 의도 로그 오류에서 복구하는 방법을 설명합니다.

다음 예는 저장소 풀(pool)의 실패한 로그 장치(c0t5d0)에서 복구하는 방법을 보여줍니다. 기본 단계는 다음과 같습니다.

예를 들어 별도의 로그 장치가 있는 풀에 동기식 쓰기 작업이 커밋되기 전에 시스템이 갑자기 종료된 경우에는 다음과 비슷한 메시지가 표시됩니다.

# zpool status -x
  pool: pool
 state: FAULTED
status: One or more of the intent logs could not be read.
        Waiting for adminstrator intervention to fix the faulted pool.
action: Either restore the affected device(s) and run 'zpool online',
        or ignore the intent log records by running 'zpool clear'.
 scrub: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        pool          FAULTED      0     0     0 bad intent log
          mirror-0    ONLINE       0     0     0
            c0t1d0    ONLINE       0     0     0
            c0t4d0    ONLINE       0     0     0
        logs          FAULTED      0     0     0 bad intent log
          c0t5d0      UNAVAIL      0     0     0 cannot open
<Physically replace the failed log device>
# zpool online pool c0t5d0
# zpool clear pool
# fmadm faulty
# fmadm repair zfs://pool=name/vdev=guid

로그 장치 오류는 다음과 같은 방식으로 해결할 수 있습니다.

실패한 로그 장치를 교체하지 않고 이 오류로부터 복구하려면 zpool clear 명령을 사용하여 오류를 지울 수 있습니다. 이 시나리오에서 풀은 성능 저하 모드로 작동하며 별도의 로그 장치가 교체될 때까지 로그 레코드가 기본 풀에 작성됩니다.

로그 장치 오류 시나리오를 방지하려면 미러링된 로그 장치를 사용하는 것이 좋습니다.

리실버링 상태 보기

장치를 교체하는 프로세스는 장치의 크기 및 풀에 포함된 데이터의 양에 따라 상당한 시간이 걸릴 수 있습니다. 데이터를 한 장치에서 다른 장치로 이동하는 프로세스를 리실버링이라고 하며 zpool status 명령을 사용하여 모니터링할 수 있습니다.

다음 zpool status 리실버링 상태 메시지가 제공됩니다.

리실버링 완료 메시지는 시스템 재부트 후에도 보존됩니다.

기존 파일 시스템은 블록 레벨에서 데이터를 리실버링합니다. ZFS에서는 볼륨 관리자의 인공 계층이 제거되므로 훨씬 더 강력하고 제어된 방식으로 리실버링을 수행할 수 있습니다. 이 기능의 두 가지 주요 이점은 다음과 같습니다.

리실버링 프로세스를 확인하려면 zpool status 명령을 사용하십시오. 예를 들면 다음과 같습니다.

# zpool status tank
  pool: tank
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scan: resilver in progress since Mon Jun  7 10:49:20 2010
    54.6M scanned out of 222M at 5.46M/s, 0h0m to go
    54.5M resilvered, 24.64% done
config:

        NAME             STATE     READ WRITE CKSUM
        tank             ONLINE       0     0     0
          mirror-0       ONLINE       0     0     0
            replacing-0  ONLINE       0     0     0
              c1t0d0     ONLINE       0     0     0
              c2t0d0     ONLINE       0     0     0  (resilvering)
            c1t1d0       ONLINE       0     0     0

이 예에서 c1t0d0 디스크가 c2t0d0으로 교체되는 중입니다. 상태 출력 결과에서 구성에 replacing 가상 장치가 있다면 이 이벤트를 확인할 수 있습니다. 이 장치는 실제가 아니므로 이 장치를 사용하여 풀을 만들 수 없습니다. 아 장치의 목적은 리실버링 진행률을 표시하고 교체할 장치를 식별하기 위한 것입니다.

리실버링 프로세스가 완료될 때까지 풀이 원하는 레벨의 중복성을 제공할 수 없기 때문에 현재 리실버링이 진행 중인 풀은 ONLINE 또는 DEGRADED 상태입니다. 리실버링은 가능한 빠르게 진행되지만, 시스템에 미치는 영향을 최소화하기 위해 I/O는 항상 사용자가 요청한 I/O보다 낮은 우선 순위로 예약됩니다. 리실버링이 완료되면 구성이 완료된 새 구성으로 되돌아갑니다. 예를 들면 다음과 같습니다.

# zpool status tank
  pool: tank
 state: ONLINE
 scrub: resilver completed after 0h1m with 0 errors on Tue Feb  2 13:54:30 2010
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0  377M resilvered
            c1t1d0  ONLINE       0     0     0

errors: No known data errors

풀이 다시 ONLINE 상태가 되고, 실패한 원래 디스크(c1t0d0)가 구성에서 제거되었습니다.