탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 관리: ZFS 파일 시스템 Oracle Solaris 11 Information Library (한국어) |
1. Oracle Solaris ZFS 파일 시스템(소개)
3. Oracle Solaris ZFS와 전통적인 파일 시스템의 차이
4. Oracle Solaris ZFS 저장소 풀 관리
6. Oracle Solaris ZFS 파일 시스템 관리
7. Oracle Solaris ZFS 스냅샷 및 복제 작업
8. ACL 및 속성을 사용하여 Oracle Solaris ZFS 파일 보호
다음 절은 Oracle Solaris 영역이 있는 시스템에서 ZFS를 사용하는 방법을 설명합니다.
ZFS 데이터 집합을 영역과 연관시킬 때 다음 사항에 유의하십시오.
관리 제어기 위임 여부에 상관없이 ZFS 파일 시스템을 추가하거나 비전역 영역에 복제할 수 있습니다.
비전역 영역에 ZFS 볼륨을 장치로 추가할 수 있습니다.
지금은 ZFS 스냅샷을 영역과 연관시킬 수 없습니다.
다음 섹션에서 ZFS 데이터 집합은 파일 시스템이나 복제본을 말합니다.
데이터 집합을 추가하면 (영역 관리자가 기본 파일 시스템 계층에서 등록 정보를 제어하거나 새 파일 시스템을 만들 수 없더라도) 비전역 영역에서 디스크 공간을 전역 영역과 공유할 수 있습니다. 이 작업은 다른 유형의 파일 시스템을 영역에 추가하는 것과 같으며, 주 목적이 전적으로 공통 디스크 공간을 공유하는 것일 때 사용해야 합니다.
ZFS에서는 데이터 집합이 비전역 영역에 위임되므로 영역 관리자로 데이터 집합과 모든 자식을 완전히 제어할 수 있습니다. 영역 관리자는 파일 시스템을 만들고 삭제하거나, 해당 데이터 집합 내에 복제하거나, 데이터 집합의 등록 정보를 수정할 수 있습니다. 영역 관리자는 위임된 데이터 집합에 설정된 최상위 레벨의 쿼터 초과를 비롯하여 영역에 추가되지 않은 데이터 집합에 영향을 미칠 수 없습니다.
Oracle Solaris 영역이 설치된 시스템에서 ZFS로 작업할 때 다음 사항을 고려하십시오.
비전역 영역에 추가된 ZFS 파일 시스템에서 mountpoint 등록 정보가 legacy로 설정되어야 합니다.
소스 zonepath와 대상 zonepath가 모두 ZFS 파일 시스템에 상주하고 동일한 풀에 있는 경우 zoneadm clone이 영역 복제를 위해 ZFS 복제를 자동으로 사용합니다. zoneadm clone 명령은 소스 zonepath의 ZFS 스냅샷을 만들고 대상 zonepath를 설정합니다. 영역 복제를 위해 zfs clone 명령을 사용할 수 없습니다. 자세한 내용은 Oracle Solaris 관리: Oracle Solaris Zones, Oracle Solaris 10 Zones 및 리소스 관리의 제II부, Oracle Solaris Zones을 참조하십시오.
주 목적이 전적으로 전역 영역과 공간을 공유하는 것일 때 ZFS 파일 시스템을 일반 파일 시스템으로 추가할 수 있습니다. 비전역 영역에 추가된 ZFS 파일 시스템에서 mountpoint 등록 정보가 legacy로 설정되어야 합니다. 예를 들어, tank/zone/zion 파일 시스템을 비전역 영역에 추가할 경우 다음과 같이 전역 영역에 mountpoint 등록 정보를 설정합니다.
# zfs set mountpoint=legacy tank/zone/zion
zonecfg 명령의 add fs 하위 명령을 사용하여 비전역 영역에 ZFS 파일 시스템을 추가할 수 있습니다.
다음 예에서 전역 영역 관리자에 의해 전역 영역에서 비전역 영역으로 ZFS 파일 시스템이 추가됩니다.
# zonecfg -z zion zonecfg:zion> add fs zonecfg:zion:fs> set type=zfs zonecfg:zion:fs> set special=tank/zone/zion zonecfg:zion:fs> set dir=/export/shared zonecfg:zion:fs> end
이 구문은 ZFS 파일 시스템 tank/zone/zion을 이미 구성된 zion 영역에 추가하고 /export/shared에서 마운트됩니다. 파일 시스템의 mountpoint 등록 정보는 legacy로 설정해야 하고 파일 시스템은 다른 위치에 이미 마운트될 수 없습니다. 영역 관리자는 파일 시스템 내에서 파일을 만들고 삭제할 수 있습니다. 파일 시스템은 다른 위치에 다시 마운트할 수 없고 영역 관리자가 atime, readonly, compression 등의 등록 정보를 파일 시스템에서 변경할 수 없습니다. 전역 영역 관리자는 파일 시스템의 등록 정보를 설정하고 제어할 책임이 있습니다.
zonecfg 명령 및 zonecfg를 사용한 리소스 유형 구성에 대한 자세한 내용은 Oracle Solaris 관리: Oracle Solaris Zones, Oracle Solaris 10 Zones 및 리소스 관리의 제II부, Oracle Solaris Zones을 참조하십시오.
저장소 관리를 영역에 위임하는 주 목적을 충족하기 위해 ZFS는 zonecfg 명령의 add dataset 하위 명령을 통해 비전역 영역에 데이터 집합을 추가할 수 있도록 지원합니다.
다음 예에서 전역 영역 관리자에 의해 전역 영역에서 비전역 영역으로 ZFS 파일 시스템이 위임됩니다.
# zonecfg -z zion zonecfg:zion> add dataset zonecfg:zion:dataset> set name=tank/zone/zion zonecfg:zion:dataset> set alias=tank zonecfg:zion:dataset> end
파일 시스템 추가와 달리, 이 구문에서 ZFS 파일 시스템 tank/zone/zion이 이미 구성된 zion 영역에 표시됩니다. zion 영역 내에서 이 파일 시스템은 tank/zone/zion으로 액세스할 수 없지만 tank라는 가상 풀로 액세스할 수 있습니다. 위임된 파일 시스템 별칭은 원래 풀의 뷰를 영역에 가상 풀로 제공합니다. 별칭 등록 정보는 가상 풀의 이름을 지정합니다. 별칭을 지정하지 않으면 파일 시스템 이름의 마지막 구성 요소와 일치하는 기본 별칭이 사용됩니다. 특정 별칭을 제공하지 않은 경우 위 예의 기본 별칭은 zion입니다.
위임된 데이터 집합 내에서 영역 관리자는 파일 시스템 등록 정보를 설정하고 종속 파일 시스템을 만들 수 있습니다. 더불어, 영역 관리자는 스냅샷을 만들거나 복제하고, 아니면 전체 파일 시스템 계층을 제어할 수 있습니다. 위임된 파일 시스템 내에 ZFS 볼륨을 만들 경우 장치 리소스로 추가된 ZFS 볼륨과 충돌할 수 있습니다. 자세한 내용은 다음 절 및 dev(7FS)를 참조하십시오.
다음과 같은 방법으로 비전역 영역에 ZFS 볼륨을 추가 또는 생성하거나 비전역 영역의 볼륨 데이터에 대한 액세스를 추가할 수 있습니다.
권한 있는 영역 관리자는 비전역 영역에 ZFS 볼륨을 이전에 위임된 파일 시스템의 종속 항목으로 만들 수 있습니다. 예를 들면 다음과 같습니다.
# zfs create -V 2g tank/zone/zion/vol1
위 구문은 영역 관리자가 비전역 영역의 볼륨 등록 정보와 데이터를 관리할 수 있음을 의미합니다.
전역 영역에서 zonecfg add dataset 하위 명령을 사용하고 비전역 영역에 추가할 ZFS 볼륨을 지정합니다. 예를 들면 다음과 같습니다.
# zonecfg -z zion zonecfg:zion> add dataset zonecfg:zion:dataset> set name=tank/volumes/vol1 zonecfg:zion:dataset> end
위 구문은 영역 관리자가 비전역 영역의 볼륨 등록 정보와 데이터를 관리할 수 있음을 의미합니다.
전역 영역에서 zonecfg add device 하위 명령을 사용하고 비전역 영역에서 해당 데이터에 액세스할 수 있는 ZFS 볼륨을 지정합니다. 예를 들면 다음과 같습니다.
# zonecfg -z zion zonecfg:zion> add device zonecfg:zion:device> set match=/dev/zvol/dsk/tank/volumes/vol2 zonecfg:zion:device> end
위 구문은 비전역 영역에서 볼륨 데이터만 액세스할 수 있음을 의미합니다.
ZFS 저장소 풀은 영역 내에서 만들거나 수정할 수 없습니다. 위임 관리 모델은 중앙집중 방식으로 전역 영역 내에서 실제 저장소 장치를 제어하고 비전역 영역에서 가상 저장소를 제어합니다. 풀 레벨 데이터 집합을 영역에 추가할 수 있더라도 장치 만들기, 추가, 제거 등 풀의 물리적 특성을 수정하는 명령은 영역 내에서 허용되지 않습니다. zonecfg 명령의 add device 하위 명령을 사용하여 물리적 장치를 영역에 추가하거나 파일을 사용하더라도 zpool 명령으로 영역 내에서 새 풀을 만들 수 없습니다.
데이터 집합이 영역에 위임된 후에 영역 관리자가 특정 데이터 집합 등록 정보를 제어할 수 있습니다. 데이터 집합이 영역에 위임된 후에는 모든 조상이 읽기 전용 데이터 집합으로 표시되고, 모든 자손인 데이터 집합 자체가 쓰기 가능합니다. 예를 들어, 다음 구성을 고려하십시오.
global# zfs list -Ho name tank tank/home tank/data tank/data/matrix tank/data/zion tank/data/zion/home
tank/data/zion이 기본 zion 별칭으로 영역에 추가된 경우 각 데이터 세트는 다음 등록 정보를 갖게 됩니다.
|
tank/zone/zion의 모든 부모는 보이지 않으며 모든 자손은 쓰기 가능합니다. 영역 관리자는 zoned 등록 정보를 변경할 수 없습니다. 그러면 다음 절에 설명된 보안 위험에 노출되기 때문입니다.
영역의 권한 사용자는 quota 및 reservation 등록 정보를 제외한, 다른 설정 가능한 등록 정보를 변경할 수 있습니다. 이 동작으로 전역 영역 관리자가 비전역 영역에서 사용된 모든 데이터 집합의 디스크 공간 소비를 제어할 수 있습니다.
더불어, 데이터 집합이 비전역 영역에 위임된 후에는 전역 영역 관리자가 sharenfs 및 mountpoint 등록 정보를 변경할 수 없습니다.
데이터 집합이 비전역 영역에 위임될 때 특정 등록 정보가 전역 영역의 컨텍스트에서 해석되지 않도록 데이터 집합을 특별히 표시해야 합니다. 데이터 집합이 비전역 영역에 위임된 후에 전역 관리자의 통제 아래에 있으면 해당 컨텐츠를 더 이상 신뢰할 수 없습니다. 다른 파일 시스템과 마찬가지로, 전역 영역의 보안에 악영향을 미치는 setuid 이진, 심볼릭 링크나 의심스러운 컨텐츠가 있을 수 있습니다. 더불어, mountpoint 등록 정보는 전역 영역의 컨텍스트에서 해석할 수 없습니다. 그렇지 않으면 영역 관리자가 전역 영역의 이름 공간에 영향을 미칠 수 있습니다. 후자를 처리하기 위해 ZFS는 zoned 등록 정보를 사용하여 특정 시점에 데이터 집합이 비전역 영역에 위임되었는지 나타냅니다.
zoned 등록 정보는 ZFS 데이터 집합을 포함하는 영역을 처음 부트할 때 자동으로 켜지는 부울값입니다. 영역 관리자가 이 등록 정보를 수동으로 켤 필요가 없습니다. zoned 등록 정보가 설정된 경우 전역 영역에서 데이터 집합을 마운트하거나 공유할 수 없습니다. 다음 예에서 tank/zone/zion은 영역에 위임되었고 tank/zone/global은 위임되지 않았습니다.
# zfs list -o name,zoned,mountpoint -r tank/zone NAME ZONED MOUNTPOINT tank/zone/global off /tank/zone/global tank/zone/zion on /tank/zone/zion # zfs mount tank/zone/global /tank/zone/global tank/zone/zion /export/zone/zion/root/tank/zone/zion
mountpoint 등록 정보와 tank/zone/zion 데이터 집합이 현재 마운트된 디렉토리의 차이점에 유의하십시오. mountpoint 등록 정보는 데이터 집합이 현재 시스템에 마운트된 위치가 아니라, 디스크에 저장할 당시의 등록 정보를 반영합니다.
데이터 집합을 영역에서 제거하거나 영역을 삭제할 때 zoned 등록 정보가 자동으로 지워지지 않습니다. 이 동작은 이러한 작업과 연관된 고유의 보안 위험 때문입니다. 신뢰할 수 없는 사용자가 데이터 집합과 그 자손에 전체 액세스할 수 있기 때문에 mountpoint 등록 정보가 잘못된 값으로 설정되거나 setuid 이진이 파일 시스템에 존재할 수 있습니다.
돌발적 보안 위험을 방지를 위해, 어떤 식으로든 데이터 집합을 재사용하려면 전역 영역 관리자가 zoned 등록 정보를 수동으로 지워야 합니다. zoned 등록 정보를 off로 설정하기 전에 데이터 집합과 모든 자손에 대한 mountpoint 등록 정보가 적합한 값으로 설정되고 setuid 이진이 존재하지 않거나 setuid 등록 정보가 꺼져 있는지 확인하십시오.
보안 취약점이 없는지 확인한 후에 zfs set 또는 zfs inherit 명령을 사용하여 zoned 등록 정보를 끌 수 있습니다. zoned 등록 정보를 껐지만 데이터 집합이 영역 내에서 사용 중인 경우 시스템 동작을 예측할 수 없습니다. 데이터 집합이 비전역 영역에서 더 이상 사용되지 않는 경우에만 등록 정보를 변경하십시오.
하나 이상의 영역을 다른 시스템으로 마이그레이션해야 하는 경우 zfs send 및 zfs receive 명령을 사용합니다. 시나리오에 따라 복제 스트림 또는 순환적 스트림을 사용하는 것이 좋습니다.
이 절의 예에서는 시스템 간에 영역 데이터를 복사하는 방법에 대해 설명합니다. 각 영역의 구성을 전송하고 각 영역을 새 시스템에 연결하려면 추가 단계를 수행해야 합니다. 자세한 내용은 Oracle Solaris 관리: Oracle Solaris Zones, Oracle Solaris 10 Zones 및 리소스 관리의 제II부, Oracle Solaris Zones을 참조하십시오.
한 시스템의 모든 영역을 다른 시스템으로 이동해야 하는 경우 스냅샷과 복제가 유지되므로 복제 스트림을 사용합니다. 스냅샷과 복제는 pkg update, beadm create 및 zoneadm clone 명령에서 광범위하게 사용됩니다.
다음 예에서 sysA의 영역은 rpool/zones 파일 시스템에 설치되며 sys의 tank/zones 파일 시스템에 복사해야 합니다. 다음 명령은 스냅샷을 만들고 복제 스트림을 사용하여 데이터를 sysB에 복사합니다.
sysA# zfs snapshot -r rpool/zones@send-to-sysB sysA# zfs send -R rpool/zones@send-to-sysB | ssh sysB zfs receive -d tank
다음 예에서 여러 영역 중 하나는 sysC 에서 sysD로 복사됩니다. ssh 명령을 사용할 수 없지만 NFS 서버 인스턴스를 사용할 수 있다고 가정합니다. 다음 명령을 사용하면 영역이 다른 영역의 복제본인지 여부에 관계없이 순환적 zfs send 스트림을 생성할 수 있습니다.
sysC# zfs snapshot -r rpool/zones/zone1@send-to-nfs sysC# zfs send -rc rpool/zones/zone1@send-to-nfs > /net/nfssrv/export/scratch/zone1.zfs sysD# zfs create tank/zones sysD# zfs receive -d tank/zones < /net/nfssrv/export/scratch/zone1.zfs