탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris ZFS 관리 설명서 Oracle Solaris 10 8/11 Information Library (한국어) |
1. Oracle Solaris ZFS 파일 시스템(소개)
3. Oracle Solaris ZFS와 전통적인 파일 시스템의 차이
4. Oracle Solaris ZFS 저장소 풀 관리
5. Oracle Solaris ZFS 루트 파일 시스템 설치 및 부트
6. Oracle Solaris ZFS 파일 시스템 관리
7. Oracle Solaris ZFS 스냅샷 및 복제 작업
8. ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호
장치와 관련된 대부분의 기본 정보는 ZFS 저장소 풀의 구성 요소에서 다룹니다. 풀이 만들어진 후 풀 내의 물리적인 장치를 관리하기 위한 여러 가지 작업을 수행할 수 있습니다.
새 최상위 레벨 가상 장치를 추가하여 디스크 공간을 동적으로 추가할 수 있습니다. 이 디스크 공간은 풀의 모든 데이터 집합에서 즉시 사용할 수 있습니다. 풀에 새 가상 장치를 추가하려면 zpool add 명령을 사용합니다. 예:
# zpool add zeepool mirror c2t1d0 c2t2d0
가상 장치를 지정하기 위한 형식은 zpool create 명령의 경우와 같습니다. 장치가 사용 중인지 여부가 확인되고, -f 옵션 없이는 명령에서 중복성 레벨을 변경할 수 없습니다. 명령은 dry run을 수행할 수 있도록 -n 옵션도 지원합니다. 예를 들면 다음과 같습니다.
# zpool add -n zeepool mirror c3t1d0 c3t2d0 would update 'zeepool' to the following configuration: zeepool mirror c1t0d0 c1t1d0 mirror c2t1d0 c2t2d0 mirror c3t1d0 c3t2d0
이 명령 구문은 미러된 장치 c3t1d0 및 c3t2d0을 zeepool 풀의 기존 구성에 추가합니다.
가상 장치 검증 수행 방식에 대한 자세한 내용은 사용 중인 장치 감지를 참조하십시오.
예 4-1 미러된 ZFS 구성에 디스크 추가
다음 예에서는 Oracle Sun Fire x4500 시스템의 기존 미러된 ZFS 구성에 다른 미러가 추가됩니다.
# zpool status tank pool: tank state: ONLINE scrub: none requested 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 errors: No known data errors # zpool add tank mirror c0t3d0 c1t3d0 # zpool status tank pool: tank state: ONLINE scrub: none requested 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
예 4-2 RAID-Z 구성에 디스크 추가
마찬가지로 추가 디스크를 RAID-Z 구성에 추가할 수 있습니다. 다음 예는 3개의 디스크를 포함하는 하나의 RAID-Z 장치를 갖춘 저장소 풀을 각각 3개의 디스크를 포함하는 두 개의 RAID-Z 장치를 갖춘 저장소 풀로 변환하는 방법을 보여줍니다.
# zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 c1t4d0 ONLINE 0 0 0 errors: No known data errors # zpool add rzpool raidz c2t2d0 c2t3d0 c2t4d0 # zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 c2t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t4d0 ONLINE 0 0 0 errors: No known data errors
예 4-3 미러된 로그 장치 추가 및 제거
다음 예는 미러된 저장소 풀에 미러된 로그 장치를 추가하는 방법을 보여줍니다. 저장소 풀에서 로그 장치 사용에 대한 자세한 내용은 개별 ZFS 로그 장치 설정을 참조하십시오.
# zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors # zpool add newpool log mirror c0t6d0 c0t7d0 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 logs mirror-1 ONLINE 0 0 0 c0t6d0 ONLINE 0 0 0 c0t7d0 ONLINE 0 0 0 errors: No known data errors
로그 장치를 기존 로그 장치에 연결하여 미러된 로그 장치를 만들 수 있습니다. 이 작업은 미러되지 않은 저장소 풀에서 장치를 연결하는 것과 동일합니다.
zpool remove 명령을 사용하여 로그 장치를 제거할 수 있습니다. 이전 예에서 미러된 로그 장치는 mirror-1 인수를 지정하여 제거할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool remove newpool mirror-1 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors
풀 구성에 하나의 로그 장치만 포함되어 있을 경우 장치 이름을 지정하여 로그 장치를 제거할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c0t8d0 ONLINE 0 0 0 c0t9d0 ONLINE 0 0 0 logs c0t10d0 ONLINE 0 0 0 errors: No known data errors # zpool remove pool c0t10d0
예 4-4 캐시 장치 추가 및 제거
캐시 장치를 ZFS 저장소 풀에 추가하고 더 이상 필요하지 않을 경우 제거할 수 있습니다.
zpool add 명령을 사용하여 캐시 장치를 추가합니다. 예:
# zpool add tank cache c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors
캐시 장치는 미러링하거나 RAID-Z 구성의 일부가 될 수 없습니다.
zpool remove 명령을 사용하여 캐시 장치를 제거합니다. 예를 들면 다음과 같습니다.
# zpool remove tank c2t5d0 c2t8d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 errors: No known data errors
현재 zpool remove 명령만 핫 스페어, 로그 장치 및 캐시 장치 제거를 지원합니다. 기본 미러된 풀 구성의 일부인 장치는 zpool detach 명령을 사용하여 제거할 수 있습니다. 중복되지 않은 장치 및 RAID-Z 장치는 풀에서 제거할 수 없습니다.
ZFS 저장소 풀에서 캐시 장치 사용에 대한 자세한 내용은 캐시 장치를 사용하여 ZFS 저장소 풀 만들기를 참조하십시오.
zpool add 명령 이외에 zpool attach 명령을 사용하여 새 장치를 기존 미러된 장치 또는 미러되지 않은 장치에 추가할 수 있습니다.
디스크를 연결하여 미러된 루트 풀을 만드는 경우 미러링된 ZFS 루트 풀을 만드는 방법(사후 설치).
ZFS 루트 풀에서 디스크를 교체하는 경우 ZFS 루트 풀의 디스크 교체 방법을 참조하십시오.
예 4-5 이중 미러된 저장소 풀을 삼중 미러된 저장소 풀로 변환
이 예에서는 zeepool이 기존 이중 미러이고, 새 장치 c2t1d0을 기존 장치 c1t1d0에 연결하여 삼중 미러로 변환합니다.
# zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach zeepool c1t1d0 c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 12:59:20 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 592K resilvered errors: No known data errors
기존 장치가 삼중 미러의 일부인 경우 새 장치를 연결하면 사중 미러가 만들어지고, 이런 방식으로 계속 이어집니다. 어떠한 경우든지 새 장치는 즉시 재구성을 시작합니다.
예 4-6 중복되지 않은 ZFS 저장소 풀을 미러된 ZFS 저장소 풀로 변환
또한 zpool attach 명령을 사용하여 중복되지 않은 저장소 풀을 중복된 저장소 풀로 변환할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool create tank c0t1d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach tank c0t1d0 c1t1d0 # zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 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 73.5K resilvered errors: No known data errors
zpool detach 명령을 사용하여 미러된 저장소 풀에서 장치를 분리할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool detach zeepool c2t1d0
하지만 이 작업은 데이터의 다른 유효한 복제본이 존재할 경우 실패합니다. 예:
# zpool detach newpool c1t2d0 cannot detach c1t2d0: only applicable to mirror and replacing vdevs
미러된 ZFS 저장소 풀은 zpool split 명령을 사용하여 백업 풀로 빠르게 복제할 수 있습니다.
현재는 이 기능을 사용하여 미러된 루트 풀을 분할할 수 없습니다.
zpool split 명령을 사용하면 미러된 ZFS 저장소 풀에서 하나 이상의 디스크를 분리하여 분리된 디스크로 새 풀을 만들 수 있습니다. 새 풀은 원래 미러된 ZFS 저장소 풀과 동일한 컨텐츠를 가집니다.
기본적으로 미러된 풀에서 zpool split 작업은 새로 만들어진 풀에 대한 마지막 디스크를 분리합니다. 분할 작업 이후에는 새 풀을 가져올 수 있습니다. 예를 들면 다음과 같습니다.
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool split tank tank2 # zpool import tank2 # zpool status tank tank2 pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 errors: No known data errors pool: tank2 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank2 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors
zpool split 명령에서 새로 만들어진 풀에 대해 사용해야 하는 디스크를 지정할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool split tank tank2 c1t0d0
실제 분할 작업이 이루어지기 전에 메모리의 데이터는 미러된 디스크로 비워집니다. 데이터가 비워진 후 디스크는 풀에서 분리되고 새 풀 GUID가 부여됩니다. 새 풀 GUID는 분할된 동일 시스템에서 풀을 가져올 수 있도록 하기 위해 생성됩니다.
분할될 풀에 기본 데이터 집합 마운트 지점이 없고 새 풀이 동일 시스템에서 만들어질 경우 기존 마운트 지점이 서로 충돌하지 않도록 zpool split -R 옵션을 사용하여 새 풀에 대한 대체 루트 디렉토리를 지정해야 합니다. 예를 들면 다음과 같습니다.
# zpool split -R /tank2 tank tank2
zpool split -R 옵션을 사용하지 않고 새 풀을 가져오려고 할 때 마운트 지점 충돌을 알 수 있는 경우 -R 옵션으로 새 풀을 가져오십시오. 새 풀이 다른 시스템에서 만들어질 경우 마운트 지점 충돌이 발생하지 않는다면 대체 루트 디렉토리 지정은 필요하지 않습니다.
zpool split 기능을 사용하기 전에 다음 고려 사항을 검토하십시오.
이 기능은 여러 디스크의 RAIDZ 구성 또는 중복되지 않은 풀에 대해 사용할 수 없습니다.
데이터 및 응용 프로그램 작업은 zpool split 작업을 시도하기 전에 끝내야 합니다.
무시할 만한 디스크가 아닌 중요한 디스크가 있을 경우 디스크의 쓰기 캐시 비우기 명령이 중요합니다.
리실버링이 진행 중인 경우 풀을 분할할 수 없습니다.
미러된 풀 분할은 풀에 2 ~ 3개의 디스크가 포함되어 있을 때 가장 좋습니다. 이 경우 원래 풀의 마지막 디스크가 새로 만들어진 풀에 사용됩니다. 그런 다음 zpool attach 명령을 사용하여 원래 미러된 저장소 풀을 다시 만들거나 새로 만들어진 풀을 미러된 저장소 풀로 변환할 수 있습니다. 이 기능을 사용하여 기존 미러된 풀에서 새 미러된 풀을 만들기 위한 방법은 현재 없습니다.
기존 풀이 삼중 미러인 경우 새 풀은 분할 작업 후 하나의 디스크를 포함합니다. 기존 풀이 2개의 디스크로 이루어진 이중 미러인 경우 결과는 2개의 디스크로 이루어진 2개의 중복되지 않은 풀입니다. 중복되지 않은 풀을 미러된 풀로 변환하려면 2개의 추가 디스크를 연결해야 합니다.
분할 작업 중 데이터를 중복으로 유지하기 위한 좋은 방법은 3개의 디스크를 포함하는 미러된 저장소 풀을 분할하여 분할 작업 후 원래 풀이 2개의 미러된 디스크를 포함하도록 하는 것입니다.
예 4-7 미러된 ZFS 풀 분할
다음 예에서 3개의 디스크 c1t0d0, c1t2d0 및 c1t3d0이 있는 trinity라는 미러된 저장소 풀이 분할됩니다. 결과적으로 두 개의 풀은 c1t0d0 및 c1t2d0 디스크가 있는 미러된 풀 trinity와 c1t3d0 디스크가 있는 새 풀 neo입니다. 각 풀은 동일한 컨텐츠를 가집니다.
# zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors # zpool split trinity neo # zpool import neo # zpool status trinity neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors
ZFS에서는 개별 장치를 오프라인이나 온라인으로 전환할 수 있습니다. 하드웨어가 불안정하거나 제대로 작동하지 않을 경우 이러한 조건이 일시적이라면 ZFS는 데이터 읽기나 데이터 쓰기를 계속합니다. 조건이 일시적이 아니라면 장치를 오프라인으로 전환하여 장치를 무시하도록 ZFS에 지시할 수 있습니다. ZFS는 오프라인 장치에 요청을 보내지 않습니다.
주 - 장치를 교체하기 위해 오프라인으로 전환할 필요는 없습니다.
zpool offline 명령을 사용하여 장치를 오프라인으로 전환할 수 있습니다. 장치는 경로 또는 단축 이름으로 지정할 수 있습니다(장치가 디스크인 경우). 예를 들면 다음과 같습니다.
# zpool offline tank c1t0d0 bringing device c1t0d0 offline
장치를 오프라인으로 전환할 때 다음 사항을 고려하십시오.
풀을 오프라인으로 전환하면 풀에 결함이 발생하는 경우 오프라인으로 전환할 수 없습니다. 예를 들어, raidz1 구성에서 2개의 장치를 오프라인으로 전환할 수 없으며, 최상위 레벨 가상 장치를 오프라인으로 전환할 수 없습니다.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas
기본적으로 OFFLINE 상태가 지속됩니다. 시스템이 재부트되어도 장치는 오프라인을 유지합니다.
장치를 일시적으로 오프라인으로 전환하려면 zpool offline -t 옵션을 사용하십시오. 예를 들면 다음과 같습니다.
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline
시스템이 재부트되면 이 장치는 자동으로 ONLINE 상태로 돌아갑니다.
장치가 오프라인으로 전환되었을 때 저장소 풀에서 분리된 것이 아닙니다. 다른 풀에서 오프라인 장치를 사용하려고 시도하면 원래 풀이 삭제된 이후라도 다음과 유사한 메시지가 나타납니다.
device is part of exported or potentially active ZFS pool. Please see zpool(1M)
원래 저장소 풀을 삭제한 후 다른 저장소 풀에서 오프라인 장치를 사용하려는 경우에는 먼저 장치를 온라인으로 전환한 다음 원래 저장소 풀을 삭제하십시오.
원래 저장소 풀을 유지하면서 다른 저장소 풀에서 장치를 사용하는 다른 방법은 원래 저장소 풀의 기존 장치를 다른 호환 장치로 교체하는 것입니다. 장치 교체에 대한 자세한 내용은 저장소 풀의 장치 교체를 참조하십시오.
오프라인 장치는 풀 상태를 질의할 때 OFFLINE 상태에 있습니다. 풀 상태 질의에 대한 자세한 내용은 ZFS 저장소 풀 상태 질의를 참조하십시오.
장치 건전성에 대한 자세한 내용은 ZFS 저장소 풀의 건전성 상태 확인을 참조하십시오.
장치가 오프라인으로 전환된 후 zpool online 명령을 사용하여 다시 온라인으로 전환할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool online tank c1t0d0 bringing device c1t0d0 online
장치가 온라인으로 전환되었을 때 풀에 쓰여진 모든 데이터는 새로 사용 가능한 장치와 재동기화됩니다. 장치 온라인으로 전환을 사용하여 디스크를 교체할 수는 없습니다. 장치를 오프라인으로 전환하고 장치를 교체한 다음 온라인으로 전환하려고 하는 경우 결함 상태가 지속됩니다.
결함이 있는 장치를 온라인으로 전환하려고 시도할 경우 다음과 유사한 메시지가 표시됩니다.
# zpool online tank c1t0d0 warning: device 'c1t0d0' onlined, but remains in faulted state use 'zpool replace' to replace devices that are no longer present
결함이 있는 디스크 메시지는 콘솔에 표시되거나 /var/adm/messages 파일에 기록될 수도 있습니다. 예를 들면 다음과 같습니다.
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device.
결함이 있는 장치 교체에 대한 자세한 내용은 누락된 장치 해결을 참조하십시오.
큰 용량의 디스크가 풀에 연결되었거나 작은 용량의 디스크가 큰 용량의 디스크로 교체된 경우 zpool online -e 명령을 사용하여 풀 크기를 확장할 수 있습니다. 기본적으로 풀에 추가된 디스크는 autoexpand 풀 등록 정보가 사용으로 설정되지 않으면 전체 크기로 확장되지 않습니다. 교체 디스크가 이미 온라인 상태이거나 디스크가 현재 오프라인 상태인 경우에도 zpool online -e 명령을 사용하여 풀을 자동으로 확장할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool online -e tank c1t13d0
실패로 인해 장치가 오프라인으로 전환되어 zpool status 출력 결과에 오류가 나열될 경우 zpool clear 명령을 사용하여 오류 수를 지울 수 있습니다.
인수 없이 지정되면 이 명령은 풀 내의 모든 장치 오류를 지웁니다. 예를 들면 다음과 같습니다.
# zpool clear tank
하나 이상의 장치가 지정되면 이 명령은 지정된 장치와 연관된 오류만 지웁니다. 예:
# zpool clear tank c1t0d0
zpool 오류 지우기에 대한 자세한 내용은 일시적인 오류 지우기를 참조하십시오.
zpool replace 명령을 사용하여 저장소 풀의 장치를 교체할 수 있습니다.
중복된 풀의 동일 위치에서 다른 장치로 장치를 물리적으로 교체하는 경우 교체되는 장치만 식별하면 됩니다. 일부 하드웨어에서 ZFS는 장치가 동일 위치의 다른 디스크에 있다고 인식합니다. 예를 들어, 디스크를 제거하고 동일 위치에서 교체하여 실패한 디스크(c1t1d0)를 교체하려면 다음 구문을 사용합니다.
# zpool replace tank c1t1d0
다른 물리적 위치에 있는 디스크로 저장소 풀의 디스크를 교체하는 경우 두 장치를 모두 지정해야 합니다. 예를 들면 다음과 같습니다.
# zpool replace tank c1t1d0 c1t2d0
ZFS 루트 풀에서 디스크를 교체하는 경우 ZFS 루트 풀의 디스크 교체 방법을 참조하십시오.
다음은 디스크 교체를 위한 기본 단계입니다.
필요한 경우 zpool offline 명령을 사용하여 디스크를 오프라인으로 전환합니다.
교체할 디스크를 제거합니다.
교체 디스크를 삽입합니다.
zpool replace 명령을 실행합니다. 예를 들면 다음과 같습니다.
# zpool replace tank c1t1d0
zpool online 명령을 사용하여 디스크를 온라인으로 전환합니다.
Oracle Sun Fire 시스템과 같은 일부 시스템에서는 오프라인으로 전환하기 전에 디스크 구성을 해제해야 합니다. 이 시스템의 동일 슬롯 위치에서 디스크를 교체하는 경우 이 섹션의 첫번째 예에 설명된 대로 zpool replace 명령만 실행하면 됩니다.
Sun Fire X4500 시스템에서 디스크 교체에 대한 예는 예 11-1을 참조하십시오.
ZFS 저장소 풀에서 장치를 교체할 때 다음을 고려하십시오.
autoreplace 풀 등록 정보를 on으로 설정한 경우 이전에 풀에 속한 장치와 동일한 물리적 위치에서 발견된 모든 새 장치가 자동으로 포맷되고 교체됩니다. 이 등록 정보가 사용으로 설정되면 zpool replace 명령을 사용할 필요가 없습니다. 이 기능은 일부 하드웨어 유형에서는 사용할 수 없습니다.
교체 장치의 크기는 미러된 구성 또는 RAID-Z 구성에서 가장 작은 용량의 디스크보다 크거나 같아야 합니다.
교체하는 장치보다 용량이 큰 교체 장치가 풀에 추가될 경우 자동으로 전체 크기로 확장되지 않습니다. 큰 용량의 디스크가 풀에 추가될 경우 autoexpand 풀 등록 정보 값이 풀의 확장 여부를 결정합니다. 기본적으로 autoexpand 등록 정보는 사용 안함으로 설정됩니다. 큰 용량이 디스크가 풀에 추가되기 전이나 후에 이 등록 정보를 사용으로 설정하여 풀 크기를 확장할 수 있습니다.
다음 예에서는 미러된 풀에서 두 개의 16GB 디스크가 두 개의 72GB 디스크로 교체되었습니다. 디스크 교체 후 전체 디스크 크기를 확장하기 위해 autoexpand 등록 정보가 사용으로 설정됩니다.
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE -
대형 풀에서 많은 디스크를 교체하는 작업은 새 디스크로 데이터 리실버링으로 인해 시간이 오래 걸립니다. 또한 디스크 교체 사이에 zpool scrub 명령을 실행하여 교체 장치가 정상 작동하고 데이터가 올바르게 쓰여지는지 확인해야 할 수 있습니다.
실패한 디스크가 핫 스페어로 자동 교체된 경우에는 실패한 디스크가 교체된 후 스페어를 분리해야 합니다. zpool detach 명령을 사용하여 미러된 풀 또는 RAID-Z 풀에서 스페어를 분리할 수 있습니다. 핫 스페어 분리에 대한 자세한 내용은 저장소 풀에서 핫 스페어 활성화 및 비활성화를 참조하십시오.
장치 교체에 대한 자세한 내용은 누락된 장치 해결 및 손상된 장치 교체 또는 복구를 참조하십시오.
핫 스페어 기능을 사용하여 하나 이상의 저장소 풀에서 실패하거나 결함이 있는 장치를 교체하는 데 사용할 수 있는 디스크를 지정할 수 있습니다. 장치를 핫 스페어로 지정하면 해당 장치는 풀에서 활성 장치가 아니지만, 풀의 활성 장치가 실패할 경우 핫 스페어가 자동으로 실패한 장치를 교체하게 됩니다.
다음 방법으로 장치를 핫 스페어로 지정할 수 있습니다.
풀이 zpool create 명령을 사용하여 만들어진 경우
풀이 zpool add 명령을 사용하여 만들어진 후
다음 예는 풀이 만들어진 경우 장치를 핫 스페어로 지정하는 방법을 보여줍니다.
# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0 # zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t2d0 AVAIL c2t2d0 AVAIL errors: No known data errors
다음 예는 풀이 만들어진 후 풀에 장치를 추가하여 핫 스페어를 지정하는 방법을 보여줍니다.
# zpool add neo spare c5t3d0 c6t3d0 # zpool status neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c3t3d0 ONLINE 0 0 0 c4t3d0 ONLINE 0 0 0 spares c5t3d0 AVAIL c6t3d0 AVAIL errors: No known data errors
핫 스페어는 zpool remove 명령을 사용하여 저장소 풀에서 제거할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool remove zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t3d0 AVAIL errors: No known data errors
핫 스페어는 저장소 풀에서 현재 사용되는 경우 제거할 수 없습니다.
ZFS 핫 스페어를 사용할 때 다음을 고려하십시오.
현재 zpool remove 명령은 핫 스페어, 캐시 장치 및 로그 장치를 제거하는 데만 사용할 수 있습니다.
디스크를 핫 스페어로 추가하려면 핫 스페어가 풀에서 가장 큰 용량의 디스크보다 크거나 같아야 합니다. 풀에서 더 작은 용량의 디스크를 스페어로 추가하는 것도 가능합니다. 하지만 자동으로 또는 zpool replace 명령으로 더 작은 용량의 스페어가 활성화되면 다음과 유사한 오류와 함께 작업을 실패합니다.
cannot replace disk3 with disk4: device is too small
핫 스페어는 다음 방법으로 활성화됩니다.
수동 교체 – zpool replace 명령을 사용하여 저장소 풀에서 실패한 장치를 핫 스페어로 교체합니다.
자동 교체 – 결함이 감지되면 FMA 에이전트가 풀을 조사하여 사용 가능한 핫 스페어가 있는지 확인합니다. 있을 경우 사용 가능한 스페어로 결함이 있는 장치를 교체합니다.
현재 사용 중인 핫 스페어가 실패할 경우 FMA 에이전트는 스페어를 분리하고 교체를 취소합니다. 그런 다음 사용 가능한 다른 핫 스페어로 장치 교체를 시도합니다. 장치가 시스템에서 사라질 때만 ZFS 진단 엔진에서 결함을 생성하므로 이 기능은 현재 제한적입니다.
활성 스페어로 실패한 장치를 물리적으로 교체하는 경우 zpool detach 명령을 사용하여 스페어를 분리하고 원래 장치를 다시 활성화할 수 있습니다. autoreplace 풀 등록 정보를 on으로 설정한 경우 새 장치가 삽입되고 온라인 작업이 완료되면 스페어가 자동으로 분리되고 스페어 풀로 돌아갑니다.
zpool replace 명령을 사용하여 장치를 수동으로 핫 스페어로 교체할 수 있습니다. 예 4-8을 참조하십시오.
결함이 있는 장치는 핫 스페어를 사용할 수 있는 경우 자동으로 교체됩니다. 예를 들면 다음과 같습니다.
# zpool status -x pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010 config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 88.5K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors
현재 다음 방법으로 핫 스페어를 비활성화할 수 있습니다.
저장소 풀에서 핫 스페어를 제거합니다.
실패한 디스크가 물리적으로 교체된 후 핫 스페어를 분리합니다. 예 4-9를 참조하십시오.
핫 스페어를 일시적으로 또는 영구적으로 스와핑합니다. 예 4-10을 참조하십시오.
예 4-8 디스크를 수동으로 핫 스페어로 교체
이 예에서 zpool replace 명령을 사용하여 디스크 c2t1d0을 핫 스페어 c2t3d0으로 교체합니다.
# zpool replace zeepool c2t1d0 c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors
그런 다음 디스크 c2t1d0을 분리합니다.
# zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered errors: No known data errors
예 4-9 실패한 디스크가 교체된 후 핫 스페어 분리
이 예에서 실패한 디스크(c2t1d0)는 물리적으로 교체되고 zpool replace 명령을 사용하여 ZFS에 통지됩니다.
# zpool replace zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered c2t1d0 ONLINE 0 0 0 spares c2t3d0 INUSE currently in use errors: No known data errors
그런 다음 zpool detach 명령을 사용하여 핫 스페어를 스페어 풀로 복귀시킵니다. 예를 들면 다음과 같습니다.
# zpool detach zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c2t3d0 AVAIL errors: No known data errors
예 4-10 실패한 디스크 분리 및 핫 스페어 사용
현재 교체 중인 핫 스페어를 일시적으로 또는 영구적으로 스와핑하여 실패한 디스크를 교체하려는 경우 원래 (실패한) 디스크를 분리합니다. 실패한 디스크가 교체되면 저장소 풀에 스페어로 다시 추가할 수 있습니다. 예를 들면 다음과 같습니다.
# zpool status zeepool pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver in progress for 0h0m, 70.47% done, 0h0m to go config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t3d0 INUSE currently in use errors: No known data errors # zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:46:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered errors: No known data errors (Original failed disk c2t1d0 is physically replaced) # zpool add zeepool spare c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:48:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t1d0 AVAIL errors: No known data errors