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

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

새 ZFS 공유 구문

zfs set 명령은 NFS 또는 SMB 프로토콜을 통해 ZFS 파일 시스템을 공유하고 게시하는 데 사용됩니다. 또는 파일 시스템을 만들 때 share.nfs 또는 share.smb 등록 정보를 설정할 수 있습니다.

예를 들어 tank/sales 파일 시스템이 생성되고 공유되었습니다. 기본 공유 권한은 모든 사용자에 대해 읽기-쓰기입니다. share.nfs 등록 정보가 종속된 파일 시스템으로 상속되고 tank/sales/log 파일 시스템이 읽기 전용 액세스로 설정되기 때문에 종속된 tank/sales/logs 파일 시스템도 자동으로 공유됩니다.

# zfs create -o share.nfs=on tank/sales
# zfs create -o share.nfs.ro=\* tank/sales/logs
# zfs get -r share.nfs tank/sales
NAME             PROPERTY   VALUE  SOURCE
tank/sales       share.nfs  on     local
tank/sales%      share.nfs  on     inherited from tank/sales
tank/sales/log   share.nfs  on     inherited from tank/sales
tank/sales/log%  share.nfs  on     inherited from tank/sales

다음과 같이 공유 파일 시스템의 특정 시스템에 루트 액세스 권한을 제공할 수 있습니다.

# zfs set share.nfs=on tank/home/data
# zfs set share.nfs.sec.default.root=neo.daleks.com tank/home/data

등록 정보별 상속을 사용하여 ZFS 공유

최신 풀 버전 34로 업그레이드된 풀에서는 공유 유지 관리를 돕기 위해 ZFS 등록 정보 상속을 활용하는 새로운 공유 구문을 사용할 수 있습니다. 각 공유 특성은 개별 share 등록 정보가 됩니다. share 등록 정보는 share. 접두어로 시작하는 이름으로 식별됩니다. share 등록 정보 예로는 share.desc, share.nfs.nosuidshare.smb.guestok가 있습니다.

share.nfs 등록 정보는 NFS 공유가 사용으로 설정되었는지 여부를 제어합니다. share.smb 등록 정보는 SMB 공유가 사용으로 설정되었는지 여부를 제어합니다. 새 풀에서 sharenfsshare.nfs의 별칭이고 sharesmbshare.smb의 별칭이므로 레거시 sharenfssharesmb 등록 정보 이름도 계속 사용할 수 있습니다. tank/home 파일 시스템을 공유하려면 다음과 비슷한 구문을 사용합니다.

# zfs set share.nfs=on tank/home

이 예에서 share.nfs 등록 정보 값은 모든 종속된 파일 시스템에 상속됩니다. 예를 들면 다음과 같습니다.

# zfs create tank/home/userA
# zfs create tank/home/userB
# grep tank/home /etc/dfs/sharetab
/tank/home      tank_home       nfs     sec=sys,rw
/tank/home/userA        tank_home_userA nfs     sec=sys,rw
/tank/home/userB        tank_home_userB nfs     sec=sys,rw   
이전 풀의 ZFS 공유 상속

이전 풀에서는 sharenfssharesmb 등록 정보만 종속된 파일 시스템에서 상속됩니다. 기타 공유 특성은 각 공유에 대해 .zfs/shares 파일에 저장되며 상속되지 않습니다.

특별 규칙은 부모로부터 sharenfs 또는 sharesmb를 상속하는 새 파일 시스템을 만들 때마다 해당 파일 시스템에 대해 sharenfs 또는 sharesmb 값으로 기본 공유를 만드는 규칙입니다. sharenfs가 단순히 설정된 경우 종속 파일 시스템에 생성된 기본 공유는 기본 NFS 특성만 갖습니다. 예를 들면 다음과 같습니다.

# zpool get version tank
NAME  PROPERTY  VALUE  SOURCE
tank  version   33     default
# zfs create -o sharenfs=on tank/home
# zfs create tank/home/userA
# grep tank/home /etc/dfs/sharetab
/tank/home      tank_home       nfs     sec=sys,rw
/tank/home/userA        tank_home_userA nfs     sec=sys,r

ZFS 이름이 지정된 공유

SMB 환경에서 권한 및 등록 정보를 설정하는 데 보다 많은 유연성을 제공하는 이름이 지정된 공유를 만들 수도 있습니다. 예를 들면 다음과 같습니다.

# zfs share -o share.smb=on tank/workspace%myshare

이전 예에서 zfs share 명령은 tank/workspace 파일 시스템의 myshare라는 SMB 공유를 만듭니다. 파일 시스템의 .zfs/shares 디렉토리를 통해 이 SMB 공유에 액세스하고 특정 권한 또는 ACL을 표시하거나 설정할 수 있습니다. 각 SMB 공유는 개별 .zfs/shares 파일로 표시됩니다. 예를 들면 다음과 같습니다.

# ls -lv /tank/workspace/.zfs/shares
-rwxrwxrwx+  1 root     root           0 May 15 10:31 myshare
0:everyone@:read_data/write_data/append_data/read_xattr/write_xattr
/execute/delete_child/read_attributes/write_attributes/delete
/read_acl/write_acl/write_owner/synchronize:allow

이름이 지정된 공유는 상위 파일 시스템에서 공유 등록 정보를 상속합니다. 이전 예에서 share.smb.guestok 등록 정보를 상위 파일 시스템에 추가하면 이 등록 정보가 이름이 지정된 공유에 상속됩니다. 예를 들면 다음과 같습니다.

# zfs get -r share.smb.guestok tank/workspace
NAME                    PROPERTY           VALUE  SOURCE
tank/workspace          share.smb.guestok  on     inherited from tank
tank/workspace%myshare  share.smb.guestok  on     inherited from tank

이름이 지정된 공유는 NFS 환경에서 파일 시스템의 하위 디렉토리에 대한 공유를 정의할 때 유용할 수 있습니다. 예를 들면 다음과 같습니다.

# zfs create -o share.nfs=on -o share.nfs.anon=99 -o share.auto=off tank/home
# mkdir /tank/home/userA
# mkdir /tank/home/userB
# zfs share -o share.path=/tank/home/userA tank/home%userA
# zfs share -o share.path=/tank/home/userB tank/home%userB
# grep tank/home /etc/dfs/sharetab
/tank/home/userA        userA   nfs     anon=99,sec=sys,rw
/tank/home/userB        userB   nfs     anon=99,sec=sys,rw  

위 예에서는 파일 시스템에 대해 share.auto를 off로 설정하여 다른 모든 등록 정보 상속을 그대로 유지하면서 해당 파일 시스템에 대한 자동 공유를 해제하는 방법도 보여줍니다. 대부분의 다른 공유 등록 정보와 달리 share.auto 등록 정보는 상속할 수 없습니다.

이름이 지정된 공유는 공용 NFS 공유를 만들 때도 사용됩니다. 공용 공유는 이름이 지정된 NFS 공유에서만 만들 수 있습니다. 예를 들면 다음과 같습니다.

# zfs create -o mountpoint=/pub tank/public
# zfs share -o share.nfs=on -o share.nfs.public=on tank/public%pubshare
# grep pub /etc/dfs/sharetab
/pub    pubshare        nfs     public,sec=sys,rw

NFS 및 SMB 공유 등록 정보에 대한 자세한 내용은 share_nfs(1M)share_smb(1M)을 참조하십시오.

ZFS 자동 공유

자동 공유를 만들면 파일 시스템 이름에서 고유한 리소스 이름이 생성됩니다. 생성된 이름은 리소스 이름에 부적합한 파일 시스템 이름의 문자가 밑줄(_) 문자로 바뀌는 점을 제외하고 파일 시스템 이름의 복사본입니다. 예를 들어, data/home/john의 리소스 이름은 data_home_john입니다.

share.autoname 등록 정보 이름을 설정하면 자동 공유를 만들 때 파일 시스템 이름을 특정 이름으로 바꿀 수 있습니다. 이러한 특정 이름은 상속의 경우 접두어 파일 시스템 이름을 대신하는 데에도 사용됩니다. 예를 들면 다음과 같습니다.

# zfs create -o share.smb=on -o share.autoname=john data/home/john
# zfs create data/home/john/backups
# grep john /etc/dfs/sharetab
/data/home/john john    smb
/data/home/john/backups john_backups    smb

레거시 share 명령 또는 zfs set share 명령을 아직 공유되지 않은 파일 시스템에서 사용하면 해당 share.auto 값이 자동으로 off로 설정됩니다. 레거시 명령은 항상 이름이 지정된 공유를 만듭니다. 이 특별 규칙에 따라 자동 공유는 생성 중인 이름이 지정된 공유를 간섭하지 않습니다.

ZFS 공유 정보 표시

zfs get 명령을 사용하여 파일 공유 등록 정보의 값을 표시합니다. 다음 예에서는 단일 파일 시스템에 대해 share.nfs 등록 정보를 표시하는 방법을 보여줍니다.

# zfs get share.nfs tank/sales
NAME        PROPERTY   VALUE  SOURCE
tank/sales  share.nfs  on     local

다음 예에서는 종속된 파일 시스템에 대해 share.nfs 등록 정보를 표시하는 방법을 보여줍니다.

# zfs get -r share.nfs tank/sales
NAME             PROPERTY   VALUE  SOURCE
tank/sales       share.nfs  on     local
tank/sales%      share.nfs  on     inherited from tank/sales
tank/sales/log   share.nfs  on     inherited from tank/sales
tank/sales/log%  share.nfs  on     inherited from tank/sales

zfs get all 명령 구문에서는 확장 공유 등록 정보를 사용할 수 없습니다.

다음 구문을 사용하여 NFS 또는 SMB 공유 정보에 대한 특정 세부 정보를 표시할 수 있습니다.

# zfs get share.nfs.all tank/sales
NAME        PROPERTY             VALUE  SOURCE
tank/sales  share.nfs.aclok      off    default
tank/sales  share.nfs.anon              default
tank/sales  share.nfs.charset.*  ...    default
tank/sales  share.nfs.cksum             default
tank/sales  share.nfs.index             default
tank/sales  share.nfs.log               default
tank/sales  share.nfs.noaclfab   off    default
tank/sales  share.nfs.nosub      off    default
tank/sales  share.nfs.nosuid     off    default
tank/sales  share.nfs.public     -      -
tank/sales  share.nfs.sec               default
tank/sales  share.nfs.sec.*      ...    default

공유 등록 정보가 여러 개 있기 때문에 비기본값을 사용하여 등록 정보를 표시하는 것이 좋습니다. 예를 들면 다음과 같습니다.

# zfs get -e -s local,received,inherited share.all tank/home
NAME       PROPERTY           VALUE  SOURCE
tank/home  share.auto         off    local
tank/home  share.nfs          on     local
tank/home  share.nfs.anon     99     local
tank/home  share.protocols    nfs    local
tank/home  share.smb.guestok  on     inherited from tank

ZFS 공유 등록 정보 값 변경

파일 시스템 공유에서 신규 또는 수정된 등록 정보를 지정하여 공유 등록 정보 값을 변경할 수 있습니다. 예를 들어, 파일 시스템을 만들 때 읽기 전용 등록 정보가 설정된 경우 등록 정보를 off로 설정할 수 있습니다.

# zfs create -o share.nfs.ro=\* tank/data
# zfs get share.nfs.ro tank/data
NAME       PROPERTY              VALUE  SOURCE
tank/data  share.nfs.sec.sys.ro  *     local
# zfs set share.nfs.ro=none tank/data
# zfs get share.nfs.ro tank/data
NAME       PROPERTY              VALUE  SOURCE
tank/data  share.nfs.sec.sys.ro  off    local

SMB 공유를 만들 때 NFS 공유 프로토콜을 추가할 수도 있습니다. 예를 들면 다음과 같습니다.

# zfs set share.smb=on tank/multifs
# zfs set share.nfs=on tank/multifs
# grep multifs /etc/dfs/sharetab
/tank/multifs   tank_multifs    nfs     sec=sys,rw
/tank/multifs   tank_multifs    smb     -       

SMB 프로토콜을 제거합니다.

# zfs set share.smb=off tank/multifs
# grep multifs /etc/dfs/sharetab
/tank/multifs   tank_multifs    nfs     sec=sys,rw

이름이 지정된 공유의 이름을 바꿀 수 있습니다. 예를 들면 다음과 같습니다.

# zfs share -o share.smb=on tank/home/abc%abcshare
# grep abc /etc/dfs/sharetab
/tank/home/abc  abcshare        smb     -
# zfs rename tank/home/abc%abcshare tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
/tank/home/abc  a1share        smb     -   

ZFS 공유 게시 및 게시 해제

이름이 지정된 공유를 삭제하는 대신 zfs unshare 명령을 사용하여 일시적으로 공유 해제할 수 있습니다. 예를 들면 다음과 같습니다.

# zfs unshare tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
#
# zfs share tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
/tank/home/abc  a1share smb     -

zfs unshare 명령을 실행하면 모든 파일 시스템 공유가 해제됩니다. 이러한 공유는 파일 시스템에 대해 zfs share 명령을 실행하거나 share.nfs 또는 share.smb 등록 정보가 파일 시스템에 대해 설정될 때까지 해제된 상태로 유지됩니다.

정의된 공유는 zfs unshare 명령을 실행할 때 제거되지 않으며, 다음에 파일 시스템에 대해 zfs share 명령을 실행할 때 또는 파일 시스템에 대해 share.nfs 또는 share.smb 등록 정보를 설정할 때 다시 공유됩니다.

ZFS 공유 제거

share.nfs 또는 share.smb 등록 정보를 off로 설정하면 파일 시스템 공유를 해제할 수 있습니다. 예를 들면 다음과 같습니다.

# zfs set share.nfs=off tank/multifs
# grep multifs /etc/dfs/sharetab
# 

zfs destroy 명령을 사용하면 이름이 지정된 공유를 영구적으로 제거할 수 있습니다. 예를 들면 다음과 같습니다.

# zfs destroy tank/home/abc%a1share

비전역 영역 내의 ZFS 파일 공유

Oracle Solaris 11부터는 Oracle Solaris 비전역 영역에서 NFS 공유를 만들고 게시할 수 있습니다.

  • ZFS 파일 시스템이 비전역 영역에 마운트되고 사용 가능한 경우 해당 영역에서 공유될 수 있습니다.

  • 비전역 영역에 위임되지 않았고 비전역 영역에 마운트되지 않은 경우 전역 영역에서 파일 시스템을 공유할 수 있습니다. 파일 시스템이 비전역 영역에 추가된 경우 레거시 share 명령을 사용해서만 파일 시스템을 공유할 수 있습니다.

예를 들어, /export/home/data/export/home/data1 파일 시스템은 zfszone에서 사용할 수 있습니다.

zfszone# share -F nfs /export/home/data
zfszone#  cat /etc/dfs/sharetab
zfszone# zfs set share.nfs=on tank/zones/export/home/data1
zfszone# cat /etc/dfs/sharetab