Wie liste ich unter ZFS unter Linux gerätespezifische Eigenschaften auf?

9

Ich benutze ZFS seit einiger Zeit ohne Probleme. Ich bin immer noch aufgeregt und vertraue ihm sehr. Aber von Zeit zu Zeit kommen mir neue Fragen in den Sinn (insbesondere nachdem ich einige Dokumentationen gelesen habe, die manchmal die Anzahl der Fragen erhöhen, anstatt sie zu reduzieren).

In diesem Fall habe ich einem Root-Pool ein neues vdev (einen Spiegel) hinzugefügt und daher das zpool-Handbuch ( man zpool) gelesen . Am Ende des Abschnitts zpool addheißt es:

-o Eigenschaft = Wert

Legt die angegebenen Pooleigenschaften fest. Im Abschnitt "Eigenschaften" finden Sie eine Liste der gültigen Eigenschaften, die festgelegt werden können. Die einzige Eigenschaft, die im Moment unterstützt wird, ist Ashift. Beachten Sie, dass einige Eigenschaften (darunter Ashift) nicht von einem früheren vdev geerbt wurden. Sie sind vdev-spezifisch und nicht poolspezifisch.

Das bedeutet, dass die ashiftEigenschaft nicht poolspezifisch, sondern vdevspezifisch ist. Ich konnte jedoch keinen Befehl oder keine Option finden, mit der ich diese Eigenschaft (oder eine andere vdev-spezifische Eigenschaft) pro vdev anzeigen könnte.

Mit anderen Worten, wenn ich beispielsweise einen Pool habe, der ein vdev mit ashift=12und ein vdev mit enthält ashift=10, wie kann ich dies überprüfen?

Was ich schon versucht habe:

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

Also weder zpool listnoch zpool getvdev-spezifisch eine Eigenschaft zeigen.

Irgendwelche Ideen?

Binarus
quelle

Antworten:

9

Um den aktuellen Wert einer bestimmten Einstellung wie anzuzeigen ashift, müssen Sie den zdbBefehl anstelle des zpoolBefehls verwenden.

Wenn Sie zdballeine ohne Argumente ausgeführt werden, erhalten Sie einen Überblick über alle poolsauf dem System gefundenen Elemente und deren vdevsFestplatten innerhalb des Systems 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

oder, nur ashiftfür einen bestimmten Kontext:

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

Hier ist ein alter Blog-Beitrag darüberzdb , der immer noch sehr informativ über die Ursprünge und Absichten und die Informationen ist, die daraus hervorgehen zdb. Ein kurzer Blick auf Google zeigt auch viele Beiträge, die für ZFS unter Linux möglicherweise spezifischer sind.

Tim Kennedy
quelle
1
Nun , dass ist das, was ich eine Antwort nenne. zdbscheint nicht auf einer der Seiten von Sun erwähnt zu werden, die normalerweise auftauchen, wenn Sie nach "ZFS <something>" googeln. Bevor ich zu ZFS gewechselt bin, habe ich unglaublich viel Zeit darauf verwendet, zu untersuchen, ob es das Richtige für mich ist und wie ich es installieren und konfigurieren kann, aber ich bin nie darauf gestoßen zdb. außerdem weder man zpoolnoch man zfseinen Hinweis darauf, einschließlich des Abschnitts "SIEHE AUCH". Vielen Dank!
Binarus
1
Das ist eine interessante Beobachtung. Ich habe bei Sun gearbeitet, als ZFS veröffentlicht wurde, und später für andere Unternehmen, die viel mit ZFS gearbeitet haben. Das zdbscheint mir natürlich. Ich wusste zu diesem Zeitpunkt nicht, dass es schwarze Magie war. :) Open-ZFS ist ein Konsortium aus IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / anderen Entwicklern, die versuchen, sicherzustellen, dass die gesamte Nicht-Oracle-ZFS-Welt eng miteinander verbunden bleibt. Ihr Wiki ist ziemlich gut und hat viele Informationen, einschließlich einiger Verweise auf zdb, siehe: open-zfs.org/w/…
Tim Kennedy
1
ZFS unter Linux verfügt über ZFS-Manpages, die recht gut sind. Soweit ich sehen konnte, sind sie die gleichen wie die Solaris, abzüglich der Solaris-Spezialitäten. Und raten Sie mal: Auf meinen Linux-Systemen man zdbmacht man das , was man erwarten würde :-) Es ist also irgendwie dokumentiert, aber da es fast nirgendwo erwähnt wird, kommt niemand auf die Idee zu tippen man zdb. Aus dem Blog-Beitrag, den Sie verlinkt haben: "[...] aber es ist absichtlich etwas undokumentiert. Nur zwei andere, die ich kenne, hatten den Mut, öffentlich darüber zu sprechen [...]" :-)
Binarus