JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris ZFS 管理指南     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  Oracle Solaris ZFS 文件系统(介绍)

2.  Oracle Solaris ZFS 入门

3.  Oracle Solaris ZFS 与传统文件系统之间的差别

4.  管理 Oracle Solaris ZFS 存储池

5.  安装和引导 Oracle Solaris ZFS 根文件系统

6.  管理 Oracle Solaris ZFS 文件系统

管理 ZFS 文件系统(概述)

创建、销毁和重命名 ZFS 文件系统

创建 ZFS 文件系统

销毁 ZFS 文件系统

重命名 ZFS 文件系统

ZFS 属性介绍

ZFS 只读本机属性

used 属性

可设置的 ZFS 本机属性

canmount 属性

recordsize 属性

volsize 属性

ZFS 用户属性

查询 ZFS 文件系统信息

列出基本 ZFS 信息

创建复杂的 ZFS 查询

管理 ZFS 属性

设置 ZFS 属性

继承 ZFS 属性

查询 ZFS 属性

查询用于编写脚本的 ZFS 属性

挂载和共享 ZFS 文件系统

管理 ZFS 挂载点

自动挂载点

传统挂载点

挂载 ZFS 文件系统

使用临时挂载属性

取消挂载 ZFS 文件系统

共享和取消共享 ZFS 文件系统

控制共享语义

取消共享 ZFS 文件系统

共享 ZFS 文件系统

传统共享行为

设置 ZFS 配额和预留空间

设置 ZFS 文件系统的配额

在 ZFS 文件系统中设置用户和组配额

设置 ZFS 文件系统的预留空间

升级 ZFS 文件系统

7.  使用 Oracle Solaris ZFS 快照和克隆

8.  使用 ACL 和属性保护 Oracle Solaris ZFS 文件

9.  Oracle Solaris ZFS 委托管理

10.  Oracle Solaris ZFS 高级主题

11.  Oracle Solaris ZFS 故障排除和池恢复

A.  Oracle Solaris ZFS 版本说明

索引

挂载和共享 ZFS 文件系统

本节说明了 ZFS 如何挂载和共享文件系统。

管理 ZFS 挂载点

缺省情况下,ZFS 文件系统在创建时自动挂载。可以确定文件系统的特定挂载点行为,如本节所述。

另外,也可以在创建时使用 zpool create-m 选项设置池数据集的缺省挂载点。有关创建池的更多信息,请参见创建 ZFS 存储池

所有 ZFS 文件系统都由 ZFS 通过使用服务管理工具 (Service Management Facility, SMF) 的 svc://system/filesystem/local 服务在引导时挂载。文件系统挂载在 /path 下,其中 path 是文件系统的名称。

可以使用 zfs set 命令将 mountpoint 属性设置为特定路径,以覆盖缺省挂载点。ZFS 自动创建指定的挂载点(如果需要),并自动挂载关联的文件系统。

ZFS 文件系统无需您编辑 /etc/vfstab 文件即可在引导时自动挂载。

mountpoint 属性是继承的。例如,如果 pool/homemountpoint 属性设置为 /export/stuff,则 pool/home/user 将继承 /export/stuff/usermountpoint 属性值。

要阻止文件系统被挂载,须将 mountpoint 属性设置为 none。此外,canmount 属性可以用来控制是否能挂载文件系统。有关 canmount 属性的更多信息,请参见canmount 属性

也可以使用 zfs setmountpoint 属性设置为 legacy,从而通过传统挂载接口显式管理文件系统。这样做可以防止 ZFS 自动挂载和管理文件系统。不过必须改用包括 mountumount 命令在内的传统工具以及 /etc/vfstab 文件。有关传统挂载的更多信息,请参见传统挂载点

自动挂载点

mountpoint 属性不为 legacy 的所有数据集都由 ZFS 来管理。在以下示例中,创建了一个数据集,其挂载点由 ZFS 自动管理:

# 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                        -

另外,也可按以下示例所示,显式设置 mountpoint 属性:

# 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                        -

mountpoint 属性更改时,文件系统将自动从旧挂载点取消挂载,并重新挂载到新挂载点。挂载点目录根据需要进行创建。如果 ZFS 由于文件系统正处于活动状态而无法将其取消挂载,则会报告错误,并需要强制进行手动取消挂载。

传统挂载点

通过将 mountpoint 属性设置为 legacy,可以使用传统工具来管理 ZFS 文件系统。传统文件系统必须通过 mountumount 命令以及 /etc/vfstab 文件来管理。ZFS 在引导时不会自动挂载传统文件系统,并且 ZFS mount umount 命令不会对此类型的数据集执行操作。以下示例说明如何在传统模式下设置和管理 ZFS 数据集:

# zfs set mountpoint=legacy tank/home/eric
# mount -F zfs tank/home/eschrock /mnt

要在引导时自动挂载传统文件系统,必须向 /etc/vfstab 文件中添加一项。/etc/vfstab 文件中的项可能看起来如下例所示:

#device         device        mount           FS      fsck    mount   mount
#to mount       to fsck       point           type    pass    at boot options
#

tank/home/eric  -        /mnt           zfs        -        yes        -    

device to fsckfsck pass 项设置为 -,因为 fsck 命令不适用于 ZFS 文件系统。有关 ZFS 数据完整性的更多信息,请参见 事务性语义

挂载 ZFS 文件系统

创建文件系统或系统引导时,ZFS 会自动挂载文件系统。仅当需要更改挂载选项,或者显式挂载或取消挂载文件系统时,才有必要使用 zfs mount 命令。

不带任何参数的 zfs mount 命令可以显示 ZFS 管理的当前已挂载的所有文件系统。传统管理的挂载点不会显示。例如:

# zfs mount | grep tank/home
zfs mount | grep tank/home
tank/home                       /tank/home
tank/home/jeff                  /tank/home/jeff

可以使用 -a 选项挂载 ZFS 管理的所有文件系统。传统管理的文件系统不会挂载。例如:

# zfs mount -a

缺省情况下,ZFS 不允许在非空目录的顶层进行挂载。例如:

# zfs mount tank/home/lori
cannot mount 'tank/home/lori': filesystem already mounted

传统挂载点必须通过传统工具进行管理。尝试使用 ZFS 工具将产生错误。例如:

# zfs mount tank/home/bill
cannot mount 'tank/home/bill': legacy mountpoint
use mount(1M) to mount this filesystem
# mount -F zfs tank/home/billm

文件系统挂载时,将基于与数据集关联的属性值使用一组挂载选项。属性与挂载选项之间的相互关系如下:

表 6-4 ZFS 挂载相关的属性和挂载选项

属性
挂载选项
atime
atime/noatime
devices
devices/nodevices
exec
exec/noexec
nbmand
nbmand/nonbmand
readonly
ro/rw
setuid
setuid/nosetuid
xattr
xattr/noaxttr

挂载选项 nosuidnodevices,nosetuid 的别名。

使用临时挂载属性

如果使用带有 -o 选项的 zfs mount 命令显式设置了前一部分所述的任何挂载选项,则会临时覆盖关联的属性值。zfs get 命令将这些属性值报告为 temporary,并在文件系统取消挂载时恢复为其初始值。如果挂载数据集时更改某个属性值,更改将立即生效,并覆盖所有临时设置。

在以下示例中,对 tank/home/perrin 文件系统临时设置了只读挂载选项。假设要取消挂载文件系统。

# zfs mount -o ro users/home/neil

要临时更改当前已挂载的文件系统的属性值,必须使用特殊的 remount 选项。在以下示例中,对于当前挂载的文件系统,atime 属性暂时更改为 off

# zfs mount -o remount,noatime users/home/neil
NAME             PROPERTY  VALUE  SOURCE
users/home/neil  atime     off    temporary
# zfs get atime users/home/perrin

有关 zfs mount 命令的更多信息,请参见 zfs(1M)

取消挂载 ZFS 文件系统

通过使用 zfs unmount 子命令可以取消挂载 ZFS 文件系统。unmount 命令可以采用挂载点或文件系统名称作为参数。

在以下示例中,按文件系统名称取消挂载一个文件系统:

# zfs unmount users/home/mark

在以下示例中,按挂载点取消挂载一个文件系统:

# zfs unmount /users/home/mark

如果文件系统处于繁忙状态,则 unmount 命令将失败。要强行取消挂载文件系统,可以使用 -f 选项。如果文件系统内容正处于使用状态,强行取消挂载该文件系统时请务必小心。否则,会产生不可预测的应用程序行为。

# zfs unmount tank/home/eric
cannot unmount '/tank/home/eric': Device busy
# zfs unmount -f tank/home/eric

要提供向后兼容性,可以使用传统的 umount 命令来取消挂载 ZFS 文件系统。例如:

# umount /tank/home/bob

有关 zfs umount 命令的更多信息,请参见 zfs(1M)

共享和取消共享 ZFS 文件系统

只要设置 sharenfs 属性,ZFS 便能自动共享文件系统。使用此属性时,不必在共享新文件系统时修改 /etc/dfs/dfstab 文件。sharenfs 属性是要传递给 share 命令的选项的逗号分隔列表。值 on 是缺省的共享选项的别名,它向所有用户提供 read/write 权限。值 off 指明文件系统不是由 ZFS 进行管理,但可通过传统方法(如 /etc/dfs/dfstab 文件)来共享。在引导过程中将会共享 sharenfs 属性不为 off 的所有文件系统。

控制共享语义

缺省情况下,所有文件系统都未进行共享。要共享新文件系统,请使用类似如下的 zfs set 语法:

# zfs set sharenfs=on tank/home/eric

sharenfs属性是继承的,如果文件系统继承的属性不为 off,则这些文件系统在创建时会自动进行共享。例如:

# zfs set sharenfs=on tank/home
# zfs create tank/home/bill
# zfs create tank/home/mark
# zfs set sharenfs=ro tank/home/bob

tank/home/billtank/home/mark 最初以可写方式共享,因为它们从 tank/home 继承了 sharenfs 属性。将该属性设置为 ro(只读)后,无论为 tank/home 设置的 sharenfs 属性为何值,都会以只读方式共享 tank/home/mark

取消共享 ZFS 文件系统

尽管大多数文件系统都可在引导、创建和销毁过程中自动共享或取消共享,但文件系统有时候需要显式取消共享。为此,请使用 zfs unshare 命令。例如:

# zfs unshare tank/home/mark

此命令会取消共享 tank/home/mark 文件系统。要取消共享系统中的所有 ZFS 文件系统,需要使用 -a 选项。

# zfs unshare -a

共享 ZFS 文件系统

通常而言,ZFS 在引导和创建时共享文件系统的自动行为足以满足一般操作的需要。如果由于某些原因取消共享了某个文件系统,则可使用 zfs share 命令再次将其共享。例如:

# zfs share tank/home/mark

另外,还可以通过使用 -a 选项共享系统中的所有 ZFS 文件系统。

# zfs share -a

传统共享行为

如果 sharenfs 属性设置为 off,则 ZFS 在任何时候都不会尝试共享或取消共享文件系统。借助此值,可以通过传统方法(如 /etc/dfs/dfstab 文件)来管理文件系统共享。

与传统的 mount 命令不同,传统的 shareunshare 命令在 ZFS 文件系统中仍然可以运行。因此,可以使用与 sharenfs 属性的选项不同的选项来手动共享文件系统。不鼓励使用这种管理模型。请选择完全通过 ZFS 或完全通过 /etc/dfs/dfstab 文件来管理 NFS 共享内容。ZFS 管理模型与传统模型相比,设计更为简单,所需进行的工作越少。