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

zfs list -o name -t snapshot : 스냅샷 리스트

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 설치했음)



스냅샷 찍을 때

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@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 에서 확인

 


기존 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


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


블로그 이미지

Seowon Jung jswlinux

Seowon Jung의 잡동사니 보관소

댓글을 달아 주세요