Dengan ZFS di Linux, bagaimana cara membuat daftar properti khusus perangkat (vdev)?

9

Saya menggunakan ZFS sejak beberapa saat sekarang tanpa masalah. Saya masih bersemangat tentang hal itu, dan saya sangat mempercayainya. Tetapi dari waktu ke waktu, pertanyaan-pertanyaan baru muncul di benak saya (khususnya setelah membaca beberapa dokumentasi, yang terkadang menambah jumlah pertanyaan alih-alih menguranginya).

Dalam hal ini, saya telah menambahkan vdev baru (mirror) ke root pool, dan karenanya telah membaca manual zpool ( man zpool). Di akhir bagian zpool add, ini menyatakan:

-o properti = nilai

Set properti pool yang diberikan. Lihat bagian "Properti" untuk daftar properti sah yang dapat diatur. Satu-satunya properti yang didukung saat ini adalah ashift. Perhatikan bahwa beberapa properti (di antaranya ashift) tidak diwarisi dari vdev sebelumnya. Mereka spesifik vdev, bukan khusus kolam.

Itu berarti bahwa ashiftproperti tidak spesifik kolam, tetapi khusus vdev. Tetapi saya belum dapat menemukan perintah atau opsi yang memungkinkan saya untuk melihat properti itu (atau properti spesifik vdev lainnya) per vdev.

Dengan kata lain, misalnya, jika saya memiliki kumpulan yang berisi satu vdev dengan ashift=12dan satu vdev ashift=10, bagaimana saya bisa memverifikasi ini?

Apa yang sudah saya coba:

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

Jadi tidak zpool listjuga tidak zpool getmenunjukkan properti apa pun dengan cara khusus vdev.

Ada ide?

Binarus
sumber

Jawaban:

9

Untuk melihat nilai saat ini dari pengaturan tertentu seperti ashift, Anda harus menggunakan zdbperintah, bukan zpoolperintah.

Berjalan zdbsendiri tanpa argumen akan memberi Anda pandangan tentang apa pun yang poolsditemukan pada sistem vdevs, dan disk mereka , serta disk di dalamnya 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

atau, hanya ashiftdengan beberapa konteks:

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

Berikut ini adalah posting blog lama tentangzdb yang masih sangat informatif tentang asal dan maksud, dan informasi yang keluar zdb. Sebuah google cepat juga mengungkapkan banyak posting yang mungkin lebih khusus relevan dengan ZFS di Linux.

Tim Kennedy
sumber
1
Nah, itu yang saya sebut jawaban. zdbtampaknya tidak disebutkan di salah satu halaman Sun yang biasanya muncul jika Anda mencari "ZFS <sesuatu"> di Google. Sebelum beralih ke ZFS, saya telah menghabiskan banyak waktu untuk meneliti apakah itu hal yang tepat untuk saya, dan bagaimana saya bisa menginstal dan mengkonfigurasinya, tetapi saya tidak pernah menemukan zdb; lebih jauh, tidak ada man zpoolatau tidak man zfsada petunjuk untuk itu, termasuk bagian "LIHAT JUGA". Terima kasih banyak!
Binarus
1
Itu pengamatan yang menarik. Saya bekerja di Sun ketika ZFS dirilis, dan kemudian untuk perusahaan lain yang melakukan banyak pekerjaan dengan ZFS, jadi zdbsepertinya agak alami bagi saya. Saya tidak menyadari itu adalah ilmu hitam pada saat ini. :) Open-ZFS adalah konsorsium IllumOS / OmniOS / OpenSolaris / FreeBSD / Linux / pengembang lain yang berusaha memastikan seluruh dunia non-Oracle ZFS tetap selaras. Wiki mereka cukup bagus dan memiliki banyak informasi, termasuk beberapa referensi untuk zdb, Lihat: open-zfs.org/w/…
Tim Kennedy
1
ZFS di Linux memiliki halaman manual ZFS yang cukup bagus. Sejauh yang saya bisa lihat, mereka sama dengan yang Solaris, minus spesialisasi Solaris. Dan coba tebak: Di sistem Linux saya, man zdblakukan apa yang Anda harapkan :-) Jadi itu didokumentasikan entah bagaimana, tetapi karena disebutkan hampir di mana-mana, tidak ada yang datang ke ide untuk mengetik man zdb. Dari posting blog yang Anda tautkan: "[...] tetapi, agaknya saya sengaja berpikir, tidak berdokumen. Hanya dua orang lain yang saya tahu memiliki keberanian untuk membicarakannya di depan umum [...]" :-)
Binarus