W przypadku ZFS w Linuksie, jak wyświetlić właściwości specyficzne dla urządzenia (vdev)?

10

Używam ZFS od jakiegoś czasu bez problemów. Nadal jestem tym podekscytowany i bardzo mu ufam. Ale od czasu do czasu przychodzą mi na myśl nowe pytania (w szczególności po przeczytaniu dokumentacji, która czasami zwiększa liczbę pytań zamiast je zmniejszać).

W tym przypadku dodałem nowe vdev (dublowanie) do puli root i dlatego przeczytałem instrukcję zpool ( man zpool). Na końcu tego rozdziału zpool addznajduje się:

-o właściwość = wartość

Ustawia podane właściwości puli. Zobacz sekcję „Właściwości”, aby uzyskać listę prawidłowych właściwości, które można ustawić. W tej chwili jedyną obsługiwaną nieruchomością jest Ashift. Zwróć uwagę, że niektóre właściwości (w tym ashift) nie są dziedziczone z poprzedniego vdev. Są one specyficzne dla vdev, a nie dla puli.

Oznacza to, że ashiftwłaściwość nie jest specyficzna dla puli, ale dla vdev. Ale nie byłem w stanie znaleźć żadnego polecenia ani opcji, które pozwoliłyby mi zobaczyć tę właściwość (lub inną właściwość specyficzną dla vdev) na vdev.

Innymi słowy, na przykład, jeśli mam pulę, która zawiera jeden vdev z ashift=12i jeden vdev z ashift=10, jak mogę to sprawdzić?

Co już próbowałem:

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

Więc ani zpool listnie zpool getpokazuj żadnej właściwości w sposób specyficzny dla vdev.

Jakieś pomysły?

Binarus
źródło

Odpowiedzi:

10

Aby wyświetlić bieżącą wartość określonego ustawienia, na przykład ashift, musisz użyć zdbpolecenia zamiast zpoolpolecenia.

Działając zdbsamodzielnie bez żadnych argumentów, zobaczysz wszystkie poolsznalezione w systemie oraz ich vdevsi dysków w systemie 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

lub, tylko ashiftz pewnym kontekstem:

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

Oto stary post na blogu nazdb ten temat, który nadal jest bardzo pouczający na temat pochodzenia i intencji oraz informacji, które z nich pochodzą zdb. Szybkie google ujawnia także wiele postów, które mogą być szczególnie istotne dla bardziej ZFS na Linuksie.

Tim Kennedy
źródło
1
Teraz to jest to, co ja nazywam odpowiedź. zdbnie pojawia się na żadnej ze stron firmy Sun, która zwykle pojawia się, jeśli używasz „ZFS <something>” w Google. Przed przejściem na ZFS poświęciłem niewiarygodnie dużo czasu na zbadanie, czy jest to dla mnie właściwe i jak mogę go zainstalować i skonfigurować, ale nigdy się nie natknąłem zdb; ponadto, ani man zpoolnie man zfsma na to żadnych wskazówek, w tym sekcja „ZOBACZ TAKŻE”. Wielkie dzięki!
Binarus
1
To interesujące spostrzeżenie. Pracowałem w Sun, kiedy wydano ZFS, a później dla innych firm, które dużo pracowały z ZFS, więc zdbwydaje mi się to trochę naturalne. W tym momencie nie zdawałem sobie sprawy, że to czarna magia. :) Open-ZFS to konsorcjum IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / innych programistów, którzy starają się upewnić, że cały świat ZFS inny niż Oracle pozostaje ściśle z sobą związany. Ich Wiki jest całkiem dobra i zawiera wiele informacji, w tym kilka odniesień do zdb: Patrz: open-zfs.org/w/…
Tim Kennedy
1
ZFS w Linuksie ma strony podręcznika ZFS, które są całkiem dobre. O ile mogłem zobaczyć, są one takie same jak Solaris, minus specjalności Solaris. I zgadnij, co: na moich systemach Linux man zdbrobi to, czego można się spodziewać :-) Więc jest to jakoś udokumentowane, ale skoro jest wspomniane prawie nigdzie, nikt nie przychodzi na pomysł pisania man zdb. Z wpisu na blogu, który podałeś: „[...] ale jest to, jak sądzę celowo, nieudokumentowane. Tylko dwie inne, które znam, miały odwagę o tym publicznie [...]” :-)
Binarus