С ZFS в Linux, как мне перечислить определенные свойства устройства (vdev)?

9

Я использую ZFS с тех пор, как сейчас без проблем. Я все еще взволнован этим, и я очень доверяю этому. Но время от времени мне приходят в голову новые вопросы (в частности, после прочтения некоторой документации, которая иногда увеличивает количество вопросов, а не сокращает их).

В этом случае я добавил новый vdev (зеркало) в корневой пул и поэтому прочитал руководство по zpool ( man zpool). В конце раздела zpool addговорится:

-o свойство = значение

Устанавливает данные свойства пула. См. Раздел «Свойства» для получения списка допустимых свойств, которые можно установить. На данный момент поддерживается только свойство ashift. Обратите внимание, что некоторые свойства (в том числе ashift) не наследуются от предыдущего vdev. Они специфичны для vdev, а не для пула.

Это означает, что ashiftсвойство не относится к пулу, но относится к vdev. Но я не смог найти ни одной команды или опции, которые позволили бы мне просматривать это свойство (или любое другое свойство, специфичное для vdev) для vdev.

Другими словами, например, если у меня есть пул, содержащий один vdev с ashift=12одним vdev с ashift=10, как я могу это проверить?

Что я уже пробовал:

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

Так что ни zpool listни zpool getпоказать какое - либо имущество в VDEV определенным образом.

Любые идеи?

Binarus
источник

Ответы:

9

Чтобы просмотреть текущее значение определенного параметра, например ashift, вам нужно будет использовать zdbкоманду вместо zpoolкоманды.

Запуск zdbсамостоятельно без аргументов даст вам представление обо всех poolsнайденных в системе, а также их vdevsи дисках внутри 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

или просто для ashiftнекоторого контекста:

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

Вот старый пост в блоге,zdb который по-прежнему очень информативен о происхождении и намерениях, а также информации, которая исходит из zdb. Быстрый Google также показывает много сообщений , которые могут быть более конкретно отношение к ZFS на Linux.

Тим Кеннеди
источник
1
Теперь , что это то , что я называю ответ. zdbкажется, не упоминается на одной из страниц Sun, которые обычно появляются, если вы гуглите «ZFS <что-то>». Прежде чем перейти на ZFS, я потратил невероятное количество времени на изучение того, подходит ли мне это, и как я могу установить и настроить его, но я никогда не сталкивался zdb; кроме того, ни, man zpoolни man zfsнамека на это, включая раздел «СМОТРИ ТАКЖЕ». Большое спасибо!
Бинар
1
Это интересное наблюдение. Я работал в Sun, когда была выпущена ZFS, а затем и в других компаниях, которые много работали с ZFS, поэтому zdbмне это кажется естественным. Я не понимал, что это была черная магия в этот момент. :) Open-ZFS - это консорциум IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / и других разработчиков, которые пытаются убедиться, что весь мир не-Oracle ZFS остается тесно связанным. Их Wiki довольно хороши и содержат много информации, включая некоторые ссылки на zdb: См .: open-zfs.org/w/…
Тим Кеннеди,
1
ZFS на Linux имеет справочные страницы ZFS, которые довольно хороши. Насколько я мог видеть, они такие же, как у Solaris, за исключением специализаций Solaris. И угадайте, что: В моих системах Linux man zdbделает то , что вы ожидаете :-) Так что это как-то задокументировано, но, поскольку это почти нигде не упоминается, никто не приходит к идее печатать man zdb. Из поста в блоге, на который вы ссылались: «[...] но это, я думаю, намеренно, недокументировано. Только у двух других, кого я знаю, хватило смелости поговорить об этом публично [...]» :-)
Binarus