solaris zfs文件系统不完全应用
solaris zfs文件系统不完全应用zfs相关的几个软件包如下:
#pkginfo |grep SUNWzfs
application SUNWzfsgr ZFS Administration for Sun Java(TM) Web Console (Root)
application SUNWzfsgu ZFS Administration for Sun Java(TM) Web Console (usr)
system SUNWzfskr ZFS Kernel (Root)
system SUNWzfsr ZFS (Root)
system SUNWzfsu ZFS (Usr)
1.建立zfs文件系统:
创建存储池:
普通的存储池:
#zpool create mypool c4t4d0
带单一镜像的存储池:
#zpool create mirropool mirror c4t0d0 c4t2d0
查看已创建的存储池:
#zpool list
NAME SIZE USED AVAIL CAPHEALTH ALTROOT
mirropool 16.8G 89K 16.7G 0%ONLINE -
mypool 16.8G 88K 16.7G 0%ONLINE -
带双路镜像的存储池:
#zpool create mirrorpool mirror c4t0d0 c4t3d0 mirror c4t4d0 c4t26d0
#zpool list
#zpool list
NAME SIZE USED AVAIL CAPHEALTH ALTROOT
zfspool 33.5G 90K 33.5G 0%ONLINE -
#zpool status
pool: zfspool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
mirror ONLINE 0 0 0
c4t0d0 ONLINE 0 0 0
c4t3d0 ONLINE 0 0 0
mirror ONLINE 0 0 0
c4t4d0 ONLINE 0 0 0
c4t26d0ONLINE 0 0 0
errors: No known data errors
创建带热备的镜像:
#zpool create -f zfspool mirror c4t0d0 c4t3d0 spare c4t4d0 c4t26d0
#zpool list
NAME SIZE USED AVAIL CAPHEALTH ALTROOT
zfspool 16.8G 91K 16.7G 0%ONLINE -
#zpool status
pool: zfspool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
mirror ONLINE 0 0 0
c4t0d0ONLINE 0 0 0
c4t3d0ONLINE 0 0 0
spares
c4t4d0 AVAIL
c4t26d0 AVAIL
errors: No known data errors
摧毁一个存储池:
#zpool destroy zfspool
2.创建文件系统:
#zfs create zfspool/u01
#zfs create zfspool/u02
#zfs list
NAME USEDAVAILREFERMOUNTPOINT
zfspool 148K16.5G27.5K/zfspool
zfspool/u0124.5K16.5G24.5K/zfspool/u01
zfspool/u0224.5K16.5G24.5K/zfspool/u02
#mkdir /u01
#mkdir /u02
#zfs set mountpoint=/u01 zfspool/u01
#zfs set mountpoint=/u02 zfspool/u02
其实在这设置完挂载点后,系统会自己mount,不用手工mount.
#zfs umount -a
#df
Filesystem size usedavail capacityMounted on
/dev/dsk/c0t0d0s0 15G 9.5G 4.9G 66% /
/devices 0K 0K 0K 0% /devices
ctfs 0K 0K 0K 0% /system/contract
proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
swap 798M 1.5M 796M 1% /etc/svc/volatile
objfs 0K 0K 0K 0% /system/object
fd 0K 0K 0K 0% /dev/fd
swap 921M 125M 796M 14% /tmp
swap 796M 56K 796M 1% /var/run
/dev/dsk/c0t0d0s7 94M 1.0M 84M 2% /globaldevices
/dev/dsk/c0t0d0s3 995M 1.0M 934M 1% /export/home
#zfs mount -a
#df|grep zfs
zfspool/u01 16G 24K 16G 1% /u01
zfspool/u02 16G 24K 16G 1% /u02
zfspool/u03 16G 24K 16G 1% /u03
zfspool 16G 24K 16G 1% /zfspool
测试zfs的读写变化:
#cp /etc/hosts /u01;cp /etc/hosts /u02;cp /etc/hosts /u03;
#df|grep zfs
zfspool/u01 16G 26K 16G 1% /u01
zfspool/u02 16G 26K 16G 1% /u02
zfspool/u03 16G 26K 16G 1% /u03
zfspool 16G 24K 16G 1% /zfspool
增加新的存储到zfspool存储池,扩展zfs:
#zpool add -f zfspool c4t2d0
#zpool list
NAME SIZE USED AVAIL CAPHEALTH ALTROOT
zfspool 50.5G 208K 50.5G 0%ONLINE -
#zfs create zfspool/u04
#mkdir u04
#zfs set mountpoint=/u04 zfspool/u04
#df|grep zfs
zfspool/u01 50G 26K 50G 1% /u01
zfspool/u02 50G 26K 50G 1% /u02
zfspool/u03 50G 26K 50G 1% /u03
zfspool 50G 24K 50G 1% /zfspool
zfspool/u04 50G 24K 50G 1% /u04
3.zfs的快照与克隆:
创建zfs快照,若加一个r参数,则代表其后代文件系统也创建快照:
#zfs snapshot
zfspool/u01@test_snapshot
#zfs snapshot
zfspool/u02@test_snapshot
#zfs snapshot
zfspool/u03@test_snapshot
#zfs snapshot
zfspool/u04@test_snapshot
#zfs list(或者zfs list -t snapshot)
NAME USEDAVAILREFERMOUNTPOINT
zfspool 240K49.7G24.5K/zfspool
zfspool/u01 26K49.7G 26K/u01
zfspool/u01@test_snapshot
0 - 26K-
zfspool/u02 26K49.7G 26K/u02/
zfspool/u02@test_snapshot
0 - 26K-
zfspool/u03 26.5K49.7G26.5K/u03
zfspool/u03@test_snapshot
0 -26.5K-
zfspool/u04 24.5K49.7G24.5K/u04
zfspool/u04@test_snapshot
0 -24.5K-
访问快照数据,可以在包含文件系统的根的 .zfs/snapshot 目录中访问文件系统的快照.
例如,访问zfspool/u01的快照,进入/u01/.zfs/snapshot/u01_snapshot目录即可:
#cd /u01/.zfs/snapshot/u01_snapshot
#ls
hosts
#ls /u01
hosts
摧毁快照:
#zfs destroy
zfspool/u01@test_snapshot
#zfs destroy
zfspool/u02@test_snapshot
#zfs destroy
zfspool/u03@test_snapshot
#zfs destroy
zfspool/u04@test_snapshot
#zfs list
NAME USEDAVAILREFERMOUNTPOINT
zfspool 240K49.7G24.5K/zfspool
zfspool/u01 26K49.7G 26K/u01
zfspool/u02 26K49.7G 26K/u02/
zfspool/u0326.5K49.7G26.5K/u03
zfspool/u0424.5K49.7G24.5K/u04
注意:如果数据集存在快照,则不能销毁该数据集。此外,如果已从快照创建克隆,则必须先销毁克隆,才能销毁快照。
打开与关闭压缩:
默认情况下压缩功能是关闭的:
#zfs get compression
NAME PROPERTY VALUE SOURCE
zfspool compressionoff default
zfspool/u01compressionoff default
zfspool/u02compressionoff default
zfspool/u03compressionoff default
zfspool/u04compressionoff default
#zfs set compression=on zfspool/u01
#zfs set compression=on zfspool/u02
#zfs set compression=on zfspool/u02
#zfs set compression=on zfspool/u03
#zfs set compression=on zfspool/u04
#zfs get compression
NAME PROPERTY VALUE SOURCE
zfspool compressionoff default
zfspool/u01compressionon local
zfspool/u02compressionon local
zfspool/u03compressionon local
zfspool/u04compressionon local
#zfs set compression=on zfspool
#zfs get compression
NAME PROPERTY VALUE SOURCE
zfspool compressionon local
zfspool/u01compressionon local
zfspool/u02compressionon local
zfspool/u03compressionon local
zfspool/u04compressionon local
在一个zfs文件上设置QUOTA:
#zfs set quota=4G zfspool/u01
#zfs set quota=3G zfspool/u02
#zfs set quota=2G zfspool/u03
#zfs set quota=1G zfspool/u04
#zfs get quota
NAME PROPERTYVALUE SOURCE
zfspool quota none default
zfspool/u01quota 4G local
zfspool/u02quota 3G local
zfspool/u03quota 2G local
zfspool/u04quota 1G local
取消QUOAT:
#zfs set quota=none zfspool
#zfs set quota=none zfspool/u01
#zfs set quota=none zfspool/u02
#zfs set quota=none zfspool/u03
#zfs set quota=none zfspool/u04
#zfs get quota
NAME PROPERTYVALUE SOURCE
zfspool quota none default
zfspool/u01quota none default
zfspool/u02quota none default
zfspool/u03quota none default
zfspool/u04quota none default
显示一个文件系统的详细信息:
#zfs get -o property,value,source all zfspool/u01
PROPERTY VALUE SOURCE
type filesystem -
creation Wed Nov5 10:38 2008-
used 26K -
available 49.7G -
referenced 26K -
compressratio1.00x -
mounted yes -
quota none default
reservation none default
recordsize 128K default
mountpoint /u01 local
sharenfs off default
checksum on default
compression on local
atime on default
devices on default
exec on default
setuid on default
readonly off default
zoned off default
snapdir hidden default
aclmode groupmask default
aclinherit secure default
canmount on default
shareiscsi off default
xattr on default
显示某一个文件系统的单一属性信息,例如查看compression属性值:
#zfs get -H -o value compression zfspool
on
#zfs get -H -o value compression zfspool/u01
on
#zfs get -H -o value compression zfspool/u02
on
#zfs get -H -o value compression zfspool/u03
on
#zfs get -H -o value compression zfspool/u04
on
或者
#zfs get compression
NAME PROPERTY VALUE SOURCE
zfspool compressionon local
zfspool/u01 compressionon local
zfspool/u01@u01_snapshot
compression- -
zfspool/u02 compressionon local
zfspool/u03 compressionon local
zfspool/u04 compressionon local
#
#zfs get -r -s local -o name,property,value all zfspool
NAME PROPERTY VALUE
zfspool compression on
zfspool/u01 mountpoint /u01
zfspool/u01 compression on
zfspool/u01 snapdir visible
zfspool/u02 mountpoint /u02/
zfspool/u02 compression on
zfspool/u03 mountpoint /u03
zfspool/u03 compression on
zfspool/u04 mountpoint /u04
zfspool/u04 compression on
回滚到ZFS快照:
可以使用 zfs rollback 命令废弃自创建特定快照之后所做的所有更改。文件系统恢复到创建快照时的状态。缺省情况下,该命令无法回滚
到除最新快照以外的快照.
#zfs rollback -r
zfspool/u01@u01_snapshot(r
参数代表所有后代文件都回归)
快照空间记帐:
创建快照时,最初在快照和文件系统之间共享其空间,还可能与以前的快照共享其空间。在文件系统发生更改时,以前共享的空间将变为该
快照专用的空间,因此会将该空间算入快照的 used 属性。此外,删除快照可增加其他快照专用(使用)的空间量。
创建快照时,快照的空间 referenced 属性与文件系统的相同.
创建一个zfs的快照克隆:
#zfs clone
zfspool/u01@u01_snapshot
zfspool/clone
#zfs list
NAME USEDAVAILREFERMOUNTPOINT
zfspool 248K49.7G26.5K/zfspool
zfspool/clone 049.7G 26K/zfspool/clone
zfspool/u01 26K49.7G 26K/u01
zfspool/u01@u01_snapshot
0 - 26K-
zfspool/u02 26K49.7G 26K/u02/
zfspool/u03 26.5K49.7G26.5K/u03
zfspool/u04 24.5K49.7G24.5K/u04
测试克隆后的文件系统读写操作:
#cd zfspool/clone/
#ls
hosts
#cp /etc/hostname.hme0 .
#ls
hostname.hme0hosts
#cat hostname.hme0
node01 group sc_ipmp0 -failover
zfs克隆的晋升:
通过重命名文件系统完成克隆替换过程:
#zfs create zfspool/u04/test
#zfs snapshot
zfspool/u04/test@today
#zfs clone
zfspool/u04/test@today
zfspool/u04/clone
#zfs promote zfspool/u04/clone
#zfs rename zfspool/u04/test zfspool/u04/test2
#zfs rename zfspool/u04/clone zfspool/u04/test
#zfs destroy zfspool/u04/test2
#zfs list
NAME USEDAVAILREFERMOUNTPOINT
zfspool 314K49.7G26.5K/zfspool
zfspool/clone 24K49.7G26.5K/zfspool/clone
zfspool/u01 26K49.7G 26K/u01
zfspool/u01@u01_snapshot
0 - 26K-
zfspool/u02 26K49.7G 26K/u02/
zfspool/u03 26.5K49.7G26.5K/u03
zfspool/u04 51K49.7G26.5K/u04
zfspool/u04/test 24.5K49.7G24.5K/u04/test
zfspool/u04/test@today
0 -24.5K-
可以使用 zfs rename -r 命令以递归方式重命名快照。
zfs文件系统属性的继承:
zfspool/u04/test的属性如下所示:
#zfs get all zfspool/u04/test
NAME PROPERTY VALUE SOURCE
zfspool/u04/testtype filesystem -
zfspool/u04/testcreation Wed Nov5 13:39 2008-
zfspool/u04/testused 24.5K -
zfspool/u04/testavailable 49.7G -
zfspool/u04/testreferenced 24.5K -
zfspool/u04/testcompressratio1.00x -
zfspool/u04/testmounted yes -
zfspool/u04/testquota none default
zfspool/u04/testreservation none default
zfspool/u04/testrecordsize 128K default
zfspool/u04/testmountpoint /u04/test inherited from zfspool/u04
zfspool/u04/testsharenfs off default
zfspool/u04/testchecksum on default
zfspool/u04/testcompression on inherited from zfspool/u04
zfspool/u04/testatime on default
zfspool/u04/testdevices on default
zfspool/u04/testexec on default
zfspool/u04/testsetuid on default
zfspool/u04/testreadonly off default
zfspool/u04/testzoned off default
zfspool/u04/testsnapdir hidden default
zfspool/u04/testaclmode groupmask default
zfspool/u04/testaclinherit secure default
zfspool/u04/testcanmount on default
zfspool/u04/testshareiscsi off default
zfspool/u04/testxattr on default
改几个参数便于区别:
#zfs set quota=1GB zfspool/u04/test
#zfs set readonly=on zfspool/u04/test
#zfs get all zfspool/u04/test
NAME PROPERTY VALUE SOURCE
zfspool/u04/testtype filesystem -
zfspool/u04/testcreation Wed Nov5 13:39 2008-
zfspool/u04/testused 24.5K -
zfspool/u04/testavailable 1024M -
zfspool/u04/testreferenced 24.5K -
zfspool/u04/testcompressratio1.00x -
zfspool/u04/testmounted yes -
zfspool/u04/testquota 1G local
zfspool/u04/testreservation none default
zfspool/u04/testrecordsize 128K default
zfspool/u04/testmountpoint /u04/test inherited from zfspool/u04
zfspool/u04/testsharenfs off default
zfspool/u04/testchecksum on default
zfspool/u04/testcompression on inherited from zfspool/u04
zfspool/u04/testatime on default
zfspool/u04/testdevices on default
zfspool/u04/testexec on default
zfspool/u04/testsetuid on default
zfspool/u04/testreadonly on local
zfspool/u04/testzoned off default
zfspool/u04/testsnapdir hidden default
zfspool/u04/testaclmode groupmask default
zfspool/u04/testaclinherit secure default
zfspool/u04/testcanmount on default
zfspool/u04/testshareiscsi off default
zfspool/u04/testxattr on default
#zfs create zfspool/u04/test2
#zfs get all zfspool/u04/test2
NAME PROPERTY VALUE SOURCE
zfspool/u04/test2type filesystem -
zfspool/u04/test2creation Wed Nov5 13:50 2008-
zfspool/u04/test2used 24.5K -
zfspool/u04/test2available 49.7G -
zfspool/u04/test2referenced 24.5K -
zfspool/u04/test2compressratio1.00x -
zfspool/u04/test2mounted yes -
zfspool/u04/test2quota none default
zfspool/u04/test2reservation none default
zfspool/u04/test2recordsize 128K default
zfspool/u04/test2mountpoint /u04/test2 inherited from zfspool/u04
zfspool/u04/test2sharenfs off default
zfspool/u04/test2checksum on default
zfspool/u04/test2compression on inherited from zfspool/u04
zfspool/u04/test2atime on default
zfspool/u04/test2devices on default
zfspool/u04/test2exec on default
zfspool/u04/test2setuid on default
zfspool/u04/test2readonly off default
zfspool/u04/test2zoned off default
zfspool/u04/test2snapdir hidden default
zfspool/u04/test2aclmode groupmask default
zfspool/u04/test2aclinherit secure default
zfspool/u04/test2canmount on default
zfspool/u04/test2shareiscsi off default
zfspool/u04/test2xattr on default
4.远程复制zfs数据:
可以使用 zfs send 和 zfs recv 命令,将快照流表示从一个系统远程复制到另一个系统.例如:
#zfs send
zfspool/u01@test_snapshot
| ssh node02 zfs recv
zfspool/node01_u01@test_snapshot
此命令保存
zfspool/u01@test_snapshot
快照数据并将它恢复到
zfspool/node01_u01@test_snapshot
文件系统,还在node02上创建
node01_u01@test_snapshot
快照。
注意:发送完整的流时,目标文件系统必须不能存在。
使用 zfs send -i 选项可以保存增量数据。
#zfs send -i
zfspool/u01@test_snapshot1
zfspool/u01@test_snapshot2|ssh
node02 zfs recv
zfspool/node01_u01@test_snapshot
注意,第一个参数是较早的快照,第二个参数是较晚的快照。在这种情况下,
zfspool/node01_u01@test_snapshot
文件系统必须存在,增量接收才能成功。
恢复 ZFS 快照
恢复文件系统快照时,请牢记以下要点:
将恢复快照和文件系统。
将取消挂载文件系统和所有后代文件系统。
文件系统在恢复期间不可访问。
要恢复的原始文件系统在恢复期间必须不存在。
如果文件系统名称存在冲突,可以使用 zfs rename 重命名文件系统。
例如:
#zfs send
zfspool/u01@test_snapshot>/backup/u01.test_snapshot.new
#zfs receive
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36549/showart_1360912.html
页:
[1]