在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

向 ZFS 快照流应用不同的属性值

您可以发送带有特定文件系统属性值的 ZFS 快照流,但在接收快照流时,可以指定不同的本地属性值。或者,您可以指定收到快照流时使用原始属性值以重新创建原始文件系统。此外,收到快照流时,还可以禁用文件系统属性。

  • 使用 zfs inherit –S 将本地属性值恢复为接收值(如有)。如果属性没有接收值,则 zfs inherit – S 命令的行为与不带 –S 选项的 zfs inherit 命令相同。如果属性有接收值,则 zfs inherit 命令会用继承的值覆盖接收的值,直到发出 zfs inherit –S 命令将其恢复为接收的值。

  • 可以使用 zfs get –o 以包括新的非缺省栏 RECEIVED。或者,可以使用 zfs get –o all 命令以包括所有栏,其中包括 RECEIVED

  • 您可以使用 zfs send –p 选项以包括发送流中的属性,而无需使用 –R 选项。

  • 可以使用 zfs receive –e 选项来利用所发送的快照名的最后一个元素确定新的快照名。以下示例将 poola/bee/cee@1 快照发送给 poold/eee 文件系统,并仅利用快照名的最后一个元素 (cee@1) 创建接收的文件系统和快照。

    # zfs list -rt all poola
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    poola             134K   134G    23K  /poola
    poola/bee          44K   134G    23K  /poola/bee
    poola/bee/cee      21K   134G    21K  /poola/bee/cee
    poola/bee/cee@1      0      -    21K  -
    # zfs send -R poola/bee/cee@1 | zfs receive -e poold/eee
    # zfs list -rt all poold
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    poold             134K   134G    23K  /poold
    poold/eee          44K   134G    23K  /poold/eee
    poold/eee/cee      21K   134G    21K  /poold/eee/cee
    poold/eee/cee@1      0      -    21K  -

在某些情况下,发送流中的文件系统属性可能不适用于接收方文件系统,或者本地文件系统属性(如 mountpoint 属性值)可能会干扰恢复。

例如,tank/data 文件系统禁用了 compression 属性。tank/data 文件系统的一个快照在发送到备份池时带有属性(–p 选项),在接收该快照时启用了 compression 属性。

# zfs get compression tank/data
NAME       PROPERTY     VALUE     SOURCE
tank/data  compression  off       default
# zfs snapshot tank/data@snap1
# zfs send -p tank/data@snap1 | zfs recv -o compression=on -d bpool
# zfs get -o all compression bpool/data
NAME        PROPERTY     VALUE     RECEIVED  SOURCE
bpool/data  compression  on        off       local

在该示例中,bpool 池接收快照时启用了 compression 属性。因此 bpool/datacompression 值为 on。

如果将此快照流发送到新池 restorepool 以用于恢复,您可能要保留所有原始的快照属性。在这种情况下,可使用 zfs send –b 命令恢复原始的快照属性。例如:

# zfs send -b bpool/data@snap1 | zfs recv -d restorepool
# zfs get -o all compression restorepool/data
NAME              PROPERTY     VALUE     RECEIVED  SOURCE
restorepool/data  compression  off       off       received 

在该示例中,"compression" 的值是 off,代表来自原始 tank/data 文件系统的快照的 "compression" 值。

如果快照流中有本地文件系统属性值,而您希望在接收快照流时禁用该属性,可使用 zfs receive –x 命令。例如,以下命令发送一个起始目录文件系统的递归快照流,并将所有文件系统属性保留到备份池,但没有配额属性值:

# zfs send -R tank/home@snap1 | zfs recv -x quota bpool/home
# zfs get -r quota bpool/home
NAME                   PROPERTY  VALUE  SOURCE
bpool/home             quota     none   local
bpool/home@snap1       quota     -      -
bpool/home/lori        quota     none   default
bpool/home/lori@snap1  quota     -      -
bpool/home/mark        quota     none   default
bpool/home/mark@snap1  quota     -      -

如果未使用 –x 选项接收该递归快照,将在接收方文件系统设置配额属性。

# zfs send -R tank/home@snap1 | zfs recv bpool/home
# zfs get -r quota bpool/home
NAME                   PROPERTY  VALUE  SOURCE
bpool/home             quota     none   received
bpool/home@snap1       quota     -      -
bpool/home/lori        quota     10G    received
bpool/home/lori@snap1  quota     -      -
bpool/home/mark        quota     10G    received
bpool/home/mark@snap1  quota     -      -