使用Linux上的ZFS,如何列出设备(vdev)的特定属性?


9

从现在开始我一直在使用ZFS,没有任何问题。我仍然对此感到兴奋,并且高度信任它。但是我不时会想到新的问题(特别是在阅读了一些文档之后,有时会增加而不是减少问题的数量)。

在这种情况下,我向根池添加了新的vdev(镜像),因此已阅读zpool手册(man zpool)。在本节的末尾zpool add,它指出:

-o属性=值

设置给定的池属性。有关可以设置的有效属性的列表,请参见“属性”部分。目前唯一支持的属性是转移。请注意,某些属性(包括ashift)不是从先前的vdev继承的。它们是特定于vdev的,而不是特定于池的。

这意味着该ashift属性不是特定于池的,而是特定于vdev的。但是我无法找到任何命令或选项来允许我查看每个vdev的该属性(或任何其他vdev特定的属性)。

换句话说,例如,如果我有一个包含一个带有vdev ashift=12和一个带有vdev的池,ashift=10我该如何验证呢?

我已经尝试过的:

root@cerberus:~# zpool list -v -o ashift rpool
ASHIFT
12
  mirror   928G   583G   345G         -    27%    62%
    ata-ST31000524NS_9WK21HDM      -      -      -         -      -      -
    ata-ST31000524NS_9WK21L15      -      -      -         -      -      -
  mirror   928G  74.4M   928G         -     0%     0%
    ata-ST31000524NS_9WK21FXE      -      -      -         -      -      -
    ata-ST31000524NS_9WK21KC1      -      -      -         -      -      -

root@cerberus:~# zpool get all rpool
NAME   PROPERTY                    VALUE                       SOURCE
rpool  size                        1.81T                       -
rpool  capacity                    31%                         -
rpool  altroot                     -                           default
rpool  health                      ONLINE                      -
rpool  guid                        3899811533678330272         default
rpool  version                     -                           default
rpool  bootfs                      rpool/stretch               local
rpool  delegation                  on                          default
rpool  autoreplace                 off                         default
rpool  cachefile                   -                           default
rpool  failmode                    wait                        default
rpool  listsnapshots               off                         default
rpool  autoexpand                  off                         default
rpool  dedupditto                  0                           default
rpool  dedupratio                  1.00x                       -
rpool  free                        1.24T                       -
rpool  allocated                   583G                        -
rpool  readonly                    off                         -
rpool  ashift                      12                          local
rpool  comment                     -                           default
rpool  expandsize                  -                           -
rpool  freeing                     0                           default
rpool  fragmentation               13%                         -
rpool  leaked                      0                           default
rpool  feature@async_destroy       enabled                     local
rpool  feature@empty_bpobj         active                      local
rpool  feature@lz4_compress        active                      local
rpool  feature@spacemap_histogram  active                      local
rpool  feature@enabled_txg         active                      local
rpool  feature@hole_birth          active                      local
rpool  feature@extensible_dataset  enabled                     local
rpool  feature@embedded_data       active                      local
rpool  feature@bookmarks           enabled                     local
rpool  feature@filesystem_limits   enabled                     local
rpool  feature@large_blocks        enabled                     local

因此,既不zpool list也不zpool get以vdev特定的方式显示任何属性。

有任何想法吗?

Answers:


9

为了查看诸如的特定设置的当前值ashift,您将需要使用zdb命令而不是zpool命令。

zdb不带任何参数的单独运行将为您提供pools系统上及其中的vdevs磁盘以及磁盘中所有磁盘的视图vdevs

root@pve1:/home/tim# zdb
pm1:
    version: 5000
    name: 'pm1'
    state: 0
    txg: 801772
    pool_guid: 13783858310243843123
    errata: 0
    hostid: 2831164162
    hostname: 'pve1'
    vdev_children: 1
    vdev_tree:
        type: 'root'
        id: 0
        guid: 13783858310243843123
        children[0]:
            type: 'raidz'
            id: 0
            guid: 13677153442601001142
            nparity: 2
            metaslab_array: 34
            metaslab_shift: 33
            ashift: 9
            asize: 1600296845312
            is_log: 0
            create_txg: 4
            children[0]:
                type: 'disk'
                id: 0
                guid: 4356695485691064080
                path: '/dev/disk/by-id/ata-DENRSTE251M45-0400.C_A181B011241000542-part1'
                whole_disk: 1
                not_present: 1
                DTL: 64
                create_txg: 4
            children[1]:
                type: 'disk'
                id: 1
                guid: 14648277375932894482
                path: '/dev/disk/by-id/ata-DENRSTE251M45-0400.C_A181B011241000521-part1'
                whole_disk: 1
                DTL: 82
                create_txg: 4
            children[2]:
                type: 'disk'
                id: 2
                guid: 11362800770521042303
                path: '/dev/disk/by-id/ata-DENRSTE251M45-0400.C_A181B011241000080-part1'
                whole_disk: 1
                DTL: 59
                create_txg: 4
            children[3]:
                type: 'disk'
                id: 3
                guid: 10494331395233532833
                path: '/dev/disk/by-id/ata-DENRSTE251M45-0400.C_A181B011241000517-part1'
                whole_disk: 1
                DTL: 58
                create_txg: 4
    features_for_read:
        com.delphix:hole_birth
        com.delphix:embedded_data

或者,仅ashift在某些情况下:

root@pve1:/home/tim#  sudo zdb | egrep 'ashift|vdev|type' | grep -v disk
    vdev_children: 1
    vdev_tree:
        type: 'root'
            type: 'raidz'
            ashift: 9

这是一篇关于此内容的旧博客文章,zdb文章仍非常有用地说明了来源和意图以及从中获得的信息zdb。一个快速的Google网站还显示了许多与Linux上的ZFS更具体相关的帖子。


1
现在,这就是我所说的答案。zdb在Google的其中一个页面上似乎没有提及该页面,如果您使用Google搜索“ ZFS <something>”,该页面通常会出现。切换到ZFS之前,我花了不可思议的时间来研究它是否适合我,以及如何安装和配置它,但是我从未偶然发现过zdb;此外,也man zpool没有man zfs任何提示,包括“另请参见”部分。非常感谢!
Binarus

1
这是一个有趣的观察。ZFS发行时,我在Sun工作,后来在其他与ZFS合作的公司中工作,所以zdb对我来说似乎很自然。我现在还没有意识到这是黑魔法。:) Open-ZFS是IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux /其他开发人员的联盟,这些开发人员试图确保整个非Oracle ZFS世界保持紧密联系。他们的Wiki是相当不错的,有很多的信息,包括一些参考zdb,请参阅:open-zfs.org/w/...
蒂姆·肯尼迪

1
Linux上的ZFS具有非常好的ZFS手册页。据我所知,它们与Solaris相同,只不过是Solaris专业。猜猜是什么:在我的Linux系统上,man zdb您会做些什么:-)因此它以某种方式被记录在案,但是由于几乎没有提到它,因此没有人提出键入的想法man zdb。从您的博客文章中链接:“ [...]但我认为这是有意的,没有记录。我认识的只有两个人有勇气公开讨论它[...]” :-)
Binarus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.