我想使用dd命令读取zpool存储池中的块。由于zpool不像其他卷管理器那样创建设备文件,如vxvm。我不知道哪个块设备用于阅读。有没有办法在zpool中读取块数据?
答案 0 :(得分:1)
您可以使用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 tank 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.
请告诉我们您的实际需求。艾伦是对的,你想做备份吗?
答案 1 :(得分:1)
您可以从池中的基础原始设备读取,但据我所知,没有单个连续块设备表示整个池的概念。 ZFS中的池不是“经典”卷管理器的单个连续块区域。 ZFS内部结构更接近树,这对于表示平坦的块阵列来说有点挑战。
Ben Rockwood's blog post "zdb: Examining ZFS At Point-Blank Range"可能有助于更好地了解幕后的内容。
答案 2 :(得分:0)
不知道这样做有什么用处,但你当然可以读取池使用的底层设备中的块。它们由zpool status
命令显示。如果你真的在询问zvols而不是zpools,可以在/ dev / zvol / rdsk / pool-name / zvol-name下访问它们。如果要查看内部zpool数据,可能需要使用zdb。
答案 3 :(得分:0)
如果要备份ZFS文件系统,则应使用以下工具:
'dd'几乎肯定是不你应该使用的工具。在您的情况下,您可以“zfs发送”并将输出重定向到其他文件系统上的文件中。
有关详细信息,请参阅chapter 7 of the ZFS administration guide。