Avec ZFS sous Linux, comment répertorier les propriétés spécifiques d'un périphérique (vdev)?

9

J'utilise ZFS depuis un moment maintenant sans problème. Je suis toujours excité à ce sujet et je lui fais confiance. Mais de temps en temps, de nouvelles questions me viennent à l'esprit (notamment après avoir lu de la documentation, ce qui augmente parfois le nombre de questions au lieu de le réduire).

Dans ce cas, j'ai ajouté un nouveau vdev (un miroir) à un pool racine, et j'ai donc lu le manuel zpool ( man zpool). À la fin de la section zpool add, il indique:

-o propriété = valeur

Définit les propriétés de pool données. Voir la section "Propriétés" pour une liste des propriétés valides qui peuvent être définies. La seule propriété prise en charge pour le moment est ashift. Notez que certaines propriétés (parmi lesquelles ashift) ne sont pas héritées d'un vdev précédent. Ils sont spécifiques à vdev et non spécifiques au pool.

Cela signifie que la ashiftpropriété n'est pas spécifique au pool, mais spécifique à vdev. Mais je n'ai pu trouver aucune commande ou option qui me permettrait de visualiser cette propriété (ou toute autre propriété spécifique à vdev) par vdev.

En d'autres termes, par exemple, si j'ai un pool qui contient un vdev avec ashift=12et un vdev avec ashift=10, comment puis-je le vérifier?

Ce que j'ai déjà essayé:

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

Donc, zpool listni zpool getmontrer aucune propriété d'une manière spécifique à vdev.

Des idées?

Binarus
la source

Réponses:

9

Afin d'afficher la valeur actuelle d'un paramètre spécifique comme ashift, vous devrez utiliser la zdbcommande au lieu de la zpoolcommande.

L'exécution zdbde son propre chef sans argument vous donnera une vue de tout ce qui se poolstrouve sur le système, et leurs vdevsdisques, et dans le 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

ou, pour juste ashiftavec un certain contexte:

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

Voici un ancien billet de blog àzdb ce sujet qui est toujours très instructif sur les origines et l'intention, et les informations qui en découlent zdb. Un rapide google révèle également de nombreux articles qui peuvent être plus spécifiquement pertinents pour ZFS sur Linux.

Tim Kennedy
la source
1
Maintenant , c'est ce que je fais appel une réponse. ne semble pas être mentionné sur l'une des pages de Sun qui apparaissent généralement si vous recherchez "ZFS <something>" sur Google. Avant de passer à ZFS, j'ai consacré énormément de temps à rechercher si c'était la bonne chose pour moi et comment je pouvais l'installer et le configurer, mais je n'ai jamais rencontré de trébuchement ; de plus, ni ni aucune allusion à cela, y compris la section "VOIR AUSSI". Merci beaucoup! zdbzdbman zpoolman zfs
Binarus
1
Voilà une observation intéressante. J'ai travaillé chez Sun lors de la sortie de ZFS, et plus tard pour d'autres sociétés qui ont beaucoup travaillé avec ZFS, cela zdbme semble donc assez naturel. Je ne savais pas que c'était de la magie noire à ce stade. :) Open-ZFS est un consortium de développeurs IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / an qui essaient de s'assurer que le monde ZFS non-Oracle reste étroitement aligné. Leur Wiki est assez bon et contient beaucoup d'informations, y compris quelques références à zdb, Voir: open-zfs.org/w/…
Tim Kennedy
1
ZFS sous Linux a des pages de manuel ZFS qui sont assez bonnes. Pour autant que je puisse voir, ils sont les mêmes que ceux de Solaris, moins les spécialités de Solaris. Et devinez quoi: sur mes systèmes Linux, man zdbfait ce que vous attendez :-) Donc, c'est documenté d'une manière ou d'une autre, mais comme il n'est mentionné presque nulle part, personne ne vient à l'idée de taper man zdb. Du billet de blog que vous avez lié: "[...] mais il est, quelque peu intentionnellement je pense, sans papiers. Seuls deux autres que je connais ont eu le courage d'en parler publiquement [...]" :-)
Binarus