Solaris zfs操作与使用
ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统。最初是由Sun公司为Solaris 10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统。ZFS是基于存储池的,与典型的映射物理存储设备的传统文件系ZFS统不同,ZFS所有在存储池中的文件系统都可以使用存储池的资源。
ZFS 常见用法
创建文件系统
# zfs create tank/home/bonwick
默认情况下,文件系统会被挂载在同名的位置,比如上个例子,就是挂载到/tank/home/bonwick.
挂载点也可以在创建文件系统时明确指出。
# zfs create -o mountpoint=/export/zfs tank/home
销毁文件系统
destroy一个文件系统会自动unmount和unshare,并且不需要确定,所以一定要小心
# zfs destroy tank/home/ahrens
cannot unmount 'tank/home/ahrens': Device busy
# zfs destroy -f tank/home/ahrens
如果文件系统有子孙,则需要使用-r参数。
# zfs destroy tank/ws
cannot destroy 'tank/ws': filesystem has children
use '-r' to destroy the following datasets:
tank/ws/billm
tank/ws/bonwick
tank/ws/maybee
# zfs destroy -r tank/ws
挂载和共享
自动挂载点
如果一个zfs的mountpoint属性不是legacy,那么它的挂载是自动完成的。用户可以明确设置挂载点,或者使用默认值。
# zfs create pool/filesystem
# zfs get mountpoint pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mountpoint /pool/filesystem default
# zfs get mounted pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mounted yes
# zfs set mountpoint=/mnt pool/filesystem
# zfs get mountpoint pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mountpoint /mnt local
# zfs get mounted pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mounted yes
legacy 挂载点
这种类型的zfs不会自动挂载,用户除非使用mount和umount命令,或者编辑/etc/vfstab文件。ZFS不会在启动时自动挂载这种文件系统,而且ZFS mount umount命令不能操作这种类型。
# zfs set mountpoint=legacy tank/home/eschrock
# mount -F zfs tank/home/eschrock /mnt
要自动挂载这种zfs,必须通过/etc/vfstab文件。
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
tank/home/eschrock - /mnt zfs - yes -
共享
默认情况下,zfs是不共享的,继承关系的zfs会继承共享属性。
# zfs set sharenfs=on tank/home
# zfs create tank/home/bricker
# zfs create tank/home/tabriz
# zfs set sharenfs=ro tank/home/tabriz