zfs list : zfs에서 마운트되는 디렉토리(?) 리스트. 이 리스트에 있어야만 스냅샷을 찍을 수 있다.
zfs가 사용 중인 메모리 양 확인하기
kstat zfs:0:arcstats:size
pfexec mdb -k 한뒤, ::memstat
종료할 때는 ::quit
ZFS 용 storage pool 생성 & filesystem 생성
zpool status: 현재 pool 상태 확인zpool list: 현재 pool 리스트
zpool create -m /data externalHDD c1d0s0 c1d1s0 : /data 에 externalHDD라는 zfs파일시스템을 생성* 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 설치했음)
스냅샷 찍을 때
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@20111025
웹서버 사이트 파일들의 전용스냅샷을 위한 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 에서 확인
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라는 풀을 만들고 그 둘을 미러링하는 경우
기존 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