탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
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 스냅샷의 기능은 다음과 같습니다.
시스템 재부트 후에도 지속됩니다.
이론상 최대 스냅샷 수는 264입니다.
스냅샷은 별도의 보조 저장소를 사용하지 않습니다. 스냅샷이 생성된 파일 시스템 또는 볼륨과 동일한 저장소 풀에서 직접 디스크 공간을 사용합니다.
순환 스냅샷은 하나의 기본 단위 작업으로 신속하게 생성됩니다. 스냅샷은 한꺼번에 동시에 생성되거나, 아니면 전혀 생성되지 않습니다. 기본 단위 스냅샷 작업의 이점은 종속 파일 시스템에서도 스냅샷 데이터를 항상 하나의 일관된 시간에 가져온다는 점입니다.
볼륨 스냅샷은 직접 액세스할 수는 있지만, 복제, 백업, 롤백 등은 불가능합니다. ZFS 스냅샷 백업에 대한 자세한 내용은 ZFS 데이터 전송 및 수신을 참조하십시오.
스냅샷은 zfs snapshot 명령으로 생성되는데, 이 명령은 생성될 스냅샷의 이름만 인수로 사용합니다. 스냅샷은 이름은 다음과 같이 지정됩니다.
filesystem@snapname volume@snapname
스냅샷 이름은 ZFS 구성 요소 명명 요구 사항의 조건을 충족해야 합니다.
다음 예에서는 friday라는 이름의 tank/home/matt 스냅샷이 생성됩니다.
# zfs snapshot tank/home/matt@friday
-r 옵션을 사용하면 모든 종속 파일 시스템에 대한 스냅샷을 만들 수 있습니다. 예를 들면 다음과 같습니다.
# zfs snapshot -r tank/home@snap1 # zfs list -t snapshot -r tank/home zfs list -t snapshot -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home@snap1 0 - 34K - tank/home/mark@snap1 0 - 2.00G - tank/home/matt@snap1 0 - 1.00G - tank/home/tom@snap1 0 - 2.00G -
스냅샷에는 수정 가능한 등록 정보가 없습니다. 스냅샷에 적용할 수 있는 데이터 집합 등록 정보도 없습니다. 예를 들면 다음과 같습니다.
# zfs set compression=on tank/home/matt@friday cannot set property for 'tank/home/matt@friday': this property can not be modified for snapshots
스냅샷은 zfs destroy 명령을 사용하여 삭제됩니다. 예를 들면 다음과 같습니다.
# zfs destroy tank/home/matt@friday
데이터 집합의 스냅샷이 있을 경우에는 데이터 집합을 삭제할 수 없습니다. 예를 들면 다음과 같습니다.
# zfs destroy tank/home/matt cannot destroy 'tank/home/matt': filesystem has children use '-r' to destroy the following datasets: tank/home/matt@tuesday tank/home/matt@wednesday tank/home/matt@thursday
또한 스냅샷에서 생성된 복제본은 스냅샷을 삭제하기 전에 삭제해야 합니다.
destroy 하위 명령에 대한 자세한 내용은 ZFS 파일 시스템 삭제를 참조하십시오.
보내는 측에 더 이상 있지 않다는 이유로 zfs receive 명령으로 오래된 스냅샷을 무단으로 삭제하는 것과 같은 여러 자동 스냅샷 정책을 사용하는 경우 스냅샷 유지 기능을 사용할 것을 고려해 볼 수 있습니다.
스냅샷 유지 기능을 사용하면 스냅샷이 삭제되지 않습니다. 또한 이 기능을 사용하면 클론이 있는 스냅샷의 경우 zfs destroy -d 명령을 사용하여 마지막 클론을 제거하지 않는 한 해당 스냅샷을 삭제할 수 있습니다. 각 스냅샷에는 연관된 user-reference 카운트가 있는데, 이 카운트는 0으로 초기화되어 있습니다. 이 카운트는 스냅샷이 유지될 때마다 1씩 늘어나고 유지가 해제될 때마다 1씩 줄어듭니다.
이전 Oracle Solaris 릴리스에서는 복제본이 없는 경우 zfs destroy 명령을 통해서만 스냅샷을 삭제할 수 있었습니다. 이 Oracle Solaris 릴리스에서는 스냅샷의 user-reference 카운트도 0이어야 합니다.
스냅샷 또는 스냅샷 집합을 유지할 수 있습니다. 예를 들어, 다음 구문은 tank/home/cindy/snap@1에 유지 태그인 keep을 삽입합니다.
# zfs hold keep tank/home/cindy@snap1
-r 옵션을 사용하면 모든 종속 파일 시스템의 스냅샷을 반복적으로 유지할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs snapshot -r tank/home@now # zfs hold -r keep tank/home@now
이 구문은 단일 참조인 keep을 스냅샷 또는 스냅샷 집합에 추가합니다. 각 스냅샷에는 고유한 태그 이름 공간이 있으며 유지 태그는 해당 공간 내에서 고유해야 합니다. 유지된 스냅샷이 있는 경우 zfs destroy 명령을 사용하여 유지된 해당 스냅샷을 삭제하려고 하면 삭제되지 않습니다. 예를 들면 다음과 같습니다.
# zfs destroy tank/home/cindy@snap1 cannot destroy 'tank/home/cindy@snap1': dataset is busy
유지된 스냅샷을 삭제하려면 -d 옵션을 사용하십시오. 예를 들면 다음과 같습니다.
# zfs destroy -d tank/home/cindy@snap1
zfs holds 명령을 사용하면 유지된 스냅샷 목록이 표시됩니다. 예를 들면 다음과 같습니다.
# zfs holds tank/home@now NAME TAG TIMESTAMP tank/home@now keep Fri May 6 06:34:03 2011
# zfs holds -r tank/home@now NAME TAG TIMESTAMP tank/home/cindy@now keep Fri May 6 06:34:03 2011 tank/home/mark@now keep Fri May 6 06:34:03 2011 tank/home/matt@now keep Fri May 6 06:34:03 2011 tank/home/tom@now keep Fri May 6 06:34:03 2011 tank/home@now keep Fri May 6 06:34:03 2011
zfs release 명령을 사용하면 스냅샷 또는 스냅샷 집합에 대한 유지가 해제됩니다. 예를 들면 다음과 같습니다.
# zfs release -r keep tank/home@now
스냅샷이 해제되면 zfs destroy 명령을 사용하여 스냅샷을 삭제할 수 있습니다. 예를 들면 다음과 같습니다.
# zfs destroy -r tank/home@now
스냅샷 유지 정보는 다음 두 등록 정보로 식별할 수 있습니다.
zfs destroy -d 명령을 사용하여 스냅샷이 삭제 지연으로 표시된 경우 defer_destroy 등록 정보가 on입니다. 그렇지 않은 경우 이 등록 정보는 off입니다.
userrefs 등록 정보가 이 스냅샷에 대한 유지 수로 설정됩니다. 이를 user-reference 카운트라고도 합니다.
스냅샷의 이름을 바꿀 수는 있지만, 스냅샷이 생성된 것과 동일한 풀 및 데이터 집합 내에서 이름을 바꿔야 합니다. 예를 들면 다음과 같습니다.
# zfs rename tank/home/cindy@snap1 tank/home/cindy@today
또한 다음 단축 구문은 위의 구문과 같습니다.
# zfs rename tank/home/cindy@snap1 today
스냅샷이 생성된 풀 및 파일 시스템과 대상 풀 및 파일 시스템이 다르기 때문에 다음 스냅샷 이름 바꾸기 작업은 지원되지 않습니다.
# zfs rename tank/home/cindy@today pool/home/cindy@saturday cannot rename to 'pool/home/cindy@today': snapshots must be part of same dataset
zfs rename - r 명령을 사용하면 스냅샷의 이름을 반복적으로 바꿀 수 있습니다. 예를 들면 다음과 같습니다.
# zfs list -t snapshot -r users/home NAME USED AVAIL REFER MOUNTPOINT users/home@now 23.5K - 35.5K - users/home@yesterday 0 - 38K - users/home/lori@yesterday 0 - 2.00G - users/home/mark@yesterday 0 - 1.00G - users/home/neil@yesterday 0 - 2.00G - # zfs rename -r users/home@yesterday @2daysago # zfs list -t snapshot -r users/home NAME USED AVAIL REFER MOUNTPOINT users/home@now 23.5K - 35.5K - users/home@2daysago 0 - 38K - users/home/lori@2daysago 0 - 2.00G - users/home/mark@2daysago 0 - 1.00G - users/home/neil@2daysago 0 - 2.00G -
listsnapshots 풀 등록 정보를 사용하여 zfs list 출력 결과에서 스냅샷 목록 표시를 사용 또는 사용 안함으로 설정할 수 있습니다. 이 등록 정보는 기본적으로 사용으로 설정됩니다.
이 등록 정보를 사용 안함으로 설정하면 zfs list -t snapshot 명령을 사용하여 스냅샷 정보를 표시할 수 있습니다. 또는 listsnapshots 풀 등록 정보를 사용으로 설정하십시오. 예를 들면 다음과 같습니다.
# zpool get listsnapshots tank NAME PROPERTY VALUE SOURCE tank listsnapshots on default # zpool set listsnapshots=off tank # zpool get listsnapshots tank NAME PROPERTY VALUE SOURCE tank listsnapshots off local
파일 시스템 스냅샷은 파일 시스템 루트 내의 .zfs/snapshot 디렉토리에서 액세스할 수 있습니다. 예를 들어 tank/home/ahrens가 /home/ahrens에 마운트된 경우, tank/home/ahrens@thursday 스냅샷 데이터는 /home/ahrens/.zfs/snapshot/thursday 디렉토리에서 액세스할 수 있습니다.
# ls /tank/home/matt/.zfs/snapshot tuesday wednesday thursday
다음과 같이 스냅샷을 나열할 수 있습니다.
# zfs list -t snapshot -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home/cindy@today 0 - 2.00G - tank/home/mark@today 0 - 2.00G - tank/home/matt@tuesday 20K - 1.00G - tank/home/matt@wednesday 20K - 1.00G - tank/home/matt@thursday 0 - 1.00G -
다음과 같이 특정 파일 시스템용으로 생성된 스냅샷을 나열할 수 있습니다.
# zfs list -r -t snapshot -o name,creation tank/home NAME CREATION tank/home/cindy@today Fri May 6 6:32 2011 tank/home/mark@today Fri May 6 6:22 2011 tank/home/matt@tuesday Tue May 3 6:27 2011 tank/home/matt@wednesday Wed May 4 6:28 2011 tank/home/matt@thursday Thu May 5 6:28 2011
스냅샷이 생성되면 처음에는 디스크 공간이 스냅샷과 파일 시스템 간에 공유됩니다. 이전 스냅샷의 경우에도 마찬가지입니다. 그러나 파일 시스템이 변경되면 이전에 공유되던 디스크 공간을 스냅샷에서만 사용하게 되므로, 스냅샷의 used 등록 정보가 카운트됩니다. 또한 스냅샷을 삭제하면 다른 스냅샷에서 사용하던 고유 디스크 공간의 양(used 등록 정보)이 늘어날 수 있습니다.
스냅샷 공간의 referenced 등록 정보 값은 스냅샷이 생성되었을 당시의 파일 시스템 등록 정보 값과 같습니다.
used 등록 정보 값이 사용되는 방식에 대한 추가 정보를 확인할 수 있습니다. 새 읽기 전용 파일 시스템 등록 정보가 복제본, 파일 시스템 및 볼륨에 대한 디스크 공간 사용량을 설명합니다. 예를 들면 다음과 같습니다.
$ zfs list -o space -r rpool NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD rpool 59.1G 7.84G 21K 109K 0 7.84G rpool@snap1 - 21K - - - - rpool/ROOT 59.1G 4.78G 0 31K 0 4.78G rpool/ROOT@snap1 - 0 - - - - rpool/ROOT/zfsBE 59.1G 4.78G 15.6M 4.76G 0 0 rpool/ROOT/zfsBE@snap1 - 15.6M - - - - rpool/dump 59.1G 1.00G 16K 1.00G 0 0 rpool/dump@snap1 - 16K - - - - rpool/export 59.1G 99K 18K 32K 0 49K rpool/export@snap1 - 18K - - - - rpool/export/home 59.1G 49K 18K 31K 0 0 rpool/export/home@snap1 - 18K - - - - rpool/swap 61.2G 2.06G 0 16K 2.06G 0 rpool/swap@snap1 - 0 - - - -
이러한 등록 정보에 대한 설명은 표 6-1을 참조하십시오.
zfs rollback 명령을 사용하면 특성 스냅샷이 생성된 이후에 발생한 파일 시스템의 변경 사항을 모두 무시할 수 있습니다. 파일 시스템의 상태는 스냅샷 생성 시점으로 되돌아갑니다. 기본적으로 이 명령은 가장 최근의 스냅샷만 롤백할 수 있습니다.
이전 스냅샷으로 롤백하려면 중간 스냅샷을 모두 삭제해야 합니다. -r 옵션을 사용하면 이전 스냅샷을 삭제할 수 있습니다.
중간 스냅샷 복제본이 있을 경우 -R 옵션을 지정하여 복제본도 삭제해야 합니다.
주 - 롤백하려는 현재 파일 시스템이 현재 마운트된 경우 마운트가 해제되었다가 다시 마운트됩니다. 파일 시스템을 마운트 해제할 수 없으면 롤백이 실패합니다. -f 옵션은 필요한 경우 파일 시스템을 강제로 마운트 해제합니다.
다음 예에서는 tank/home/ahrens 파일 시스템이 tuesday 스냅샷으로 롤백됩니다.
# zfs rollback tank/home/matt@tuesday cannot rollback to 'tank/home/matt@tuesday': more recent snapshots exist use '-r' to force deletion of the following snapshots: tank/home/matt@wednesday tank/home/matt@thursday # zfs rollback -r tank/home/matt@tuesday
이 예에서는 이전 tuesday 스냅샷으로 롤백했으므로 wednesday 및 thursday 스냅샷이 삭제되었습니다.
# zfs list -r -t snapshot -o name,creation tank/home/matt NAME CREATION tank/home/matt@tuesday Tue May 3 6:27 2011
ZFS 스냅샷 차이점은 zfs diff 명령을 사용하여 확인할 수 있습니다.
예를 들어, 다음 두 스냅샷이 생성된다고 가정해 보겠습니다.
$ ls /tank/home/tim fileA $ zfs snapshot tank/home/tim@snap1 $ ls /tank/home/tim fileA fileB $ zfs snapshot tank/home/tim@snap2
예를 들어, 두 스냅샷 간의 차이를 확인하려면 다음과 비슷한 구문을 사용하십시오.
$ zfs diff tank/home/tim@snap1 tank/home/timh@snap2 M /tank/home/tim/ + /tank/home/tim/fileB
출력 결과에서 M은 디렉토리가 수정되었음을 나타냅니다. +는 fileB가 나중 스냅샷에 존재함을 나타냅니다.
다음 출력에서 R은 스냅샷에 있는 파일의 이름이 변경되었음을 나타냅니다.
$ mv /tank/cindy/fileB /tank/cindy/fileC $ zfs snapshot tank/cindy@snap2 $ zfs diff tank/cindy@snap1 tank/cindy@snap2 M /tank/cindy/ R /tank/cindy/fileB -> /tank/cindy/fileC
다음 표는 zfs diff 명령으로 식별되는 파일 또는 디렉토리 변경 사항을 요약하여 보여줍니다.
|
자세한 내용은 zfs(1M)를 참조하십시오.