ZFS管理手册:第七章池的属性

动机

对于ext4和GNU/Linux中的许多文件系统,我们可以通过设置各种flags来对文件系统进行调优。比如设置标签、默认挂载选项和其他可调参数。对于ZFS,同样是可以设置的,而且它要复杂得多。它允许我们修改括池及其包含的dataset的属性。因此,我们可以根据自己的喜好或需要“调优”文件系统。然而,并不是每个属性都是可调的。有些是只读的。但是,我们需要清楚每个属性是什么,以及它们如何影响池。请注意,我们只查看zpool属性,当我们说到DataSet副时,我们将讨论ZFS dataset的属性。

ZPool属性

  • allocated: 所有ZFS dataset写入到池中的数据量。此属性为只读。
  • altroot: 备用根目录。如果进行了设置,则该目录会被前置到池中的任何挂载点。检查未知池(无法信任其中的挂载点)时,或在典型路径无效的备用启动环境中,可以使用此属性。altroot 不是持久属性。它仅在系统运行期间有效。设置 altroot 即表示缺省情况下使用 cachefile=none,但此设置可以使用显式设置来覆盖。
  • ashift: 只可以在创建池的时候设置。池扇区大小指数,大小为2的幂。I/O操作将与指定的大小边界对齐。缺省值为“9”,因为2^9=512,这是操作系统实用程序用于读写数据的标准扇区大小。对于具有4 KiB边界的高级格式化驱动器,该值应设置为“ashift=12”,即2^12=4096
  • autoexpand: 必须在更换池中的第一个驱动器之前进行设置 。当底层存储空间增大时,控制池的是否自动扩展。默认值为“关闭”。将池中的所有驱动器替换为较大的驱动器后,池将自动增长到新大小。此设置是布尔值,值为“打开”或“关闭”。
  • autoreplace: 控制池中“备用”VDEV设备是否自动更换。默认设置为“OFF”,因此必须使用“zpool place”命令手动启动设备更换。此设置是一个布尔值,值为“ON”或“OFF”。
  • bootfs: 只读参数,定义池中的dataset是否可引导。这通常由安装程序设置。
  • cachefile: 控制缓存池配置的位置。在系统上导入zpool时,ZFS可以使用磁盘上的元数据检测驱动器拓扑结构。但是,在某些群集环境中,缓存文件可能需要存储在不会自动导入的其他位置。可以设置为任何字符串,但对于大多数ZFS安装,默认位置“/etc/zfs/zpool.cache”应该就足够了。
  • capacity:只读参数,池已用的空间大小。
  • comment:由不超过32个可打印的ASCII字符组成的字符串。员可以使用此字设置有关池的备注信息,以便即使池出现故障能快速找到对应的池。
  • dedupditto:设置块重复数据删除阈值,如果重复块的引用计数超过阈值,则会自动存储块的重复副本。默认值为0。可以是任何正数。
  • dedupratio: 只读属性,池的重复数据删除率,以乘数的方式表示
  • delegation: 控制是否可以授予为数据集定义的非特权用户访问权限。该设置是布尔值,默认为“打开”,可以是“打开”或“关闭”。
  • expandsize: 池内可用于增加池总容量的未初始化空间量。 未初始化的空间由标签为 EFI 的离线 udev 组成(即“zpool online-e”)。当动态扩展LUN时,会出现此空间。
  • failmode: 在发生灾难性池故障时控制系统行为。
    • wait: 阻止所有I/O访问,直到恢复设备连接并清除错误。这是默认行为。
    • continue: 将EIO返回到任何新的写入I/O请求,但允许读取任何剩余的健康设备。任何尚未提交到磁盘的写入请求都将被阻止。
    • panic: 将一条消息打印到控制台并生成系统崩溃的dump文件。
  • free:只读值,用于标识池中未分配的块数。
  • guid:只读属性,用于标识池的唯一标识符。类似于ext4文件系统的UUID字符串。
  • health:只读属性,用于将池的当前运行状况标识为在ONLINE, DEGRADED, FAULTED, OFFLINE, REMOVED, 或者 UNAVAIL。
  • listsnapshots: 控制“zfs list”命令是否显示与此池相关联的快照信息。如果禁用此属性,则可以使用“zfs list -t snapshot”命令显示快照信息。缺省值为“off”。布尔值,可以是“关”或“开”。
  • readonly:布尔值,可以是onoff。默认值为“off”。将池设置为只读模式以防止写入导致数据损坏。
  • size:只读属性,用于标识存储池的总大小。
  • version:可写设置,用于标识池的当前磁盘版本。可以是从1到“zpool upgrade -v”命令输出的任何值。当需要特定版本来实现向后兼容性时,可以使用此属性。

获取和设置属性

有几种方法可以获取池的属性。可以一次获取所有属性,可以只获取一个属性,也可以一次获取多个属性,多个属性之间用逗号分隔。例如,假设我只想获得池的健康状况。我可以发出以下命令:

# zpool get health tank
NAME  PROPERTY  VALUE   SOURCE
tank  health    ONLINE  -

如果想获得多个属性,例如系统的运行状况,有多少剩余空间,已经分配分配了多少,我可以使用以下命令:

# zpool get health,free,allocated tank
NAME  PROPERTY   VALUE   SOURC
tank  health     ONLINE  -
tank  free       176G    -
tank  allocated  32.2G   -

当然,如果我想获得所有可用的设置,可以运行:

# zpool get all tank
NAME  PROPERTY       VALUE       SOURCE
tank  size           208G        -
tank  capacity       15%         -
tank  altroot        -           default
tank  health         ONLINE      -
tank  guid           1695112377970346970  default
tank  version        28          default
tank  bootfs         -           default
tank  delegation     on          default
tank  autoreplace    off         default
tank  cachefile      -           default
tank  failmode       wait        default
tank  listsnapshots  off         default
tank  autoexpand     off         default
tank  dedupditto     0           default
tank  dedupratio     1.00x       -
tank  free           176G        -
tank  allocated      32.2G       -
tank  readonly       off         -
tank  ashift         0           default
tank  comment        -           default
tank  expandsize     0           -

设置参数也是很容的。但是,这里存在一个问题。如果你把配置修改了,没有办法办法把它设置为默认值。对于其余属性,如果您尝试将属性设置为无效参数,将错误打印到屏幕上,让您知道什么是可用的,但它不会告诉你默认值是什么。但是,您可以查看“SOURCE”字段,如果该列字段的值是default,则默认值。如果它是local,那么它是用户定义的。
例如我修 comment 字段,应该会有以下输出:

# zpool set comment="Contact admins@example.com" tank
# zpool get comment tank
NAME  PROPERTY  VALUE                       SOURCE
tank  comment   Contact admins@example.com  local

就如上面所描述的, comment 的 SOURCE 字段为 local,意思是这个字段是用户所定义的。如前所述,我不知道如何在设置后如何将字符串属性恢复为默认值。领导,更多的属性,可以在创建池时候通过 -o 参数来传入,例如:

# zpool create -o ashift=12 tank raid1 sda sdb

总结

Zpool属性适用于整个池,这意味着ZFS数据集将从池中继承该属性。但是您在ZFS dataset上设置的一些属性可能会影响到整个池。例如如果你对一个 dataset 设置了重删, 那么你整个池的 dataset 都会设置为重删。 但是支持当前设置的这个 dataset 的重删会生效,其余的都是禁用的。此外,设置属性不具有追溯力。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值