Con ZFS en Linux, ¿cómo enumero las propiedades específicas del dispositivo (vdev)?


9

Estoy usando ZFS desde hace un tiempo sin problemas. Todavía estoy entusiasmado y confío mucho en ello. Pero de vez en cuando, me vienen a la mente nuevas preguntas (en particular después de haber leído alguna documentación, lo que a veces aumenta el número de preguntas en lugar de reducirlo).

En este caso, he agregado un nuevo vdev (un espejo) a un grupo raíz y, por lo tanto, he leído el manual de zpool ( man zpool). Al final de la sección zpool add, dice:

-o propiedad = valor

Establece las propiedades del grupo dado. Consulte la sección "Propiedades" para obtener una lista de propiedades válidas que se pueden configurar. La única propiedad admitida en este momento es ashift. Tenga en cuenta que algunas propiedades (entre ellas ashift) no se heredan de un vdev anterior. Son específicos de vdev, no específicos de grupo.

Eso significa que la ashiftpropiedad no es específica del grupo, sino específica de vdev. Pero no he podido encontrar ningún comando u opción que me permita ver esa propiedad (o cualquier otra propiedad específica de vdev) por vdev.

En otras palabras, por ejemplo, si tengo un grupo que contiene un vdev con ashift=12y un vdev con ashift=10, ¿cómo puedo verificar esto?

Lo que ya he probado:

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

Entonces, zpool listni zpool getmostrar ninguna propiedad de una manera específica vdev.

¿Algunas ideas?

Respuestas:


9

Para ver el valor actual de una configuración específica como ashift, necesitará usar el zdbcomando en lugar del zpoolcomando.

Ejecutar zdbpor sí solo sin argumentos le dará una vista de los que se poolsencuentran en el sistema y sus vdevsdiscos dentro del 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

o, solo ashiftpor algún contexto:

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

Aquí hay una vieja publicación de blog sobrezdb eso que todavía es muy informativa sobre los orígenes y la intención, y la información que surge zdb. Un google rápido también revela muchas publicaciones que pueden ser más específicamente relevantes para ZFS en Linux.


1
Ahora eso es lo que estoy llamando una respuesta. zdbno parece ser mencionado en una de las páginas de Sun que generalmente aparecen si buscas en Google "ZFS <something>". Antes de cambiar a ZFS, he dedicado mucho tiempo a investigar si es lo correcto para mí y cómo podría instalarlo y configurarlo, pero nunca me he topado zdb; además, man zpoolni man zfstiene ni ninguna pista, incluida la sección "VER TAMBIÉN". ¡Muchas gracias!
Binarus

1
Esa es una observación interesante. Trabajé en Sun cuando se lanzó ZFS, y más tarde para otras compañías que trabajaron mucho con ZFS, por lo que me zdbparece algo natural. No me di cuenta de que era magia negra en este momento. :) Open-ZFS es un consorcio de IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / otros desarrolladores que intentan asegurarse de que todo el mundo ZFS no perteneciente a Oracle se mantenga estrechamente alineado. Su Wiki es bastante bueno y tiene mucha información, incluidas algunas referencias a zdb, ver: open-zfs.org/w/…
Tim Kennedy

1
ZFS en Linux tiene páginas de manual de ZFS que son bastante buenas. Por lo que pude ver, son los mismos que los de Solaris, menos las especialidades de Solaris. Y adivina qué: en mis sistemas Linux, man zdbhace lo que esperarías :-) Así que está documentado de alguna manera, pero como no se menciona casi en ninguna parte, a nadie se le ocurre escribir man zdb. De la publicación del blog que enlazaste: "[...] pero es, de manera intencional, indocumentada. Solo otros dos que conozco han tenido el coraje de hablar públicamente [...]" :-)
Binarus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.