jacky.lee 发表于 2008-11-05 14:41

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]
查看完整版本: solaris zfs文件系统不完全应用