首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我尝试创建快照时,为什么dmsetup失败?

当我尝试创建快照时,为什么dmsetup失败?
EN

Server Fault用户
提问于 2018-01-04 22:28:33
回答 2查看 1.4K关注 0票数 2

我想为使用dmsetup的现有块设备创建一个COW设备。该块装置是:

代码语言:javascript
复制
# blockdev --getsz /dev/loop0
3534848

我正在尝试使用256米的ramdisk作为备份存储:

代码语言:javascript
复制
# blockdev --getsz /dev/zram1
524288

我使用以下命令,它似乎与文献资料其他来源相匹配:

代码语言:javascript
复制
# dmsetup create mysnap --table '0 3534848 snapshot /dev/loop0 /dev/zram1 N 4'

但它失败了,因为:

代码语言:javascript
复制
device-mapper: reload ioctl on mysnap failed: Invalid argument
Command failed

内核提供了以下附加信息:

代码语言:javascript
复制
[ 8372.346442] device-mapper: table: 253:11: snapshot: Couldn't create exception store
[ 8372.346454] device-mapper: ioctl: error adding target to table

我希望有人能解释为什么上面的命令会导致错误。

EN

回答 2

Server Fault用户

发布于 2018-01-05 17:03:37

显然,它与chunksize值有关。使用4的chunksize (在我的问题中)会导致错误,但是如果我使用816等,它就会运行得很好:

代码语言:javascript
复制
dmsetup create mysnap --table '0 3534848 snapshot /dev/loop0 /dev/zram1 N 8'
票数 0
EN

Server Fault用户

发布于 2019-12-04 12:28:02

在我的情况下,dmesg给了我一个不同的错误:

代码语言:javascript
复制
[ 5473.934324] device-mapper: table: 253:0: len=1953521668 not aligned to h/w logical block size 4096 of sdb
[ 5473.934327] device-mapper: core: Cannot calculate initial queue limits
[ 5473.934331] device-mapper: ioctl: unable to set up device queue for new table.

我能够通过将长度降到4096的下一个倍数来修复这个问题(我可以这样做,因为在磁盘的末尾有足够的未使用扇区)。

这个故事的主要寓意可能是,在许多情况下,内核可能会给出一些有用的消息,而dmsetup并不一定会传递这些消息。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/890774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档