管理和共享ZFS文件系统
管理ZFSmount点
默认的所有的ZFS文件系统的mount是通过SMF'svc://system/filesystem/local服务来启动的。文件系统是mount在/path文件系统名路径上的。
你能够通过设置mount点的属性通过使用zfs set命令来指定mount点。ZFS文件系统自动创建mount点,如果需要自动mount文件系统使用命令zfs mount –a来引入,不需要你来编辑/etc/vfstab文件。(这点本人感觉有点象AIX上的感觉,直接建立/etc/filesystems)
,mount点的属性是继承的。比如:如果pool/home是mount点设置在/export/stuff上则pool/home/user继承/export/home/user为它mount点的属性。
Mount点的属性能够设置为none来防止文件系统重复mount.
如果需要,文件系统也可以直接通过mount接口来管理,通过zfs set命令来管理mount点。这样做可以防止ZFS文件系统自动mount和管理文件系统。这个接口包括mount和umount命令,同时要注意/etc/vfstab文件。
:当更改mount点管理策略时要注意下面的行为:
自动mount点行为
继承mount点的行为
自动mount点
当改变到legacy或none ZFS自动mount文件系统
如果ZFS是当前的文件系统但是它的状态是unmount的。如果mount点的属性改变以后,文件系统还是保持unmount的状态。
Mount点的属性并不是通过ZFS来管理legacy。下面的例子显示创建ZFS自动管理的mount点。
# 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 -
你也可以直接设置mount点的属性,看下面的例子。
# 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 -
当mount点的属性改变的时候,文件系统是自动从老的mount点上umount的然后重新mount到新的mount点上。Mount点目录是需要创建的。如果ZFS并不能unmount文件系统在文件系统活动期间,这个错误是被报告的并且需要手工强制unmount。
Legacy Mount点
你能够管理ZFS文件系统通过legacy工具来设置mount点的属性的legacy。Legacy文件系统不许通过mount和umount命令和/etc/vfstab文件来管理。ZFS文件系统不能启动的时候自动mount legacy文件系统同时ZFS mount和umount命令并不能操作datasetl类型。下面的例子显示如何设置和管理ZFS dataset。
# zfs set mountpoint=legacy tank/home/eschrock
# mount -F zfs tank/home/eschrock /mnt
特殊情况下,如果你设置ZFS为/usr或者/var文件系统,你必须指示他们为legacy文件系统。附加的,你需要在/etc/vfstab文件中为自动mount他们创建条目。另外,当系统启动的时候在保持模式下属于system/filesystem/local服务。
在启动的时候自动mount legacy文件系统。你必须在/etc/vfstab文件中增加条目。下面的例子显示/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 -
e device to fsck 和fsck pass 条目是设置为 -. 这是因为 fsck命令并不能应用于ZFS 文件系统..
Mounting ZFS 文件系统
ZFS文件系统在创建时是自动mount的或者当系统启动的时候。使用zfs mount明明只有当改变mount选项或者直接mount和unmount文件系统的时候是必须的。
zfs mount命令没有参数的时候显示当前mount的文件系统。Legacy管理的mount点并不显示:
# zfs mount
tank /tank
tank/home /tank/home
tank/home/bonwick /tank/home/bonwick
tank/ws /tank/ws
你能够使用-a选项来mount所有ZFS管理的文件系统。Legacy管理文件系统不能mount。
# zfs mount -a
默认的ZFS并不能允许mount在非空目录之上。如果强迫mount到非空目录之上,使用-O选项。
# zfs mount tank/home/lalt
cannot mount '/export/home/lalt': directory is not empty
use legacy mountpoint to allow this behavior, or use the -O flag
# zfs mount -O tank/home/lalt
legacy mount点必须是通过legacy工具进行管理的。当尝试使用ZFS工具会引起错误的。
# zfs mount pool/home/billm
cannot mount 'pool/home/billm': legacy mountpoint
use mount(1M) to mount this filesystem
# mount -F zfs tank/home/billm
当文件系统是mount的。它使用一些基于属性的值结合dataset的mount选项。下面显示如下:
Property
Mount Options
devices
devices/nodevices
exec
exec/noexec
readonly
ro/rw
setuid
setuid/nosetuid
The mount option nosuid is an alias for nodevices,nosetuid.
临时Mount属性
I如果以上的选项通过zfs mount的-o选项被设置,结合这些属性的值是被临时使用的。这些选项的值被告知为临时通过zfs get命令可以看到,当文件系统umont后他们将恢复他们原来的值。如果属性值在dataset mount的时候被改变,则改变将会立即生效。
I下面的例子显示为tank/home/perrin文件系统设置临时的只读mount选项。
# zfs mount -o ro tank/home/perrin
下面的例子显示文件系统确认是unmount的。临时改变文件系统的属性在mount状态,你必须使用remount选项。
# zfs mount -o remount,noatime tank/home/perrin
# zfs get atime tank/home/perrin
NAME PROPERTY VALUE SOURCE
tank/home/perrin atime off temporary
.
Unmounting ZFS 文件系统
你能够使用zfs unmount命令来umount文件系统。
下面的例子显示通过文件系统名umount文件系统。
# zfs unmount tank/home/tabriz
下面的例子显示通过mount点来umount文件系统。
# zfs unmount /export/home/tabriz
如果文件系统是活动的或者正忙则umount命令失败。你可以使用-f参数来强制umount文件系统。当强制umount文件系统需要注意的是文件系统的数据是活动正在使用的。
# zfs unmount tank/home/eschrock
cannot unmount '/export/home/eschrock': Device busy
# zfs unmount -f tank/home/eschrock
提供向后的能力,legacy umount命令能够够使用umount命令来umount ZFS文件系统。
# umount /export/home/bob
Sharing ZFS 文件系统
和mount点近似。ZFS能够自动共享文件系统通过使用sharefs属性。使用这种方法当你增加一个新的文件系统的时候并不需要修改/etc/dfs/dfstab文件。共享属性是用逗号分割选项的在share命令上。为别名指定的值是on在默认共享选项上为所有的用户指定为read/write权限。当指定值为off知识文件系统不通过ZFS文件系统管理同时通过传统的方式进行共享比如:/etc/dfs/dfstab文件。所有的这些文件系统的sharenfs在共享启动的时候是打开的。
控制Share Semantics
默认的所有文件系统是非共享的。共享新的文件系统通过zfs set设置。
# zfs set sharenfs=on tank/home/eschrock
属性是继承的,当文件系统自动共享创建则他们的继承属性是打开的。
# zfs set sharenfs=on tank/home
# zfs create tank/home/bricker
# zfs create tank/home/tabriz
# zfs set sharenfs=ro tank/home/tabriz
在tank/home/bricker和tank/home/tabriz初始共享为写是因为他们继承了sharenfs属性从tank/home。一旦属性被设置为ro 则(readonly), tank/home/tabriz共享属性为只读则忽略sharenfs来自tank/home的属性。
Unsharing ZFS文件系统
许多的文件系统在启动的时候自动share和unshare。有时候创建和删除文件系统需要直接unshare。
# zfs unshare tank/home/tabriz
命令unshares tank/home/tabriz文件系统。需要unshare所有的ZFS文件系统,需要使用-a选项。
# zfs unshare -a
Sharing ZFS 文件系统
很多的时候需要ZFS在启动和创建share的时候需要自动的行为,足够的正常操作。有些原因,在unshare文件系统的时候,你需要再一次share文件系统功过zfs share命令。
# zfs share tank/home/tabriz
你也能够share所有的ZFS文件系统功过-a选项。
# zfs share -a
Legacy Share 行为
如果sharenfs属性是关闭的。则ZFS不能够尝试共享或者非共享文件系统。通过传统的方法也能够进行管理,比如:/etc/dfs/dfstab文件。
.不象传统的mount命令,传统的share和unshare命令能够作用于ZFS文件系统。一些情况下,你能够够手工share文件系统通过设置sharenfs属性的不同选项。这种管理模式是不推荐的。选择任意一个NFS share来完成对ZFS的管理或者通过/etc/dfs/dfstab文件来管理。ZFS管理模式被设计为更简单和更少的工作量比起传统的模式。
阅读(3397) | 评论(1) | 转发(0) |