Я хочу прочитать блок в пуле хранения zpool с помощью команды dd. Поскольку zpool не создает файл устройства, как другие менеджеры томов, такие как vxvm. Я не знаю, какое блочное устройство использовать для чтения. Есть ли способ читать поблочные данные в zpool?
Как прочитать блок в пуле хранения (zpool) с помощью dd?
Ответы (4)
Вероятно, вы можете использовать команду 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.
И, пожалуйста, расскажите нам, что вы на самом деле искали. Алан был прав в том, что вы хотели делать резервные копии?
Вы можете считывать с базовых необработанных устройств в пуле, но, насколько я могу судить, не существует концепции единого непрерывного блочного устройства, представляющего весь пул. Пул в ZFS не является единым непрерывным блоком секторов, как в «классических» менеджерах томов. Внутренняя структура ZFS ближе к дереву, которое было бы несколько сложно представить в виде плоского массива блоков.
Запись в блоге Бена Роквуда "zdb: изучение ZFS в упор" может помочь лучше понять, что находится под капотом.
Понятия не имею, что это может быть полезно, но вы, безусловно, можете читать блоки в базовых устройствах, используемых пулом. Они отображаются командой zpool status
. Если вы действительно спрашиваете о zvols вместо zpools, они доступны в /dev/zvol/rdsk/pool-name/zvol-name. Если вы хотите просмотреть внутренние данные zpool, вы, вероятно, захотите использовать zdb.
Если вы хотите сделать резервную копию файловых систем ZFS, вам следует использовать следующие инструменты:
- 'zfs snapshot' для создания стабильного снимка файловой системы
- 'zfs send' для отправки копии снимка в другое место
- 'zfs receive', чтобы вернуться от моментального снимка к файловой системе.
'dd' почти наверняка не тот инструмент, который вам следует использовать. В вашем случае вы можете «отправить zfs» и перенаправить вывод в файл в другой файловой системе.
См. главу 7 руководства по администрированию ZFS для более подробной информации.