Oracle® Solaris 11.2의 ZFS 파일 시스템 관리

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

ZFS 파일 시스템 무결성 검사

fsck에 해당하는 유틸리티가 ZFS에는 없습니다. 이 유틸리티는 일반적으로 파일 시스템 복구 및 파일 시스템 검증이라는 두 가지 목적을 제공합니다.

파일 시스템 복구

기존 파일 시스템에서는 데이터가 기록되는 방식이 본래 파일 시스템 불일치를 일으키는 예상치 않은 오류에 취약합니다. 기존 파일 시스템은 트랜잭션이 아니므로 참조되지 않은 블록, 잘못된 링크 카운트 또는 기타 불일치한 파일 시스템 구조가 발생할 수 있습니다. 저널링을 추가하면 이러한 문제가 해결되지만, 로그를 롤백할 수 없는 경우 추가로 문제가 발생할 수 있습니다. 하드웨어 오류(이 경우 중복된 풀을 사용해야 함)가 발생하거나 ZFS 소프트웨어에 버그가 존재하는 경우에만 불일치 데이터가 ZFS 구성의 디스크에 존재하게 됩니다.

fsck 유틸리티는 UFS 파일 시스템에만 해당하는 알려진 문제를 복구합니다. 대부분의 ZFS 저장소 풀 문제는 일반적으로 하드웨어 오류 또는 전원 오류와 관련이 있습니다. 따라서 중복된 풀을 사용하여 문제를 방지할 수 있습니다. 하드웨어 오류 또는 정전으로 인해 풀이 손상된 경우 ZFS 저장소 풀 전반의 손상 복구를 참조하십시오.

중복된 풀이 아닌 경우 파일 시스템 손상으로 인해 데이터의 일부 또는 전체에 액세스할 수 없게 될 위험이 항상 존재합니다.

파일 시스템 검증

fsck 유틸리티는 파일 시스템 복구를 수행하는 것 외에도, 디스크의 데이터에 문제가 없는지 검증합니다. 일반적으로 이 작업을 수행하려면 파일 시스템을 마운트 해제하고 fsck 유틸리티를 실행하며 가능하면 프로세스 중에 시스템을 단일 사용자 모드로 전환해야 합니다. 이 경우 검사할 파일 시스템의 크기에 비례하여 작동 중지 시간이 발생합니다. ZFS는 필요한 검사를 수행하기 위한 명시적 유틸리티 대신 모든 불일치에 대해 루틴 검사를 수행하는 방식을 제공합니다. 스크러빙이라고 하는 이 기능은 일반적으로 메모리 및 기타 시스템에서 하드웨어 또는 소프트웨어 오류가 발생하기 전에 오류를 발견하고 방지하는 한 방법으로 사용됩니다.

ZFS 데이터 스크러빙 제어

ZFS에서 오류가 발생할 때마다 스크러빙을 통해 또는 요구 시 파일에 액세스할 경우 오류가 내부적으로 기록되므로, 사용자는 풀 내에서 발생한 모든 알려진 오류를 한눈에 확인할 수 있습니다.

명시적 ZFS 데이터 스크러빙

데이터 무결성을 검사하는 가장 간단한 방법은 풀 내에 있는 모든 데이터의 명시적 스크러빙을 시작하는 것입니다. 이 작업은 풀 내의 모든 데이터를 한 번 탐색한 다음 모든 블록을 읽을 수 있는지 확인합니다. 스크러빙은 장치에서 허용하는 한 가능한 빠르게 진행되지만, I/O 우선 순위는 일반 작업보다 낮습니다. 스크러빙이 수행되는 동안 풀 데이터는 사용하지 않은 상태로 유지되고 거의 응답하지만 이 작업은 성능에 부정적인 영향을 미칠 수 있습니다. 명시적 스크러빙을 시작하려면 zpool scrub 명령을 사용하십시오. 예를 들면 다음과 같습니다.

# zpool scrub tank

현재 스크러빙 작업의 상태는 zpool status 명령을 사용하여 표시할 수 있습니다. 예를 들면 다음과 같습니다.

# zpool status -v tank
pool: tank
state: ONLINE
scan: scrub in progress since Mon Jun  7 12:07:52 2010
201M scanned out of 222M at 9.55M/s, 0h0m to go
0 repaired, 90.44% done
config:

NAME      STATE     READ WRITE CKSUM
tank      ONLINE       0     0     0
mirror-0  ONLINE       0     0     0
c1t0d0    ONLINE       0     0     0
c1t1d0    ONLINE       0     0     0

errors: No known data errors

풀당 하나의 활성 스크러빙 작업만 한 번에 수행될 수 있습니다.

–s 옵션을 사용하여 진행 중인 스크러빙 작업을 중지할 수 있습니다. 예를 들면 다음과 같습니다.

# zpool scrub -s tank

대부분의 경우 데이터 무결성을 확인하는 스크러빙 작업을 계속 수행하여 완료해야 합니다. 스크러빙 작업이 시스템 성능에 영향을 미치는 경우 재량으로 이 작업을 중지할 수 있습니다.

루틴 스크러빙을 수행하면 시스템의 모든 디스크에 대한 연속 I/O가 보장됩니다. 루틴 스크러빙은 유휴 디스크를 절전 모드로 전환하지 못하도록 하는 부작용이 있습니다. 시스템이 일반적으로 I/O를 항상 수행하는 경우 또는 전력 소비가 중요하지 않은 경우에는 이 문제를 무시해도 안전합니다. 시스템이 대부분 유휴 상태이어서 디스크 전력을 아끼려면 백그라운드 스크러빙 대신 cron(1M) 예약된 명시적 스크러빙을 사용해 보십시오. 이렇게 해도 데이터에 대해 여전히 전체 스크러빙이 수행되지만 스크러빙이 완료될 때까지만 많은 양의 I/O가 생성되고 스크러빙 완료 시 디스크의 전력을 정상적으로 관리할 수 있게 됩니다. I/O가 증가한다는 것을 제외한 단점은 스크러빙이 전혀 수행되지 않는 기간이 많아 이 기간 동안 손상이 발생할 위험이 증가할 수 있다는 것입니다.

zpool status 출력 결과 해석에 대한 자세한 내용은 ZFS 저장소 풀 상태 질의를 참조하십시오.

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

장치가 교체되면 리실버링 작업이 시작되어 양호한 복사본의 데이터를 새 장치로 이동합니다. 이 작업은 디스크 스크러빙의 일종입니다. 따라서 지정된 시간에 풀에서 한 번만 수행될 수 있습니다. 스크러빙 작업이 진행 중인 경우 리실버링 작업이 현재 스크러빙을 일시 중지한 다음 리실버링이 완료된 후 다시 시작합니다.

리실버링에 대한 자세한 내용은 리실버링 상태 보기를 참조하십시오.