Как прочитать блок в пуле хранения (zpool), используя dd? - PullRequest
1 голос
/ 11 ноября 2010

Я хочу прочитать блок в пуле хранения zpool с помощью команды dd.Поскольку zpool не создает файл устройства, как другой менеджер томов, например vxvm.Я не знаю, какой блок устройства использовать для чтения.Есть ли способ прочитать данные блока за блоком в zpool?

Ответы [ 4 ]

1 голос
/ 22 октября 2013

Вы можете читать из базовых необработанных устройств в пуле, но, насколько я могу судить, нет концепции единого непрерывного блочного устройства, представляющего весь пул. Пул в ZFS не является единым смежным блоком секторов, как «классические» менеджеры томов. Внутренняя структура ZFS ближе к дереву, которое было бы несколько сложно представить в виде плоского массива блоков.

Сообщение в блоге Бена Роквуда "zdb: исследование ZFS в упор" может помочь лучше понять, что у вас под капотом.

1 голос
/ 06 января 2012

Вы, вероятно, можете использовать команду zdb. Вот PDF-файл об этом и вывод справки.

http://www.bruningsystems.com/osdevcon_draft3.pdf

# zdb --help

zdb: illegal option -- -
Usage: zdb [-CumdibcsDvhL] poolname [object...]
   zdb [-div] dataset [object...]
   zdb -m [-L] poolname [vdev [metaslab...]]
   zdb -R poolname vdev:offset:size[:flags]
   zdb -S poolname
   zdb -l [-u] device
   zdb -C

Dataset name must include at least one separator character '/' or '@'
If dataset name is specified, only that dataset is dumped
If object numbers are specified, only those objects are dumped

Options to control amount of output:
    -u uberblock
    -d dataset(s)
    -i intent logs
    -C config (or cachefile if alone)
    -h pool history
    -b block statistics
    -m metaslabs
    -c checksum all metadata (twice for all data) blocks
    -s report stats on zdb's I/O
    -D dedup statistics
    -S simulate dedup to measure effect
    -v verbose (applies to all others)
    -l dump label contents
    -L disable leak tracking (do not load spacemaps)
    -R read and display block from a device

Below options are intended for use with other options (except -l):
    -A ignore assertions (-A), enable panic recovery (-AA) or both (-AAA)
    -F attempt automatic rewind within safe range of transaction groups
    -U <cachefile_path> -- use alternate cachefile
    -X attempt extreme rewind (does not work with dataset)
    -e pool is exported/destroyed/has altroot/not in a cachefile
    -p <path> -- use one or more with -e to specify path to vdev dir
    -P print numbers parsable
    -t <txg> -- highest txg to use when searching for uberblocks
Specify an option more than once (e.g. -bb) to make only that option verbose
Default is to dump everything non-verbosely

К сожалению, я не знаю, как его использовать.

# zdb
tank:
    version: 28
    name: 'tank'
    ...
    vdev_tree:
    ...
    children[0]:
    ...
        children[0]:
    ...
            path: '/dev/label/bank1d1'
            phys_path: '/dev/label/bank1d1'

    ...

Итак, я взял индексы массива 0 0, чтобы получить свой первый диск (bank1d1), и выполнил эту команду. Это что-то сделал. Я не знаю, как прочитать вывод.

zdb -R бак 0: 0: 4e00: 200 | Строки

Веселись ... старайся ничего не разрушать. Вот ваше предупреждение со страницы руководства:

The  zdb  command is used by support engineers to diagnose failures and
gather statistics. Since the ZFS file system is  always  consistent  on
disk  and is self-repairing, zdb should only be run under the direction
by a support engineer.

И, пожалуйста, расскажите нам, что вы на самом деле искали. Был ли Алан прав, что ты хотел делать резервные копии?

0 голосов
/ 14 сентября 2011

Если вы хотите сделать резервную копию файловых систем ZFS, вы должны использовать следующие инструменты:

  • 'снимок zfs' для создания стабильного снимка файловой системы
  • 'zfs send' для отправки копии снимка в другое место
  • 'zfs receive' для возврата из моментального снимка в файловую систему.

'dd' почти наверняка не инструмент, который вы должны использовать. В вашем случае вы можете 'zfs send' и перенаправить вывод в файл в вашей другой файловой системе.

Подробнее см. в главе 7 руководства по администрированию ZFS .

0 голосов
/ 12 ноября 2010

Понятия не имею, что может быть полезно для этого, но вы, безусловно, можете читать блоки в базовых устройствах, используемых пулом. Они отображаются командой zpool status. Если вы действительно спрашиваете о zvols вместо zpools, они доступны в / dev / zvol / rdsk / pool-name / zvol-name. Если вы хотите просмотреть внутренние данные zpool, вы, вероятно, захотите использовать zdb.

...