zfs list : zfs에서 마운트되는 디렉토리(?) 리스트. 이 리스트에 있어야만 스냅샷을 찍을 수 있다.
zfs list -o name -t snapshot : 스냅샷 리스트

zfs가 사용 중인 메모리 양 확인하기

kstat zfs:0:arcstats:size

또는

pfexec mdb -k

한뒤 ::memstat
종료할 때는 ::quit

ZFS 용 storage pool 생성 & filesystem 생성
현재 pool 상태 확인

zpool status

현재 pool 리스트

zpool list

/data 에 externalHDD라는 zfs파일시스템을 생성

zpool create -m /data externalHDD c1d0s0 c1d1s0

* pool의 가장 상위 레벨 장치는 오프라인 전환이 불가능하며, destroy 실행시 모든 자료가 날아간다.

zfs에 파일시스템 추가하기

zfs create rpool/경로명

만약 /var/apache2/2.2/htdocs를 추가하고 싶으면, /var, /var/apache2/, /var/apache2/2.2/, /var/apache2/2.2/htdocs 모두 추가해야한다.
예:

zfs create rpool/var; zfs create rpool/var/apache2
zfs set mountpoint=원하는경로명 rpool/경로명

(예: zfs set mountpoint=/var/apache2/2.2/htdocs rpool/var/apache2/2.2/htdocs)

zfs set sharenfs=on rpool/경로명
zfs set compression=on rpool/경로명
zfs get compression rpool/경로명

(참고: /var/mysql은, mysql 설치 이후에 zfs로 파일시스템 생성 후 마운트 시켰을 경우 mysql 디비테이블이 모두 망가졌었음. 따라서 먼저 zfs에서 파일시스템을 먼저 만들어놓고 mysql 설치했음)

스냅샷 찍을 때
zfs list 했을 때,

jswlinux@server:/usr/lib/pkgconfig$ zfs list
NAME                              USED  AVAIL  REFER  MOUNTPOINT
rpool                            10.0G   137G    81K  /rpool
rpool/ROOT                       5.87G   137G    19K  legacy
rpool/ROOT/opensolaris           69.6M   137G  2.93G  /
rpool/ROOT/opensolaris-05.2010   5.80G   137G  5.60G  /
rpool/dump                       1.44G   137G  1.44G  -
rpool/export                     1.26G   137G    22K  /export
rpool/export/home                49.6M   137G    21K  /export/home
rpool/export/home/jswlinux       49.6M   137G  40.1M  /export/home/jswlinux
rpool/export/webserver           1.21G   137G    22K  /export/webserver
rpool/export/webserver/ROOT      1.21G   137G    19K  legacy
rpool/export/webserver/ROOT/zbe  1.21G   137G  1.20G  legacy
rpool/swap                       1.44G   138G   101M  -
jswlinux@server:/usr/lib/pkgconfig$

라고 나왔는데, / 아래의 디렉토리에 대해서 스냅샷을 찍을 경우 rpool/ROOT에 recursive 옵션을 붙여도 스냅샷은 찍히지 않는다. 반드시 현재 BE의 이름, 즉 다시 말해 rpool/ROOT/opensolaris-05.2010에 대해서 스냅샷을 찍어야한다.

zfs snapshot -r rpool/ROOT/opensolaris-05.2010

웹서버 사이트 파일들의 전용스냅샷을 위한 zfs 파일시스템 생성

zfs create rpool/var
zfs create rpool/var/apache2
zfs create rpool/var/apache2/2.2
zfs create rpool/var/apache2/2.2/htdocs

(아래 명령어에서, 마운트포인트가 이미 존재해서 안된다는 메시지가 나오면, cd /var/apache2/2.2; mv htdocs ht식으로 이름을 잠시 변경해준다)

zfs set mountpoint=/var/apache2/2.2/htdocs rpool/var/apache2/2.2/htdocs
mv ht/* htdocs/
chown -R root:bin htdocs
rm -rf ht
zfs set sharenfs=on rpool/var/apache2/2.2/htdocs
zfs set compression=on rpool/var/apache2/2.2/htdocs
zfs get compression rpool/var/apache2/2.2/htdocs

나의 스냅샷 리스트

/usr/sbin/zfs snapshot -r rpool/var/apache2/2.2/htdocs@`date +%m.%d.%Y-%H:%M`
/usr/sbin/zfs snapshot -r rpool/export/home/jswlinux@`date +%m.%d.%Y-%H:%M`
/usr/sbin/zfs snapshot -r rpool/var/mysql@`date +%m.%d.%Y-%H:%M`
/usr/sbin/zfs snapshot -r rpool/ROOT/opensolaris-01.02.2010@`date +%m.%d.%Y-%H:%M`

zfs 캐쉬파일시스템 만들기 (USB 메모리스틱이나 SD카드로)
장치명을 확인하기 위해 데스크탑에 마운트 된 메모리스틱/SD카드의 이름을 참고하거나 혹은 format 명령어로 확인한다. 만약 format 명령어로 나오지 않는 타입의 메모리의 경우 format -e로 확인한다.

cat /etc/mnttab |grep 장치명 
umount /media/장치명
zpool add rpool cache 장치명
zpool status 에서 확인

기존 Pool에 장치 c1t4d0을 추가

zpool add zfs_stripe c1t4d0

ZFS pool 관리

zpool add zfs_stripe c1dt4d0
zpool create -m /vfs/vfs_M vfs_mirror mirror c1t5d0 c1t6d0: mirror Pool 생성 (mount point 설정)
zpool create -m /vfs/vfs_R vfs_raid raidz c1t2d0 c1t3d0 c1t4d0: RAIDZ pool 생성. 최소 3개 이상 묶어줌

Pool Import / Export (사실상 하드를 뗏다붙였다하는 용도로 쓸 수 있다고 보면 된다)
pool Export
파일의 권한을 다른 컴퓨터에게 주기위해 권한을 포기

zpool export -f vfs_raid

Pool Import

zpool import vfs_raid
zpool import -d /dev/dsk # export에서 포기한 권한을 검색

Pool 제거 (destroy는 모든 자료를 삭제하니 주의한다)

zpool destroy zfs_mirror

Pool 내에 device Off-line

zpool offline vfs_mirror c1t5d0

Pool 내에 device On-line

zpool online vfs_mirror c1t5d0

Pool 내의 disk문제로 인한 disk 교체

zpool replace vfs_raid c1t3d0 c1t6d0 #c1t3d0 을 c1t6d0 으로 교체

disk 제거와 추가

zpool detach vfs_raid c1t3d0 #c1t3d0 제거
zpool attach vfs_raid c1t6d0 #c1t6d0 추가

하드디스크 2개를 따로 추가해서, 별도의 zpool2라는 풀을 만들고 그 둘을 미러링하는 경우

zpool create zpool2 mirror c2d0s0 c2d1s0
zpool status zpool2

기존의 pool에 미러링 되는 하드디스크 셋을 추가하는 경우

zpool add -f zpool2 mirror c2d0s0 c2d1s0

ZFS filesystem 관련 명령
기존 Pool(Dataset) 에서 Filesystem 추가 생성 (자식 파일 시스템 생성)

zfs create vfs_mirror/d1
zfs create vfs_mirror/d2

자식 파일 시스템의 Mount Point 변경

zfs set mountpoint=/vfs/data1 vfs_mirror/d1

부모 파일시스템의 Mount Point변경

zfs set mountpoint=/vfs/parent1 vfs_mirror

오픈인디아나/오픈솔라리스/오라클 솔라리스 등에서 버츄얼 박스 사용시,
zfs에 가상디스크를 생성하면, zfs 특성상 모든 메모리를 캐시로 사용하려고 해서 시스템 전체가 느려짐.
따라서 버츄얼박스가 사용하려는 디렉토리를 별도의 마운트 포인트로 잡아주고 캐쉬를 비활성화한다.

zfs set primarycache=none, secondarycacne=none pool