탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
![]() |
Oracle Solaris 11.1 관리: ZFS 파일 시스템 Oracle Solaris 11.1 Information Library (한국어) |
1. Oracle Solaris ZFS 파일 시스템(소개)
3. Oracle Solaris ZFS 저장소 풀 관리
5. Oracle Solaris ZFS 파일 시스템 관리
6. Oracle Solaris ZFS 스냅샷 및 복제 작업
7. ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호
다음 절에서는 데이터 손상 유형을 식별하고 데이터를 복구하는 방법에 대해 설명합니다.
ZFS는 체크섬, 중복성 및 자체 치료 데이터를 사용하여 데이터 손상 위험을 최소화합니다. 그럼에도 불구하고, 풀이 중복되지 않은 경우, 풀 디그레이드 중에 손상이 발생한 경우 또는 일련의 이벤트가 동시에 발생하여 여러 데이터 복사본이 손상되는 경우 데이터 손상이 발생할 수 있습니다. 소스와 관계없이 결과는 같습니다. 즉, 데이터가 손상되어 더 이상 액세스할 수 없습니다. 수행할 조치는 손상된 데이터의 유형 및 관련 값에 따라 달라집니다. 두 가지 기본 유형의 데이터가 손상될 수 있습니다.
풀 메타 데이터 - 풀을 열고 데이터 세트에 액세스하기 위해서는 구문 분석할 특정한 양의 데이터가 ZFS에 필요합니다. 이 데이터가 손상될 경우 전체 풀 또는 데이터 세트 계층의 일부분을 사용할 수 없게 됩니다.
객체 데이터 – 이 경우 특정 파일 또는 디렉토리 내에서 손상이 발생합니다. 이 문제로 인해 파일 또는 디렉토리의 일부분에 액세스할 수 없게 되거나 객체가 모두 손상됩니다.
일반 작업 중이나 스크러빙을 통해 데이터를 확인할 수 있습니다. 풀 데이터의 무결성을 확인하는 방법에 대한 자세한 내용은 ZFS 파일 시스템 무결성 검사를 참조하십시오.
기본적으로 zpool status 명령은 손상이 발생했다는 것만 표시하고 이 손상이 발생한 위치는 표시하지 않습니다. 예를 들면 다음과 같습니다.:
# zpool status 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://support.oracle.com/msg/ZFS-8000-8A config: NAME STATE READ WRITE CKSUM tank ONLINE 4 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 c0t5000C500335FC3E7d0 ONLINE 4 0 0 errors: 2 data errors, use '-v' for a list
각 오류는 지정된 시점에서 오류가 발생했다는 사실만 표시할 뿐 반드시 시스템에 아직도 이러한 오류가 있다는 것은 아닙니다. 그러나 이는 정상적인 상황에서 적용되는 내용입니다. 일시적인 특정 작동 중단은 데이터 손상을 일으키지만 이러한 손상은 작동 중단이 종료되면 자동으로 복구됩니다. 풀의 모든 활성 블록을 검사하기 위해 전체 풀 스크러빙이 보장됩니다. 따라서 스크러빙이 완료될 때마다 오류 로그가 재설정됩니다. 더 이상 오류가 존재하지 않는 것으로 확인되어 스크러빙이 완료될 때까지 기다리지 않아도 되는 경우 zpool online 명령을 사용하여 풀의 모든 오류를 재설정하십시오.
데이터 손상이 풀 전체 메타 데이터에서 발생한 경우 출력 결과가 약간 다릅니다. 예를 들면 다음과 같습니다.
# zpool status -v morpheus pool: morpheus id: 13289416187275223932 state: UNAVAIL status: The pool metadata is corrupted. action: The pool cannot be imported due to damaged devices or data. see: http://support.oracle.com/msg/ZFS-8000-72 config: morpheus FAULTED corrupted data c1t10d0 ONLINE
풀 전체 손상의 경우 풀이 원하는 중복성 레벨을 제공할 수 없기 때문에 풀이 FAULTED 상태가 됩니다.
파일 또는 디렉토리가 손상된 경우 손상 유형에 따라 시스템이 계속 작동할 수 있습니다. 시스템에 정상적인 데이터 복사본이 없을 경우 결과적으로 손상을 복구할 수 없습니다. 중요한 데이터일 경우 영향을 받는 데이터를 백업에서 복원해야 합니다. 이 경우에도 전체 풀을 복원하지 않고 이 손상에서 복구할 수 있습니다.
파일 데이터 블록에서 손상이 발생한 경우 파일을 안전하게 제거하면 시스템에서 오류가 지워집니다. 영구적인 오류가 발생한 파일 이름 목록을 표시하려면 zpool status -v 명령을 사용하십시오. 예를 들면 다음과 같습니다.
# zpool status tank -v 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://support.oracle.com/msg/ZFS-8000-8A config: NAME STATE READ WRITE CKSUM tank ONLINE 4 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 c0t5000C500335FC3E7d0 ONLINE 4 0 0 errors: Permanent errors have been detected in the following files: /tank/file.1 /tank/file.2
영구적인 오류가 발생한 파일 이름 목록은 다음과 같이 설명될 수 있습니다.
전체 파일 경로가 발견되고 데이터 세트가 마운트된 경우, 전체 파일 경로가 표시됩니다. 예를 들면 다음과 같습니다.
/monkey/a.txt
전체 파일 경로가 발견되었지만 데이터 세트가 마운트되지 않은 경우, 앞에 슬래시(/)가 붙지 않고 데이터 세트 내의 파일에 대한 경로가 이어지는 데이터 세트 이름이 표시됩니다. 예를 들면 다음과 같습니다.
monkey/ghost/e.txt
dnode_t의 경우와 같이, 오류로 인해 또는 객체에 연관된 실제 파일 경로가 없어 파일 경로에 대한 객체 수를 성공적으로 변환할 수 없는 경우 데이터 세트 이름 뒤에 객체 번호가 표시됩니다. 예를 들면 다음과 같습니다.
monkey/dnode:<0x0>
MOS(Metaobject Set)에 있는 객체가 손상된 경우 특수 태그 <metadata> 뒤에 객체 번호가 표시됩니다.
손상이 디렉토리 또는 파일의 메타 데이터 내에서 발생한 경우 파일을 다른 곳으로 이동할 수만 있습니다. 파일이나 디렉토리를 덜 편리한 위치로 안전하게 이동하면 원본 객체를 해당 위치에서 복원할 수 있습니다.
손상된 파일 시스템에 스냅샷에서와 같이 여러 블록 참조가 있는 손상된 데이터가 있는 경우 zpool status -v 명령은 손상된 데이터 경로를 모두 표시하지는 않습니다. ZFS 스크럽 알고리즘은 풀을 순회하고 데이터의 각 블록을 한번만 방문합니다. 손상이 발생하면 처음에만 손상을 보고할 수 있습니다. 따라서 영향을 받는 파일에 대한 단일 경로만 생성합니다. 이는 중복이 제거된 손상된 블록에도 적용됩니다.
손상된 데이터가 있고 zpool status - v 명령이 스냅샷 데이터가 영향을 받았음을 식별하는 경우 추가로 손상된 경로가 있는지 검색해 보십시오.
# find mount-point -inum $inode -print # find mount-point/.zfs/snapshot -inum $inode -print
첫번째 명령은 지정된 파일 시스템 및 모든 스냅샷에서 보고된 손상 데이터의 inode 번호를 검색합니다. 두번째 명령은 동일한 inode 번호가 있는 스냅샷을 검색합니다.
풀 메타 데이터에서 손상이 발생했는데 이 손상으로 인해 풀을 열거나 가져올 수 없는 경우 다음 옵션을 사용할 수 있습니다.
zpool clear -F 명령 또는 zpool import - F 명령을 사용하여 풀을 복구할 수 있습니다. 이 명령은 마지막 몇 개의 풀 트랜잭션을 작동 상태로 롤백하려고 시도합니다. zpool status 명령을 사용하여 손상된 풀 및 권장되는 복구 단계를 검토할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool status pool: tpool state: UNAVAIL status: The pool metadata is corrupted and the pool cannot be opened. action: Recovery is possible, but will result in some data loss. Returning the pool to its state as of Fri Jun 29 17:22:49 2012 should correct the problem. Approximately 5 seconds of data must be discarded, irreversibly. Recovery can be attempted by executing 'zpool clear -F tpool'. A scrub of the pool is strongly recommended after recovery. see: http://support.oracle.com/msg/ZFS-8000-72 scrub: none requested config: NAME STATE READ WRITE CKSUM tpool UNAVAIL 0 0 1 corrupted data c1t1d0 ONLINE 0 0 2 c1t3d0 ONLINE 0 0 4
위 출력 결과에 설명된 복구 프로세스는 다음 명령에 사용하기 위한 것입니다.
# zpool clear -F tpool
손상된 저장소 풀을 가져오려고 시도하면 다음과 비슷한 메시지가 표시됩니다.
# zpool import tpool cannot import 'tpool': I/O error Recovery is possible, but will result in some data loss. Returning the pool to its state as of Fri Jun 29 17:22:49 2012 should correct the problem. Approximately 5 seconds of data must be discarded, irreversibly. Recovery can be attempted by executing 'zpool import -F tpool'. A scrub of the pool is strongly recommended after recovery.
위 출력 결과에 설명된 복구 프로세스는 다음 명령에 사용하기 위한 것입니다.
# zpool import -F tpool Pool tpool returned to its state as of Fri Jun 29 17:22:49 2012. Discarded approximately 5 seconds of transactions
손상된 풀이 zpool.cache 파일에 있는 경우, 시스템을 부트하면 문제가 발견되고 손상된 풀이 zpool status 명령에 보고됩니다. 이 풀이 zpool.cache 파일에 없는 경우 풀을 가져오거나 열 수 없으므로 해당 풀을 가져오려고 시도하면 손상된 풀 메시지가 표시됩니다.
손상된 풀은 읽기 전용 모드로 가져올 수 있습니다. 이 방법으로 풀을 가져와서 데이터에 액세스할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool import -o readonly=on tpool
풀을 읽기 전용으로 가져오는 방법은 읽기 전용 모드로 풀 가져오기를 참조하십시오.
zpool import -m 명령을 사용하여 누락된 로그 장치가 있는 풀을 가져올 수 있습니다. 자세한 내용은 누락된 로그 장치가 있는 풀 가져오기를 참조하십시오.
어떠한 풀 복구 방법으로도 풀을 복구할 수 없는 경우 백업 복사본에서 풀과 모든 데이터를 복원해야 합니다. 풀 구성 및 백업 전략에 따라 사용하는 방식이 달라집니다. 먼저, 풀이 삭제된 후 구성을 다시 만들 수 있도록 zpool status 명령에 의해 표시된 대로 구성을 저장합니다. 그런 다음 zpool destroy -f 명령을 사용하여 풀을 삭제합니다.
또한 풀에 액세스할 수 없게 될 경우 데이터 세트의 레이아웃 및 로컬에 설정된 다양한 등록 정보에도 액세스할 수 없게 되므로 이 정보를 안전한 위치에 보관하십시오. 풀 구성 및 데이터 세트 레이아웃을 사용하면 풀 삭제 후 전체 구성을 재구성할 수 있습니다. 그런 다음 백업 또는 복원 전략을 사용하여 데이터를 채울 수 있습니다.