Con ZFS su Linux, come posso elencare le proprietà specifiche del dispositivo (vdev)?


9

Sto usando ZFS da un po 'di tempo senza problemi. Ne sono ancora entusiasta e mi fido molto. Ma di tanto in tanto mi vengono in mente nuove domande (in particolare dopo aver letto della documentazione, che a volte aumenta il numero di domande anziché ridurle).

In questo caso, ho aggiunto un nuovo vdev (un mirror) a un pool root e quindi ho letto il manuale di zpool ( man zpool). Alla fine della sezione zpool add, si afferma:

-o proprietà = valore

Imposta le proprietà del pool specificato. Vedere la sezione "Proprietà" per un elenco di proprietà valide che possono essere impostate. L'unica proprietà supportata al momento è Ashift. Si noti che alcune proprietà (tra cui Ashift) non sono ereditate da un precedente vdev. Sono specifici di vdev, non specifici del pool.

Ciò significa che la ashiftproprietà non è specifica del pool, ma specifica di vdev. Ma non sono stato in grado di trovare alcun comando o opzione che mi permettesse di visualizzare quella proprietà (o qualsiasi altra proprietà specifica di vdev) per vdev.

In altre parole, ad esempio, se ho un pool che contiene un vdev con ashift=12e un vdev con ashift=10, come posso verificarlo?

Quello che ho già provato:

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

Quindi né zpool listzpool getmostrare alcuna proprietà in un modo specifico vdev.

Qualche idea?

Risposte:


9

Per visualizzare il valore corrente di un'impostazione specifica come ashift, è necessario utilizzare il zdbcomando anziché il zpoolcomando.

L'esecuzione zdbautonoma senza argomenti ti consentirà di visualizzare qualsiasi poolstrovato sul sistema, i loro vdevse i dischi all'interno di 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 ashiftcon un certo contesto:

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

Ecco un vecchio post sul blogzdb che è ancora molto informativo sulle origini e l'intento e le informazioni che ne derivano zdb. Un rapido google rivela anche molti post che potrebbero essere più specificamente rilevanti per ZFS su Linux.


1
Ora che è ciò che io chiamo una risposta. zdbnon sembra essere menzionato in una delle pagine di Sun che di solito si presentano se si cerca su Google "ZFS <something>". Prima di passare a ZFS, ho dedicato molto tempo alla ricerca se fosse la cosa giusta per me, e come avrei potuto installarlo e configurarlo, ma non mi sono mai imbattuto zdb; inoltre, man zpoolné ne man zfsha alcun suggerimento, inclusa la sezione "VEDERE ANCHE". Molte grazie!
Binarus,

1
Questa è un'osservazione interessante. Ho lavorato in Sun quando è stato rilasciato ZFS e, successivamente, per altre società che hanno lavorato molto con ZFS, quindi mi zdbsembra naturale. Non mi ero reso conto che era magia nera a questo punto. :) Open-ZFS è un consorzio di IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / altri sviluppatori che stanno cercando di assicurarsi che l'intero mondo ZFS non Oracle sia strettamente allineato. Il loro Wiki è abbastanza buono e ha molte informazioni, inclusi alcuni riferimenti a zdb, vedi: open-zfs.org/w/…
Tim Kennedy,

1
ZFS su Linux ha pagine man ZFS che sono abbastanza buone. Per quanto ho potuto vedere, sono uguali a quelli di Solaris, meno le specialità di Solaris. E indovina un po ': sui miei sistemi Linux, man zdbfai quello che ti aspetteresti :-) Quindi è documentato in qualche modo, ma dal momento che è menzionato quasi da nessuna parte, nessuno viene all'idea di scrivere man zdb. Dal post sul blog che hai collegato: "[...] ma, in qualche modo intenzionalmente penso, non documentato. Solo altri due che conosco hanno avuto il coraggio di parlarne pubblicamente [...]" :-)
Binarus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.