1

我正在尝试使用虚拟机创建 dm-cache 设备。我在 /dev/sdb,sdc,sdd 中有多个分别标记为 Cache_disk、Device_to_Cache 和 meta_data 的磁盘,尝试创建缓存时,我运行以下命令:

dmsetup create my_cache --table '0 16775168 cache /dev/sdd1 /dev/sdb1 /dev/sdc1 512 1 writeback default 0'

按照 dm-cache 文章文档页面中的说明

我在内核中启用了 dm-cache,但遇到了这个错误:

device-mapper: reload ioctl failed: Invalid or incomplete multibyte or wide character
command failed

查看 dmesg 设备映射器时:缓存元数据未通过 sb_check

root@msali014-VirtualBox:/home/msali014# dmesg
[ 5432.738603] device-mapper: cache-policy-mq: version 1.0.0 loaded
[ 5432.794852] device-mapper: cache metadata: sb_check failed: magic 0: wanted 1623043
[ 5432.794862] device-mapper: block manager: superblock validator check failed for block 0
[ 5432.794867] device-mapper: cache metadata: couldn't read lock superblock
[ 5432.797952] device-mapper: table: 252:0: cache: Error creating metadata object

/var/log/syslog 类似:

Jun 28 11:17:01 msali014-VirtualBox CRON[2935]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jun 28 11:33:08 msali014-VirtualBox kernel: [ 5432.738603] device-mapper: cache-policy-mq: version 1.0.0 loaded
Jun 28 11:33:08 msali014-VirtualBox kernel: [ 5432.794852] device-mapper: cache metadata: sb_check failed: magic 0: wanted 1623043
Jun 28 11:33:08 msali014-VirtualBox kernel: [ 5432.794862] device-mapper: block manager: superblock validator check failed for block 0
Jun 28 11:33:08 msali014-VirtualBox kernel: [ 5432.794867] device-mapper: cache metadata: couldn't read lock superblock
Jun 28 11:33:08 msali014-VirtualBox kernel: [ 5432.797952] device-mapper: table: 252:0: cache: Error creating metadata object
Jun 28 11:33:08 msali014-VirtualBox kernel: [ 5432.797960] device-mapper: ioctl: error adding target to table
Jun 28 11:33:08 msali014-VirtualBox udevd[619]: inotify_add_watch(6, /dev/dm-0, 10) failed: No such file or directory
Jun 28 11:33:08 msali014-VirtualBox udevd[619]: inotify_add_watch(6, /dev/dm-0, 10) failed: No such file or directory

[ 5432.797960] device-mapper: ioctl: error adding target to table

如何更改 sb->magic 的值以使 dm-cache 成功加载?任何帮助将不胜感激。

4

2 回答 2

0

多字节或宽字符错误消息让我感到不安,我没有任何直接的建议来解决这个问题。

我假设 /dev/sdd1 和 /dev/sdb1 是您的元数据和数据存储块设备?它们是否包含任何数据?

您是否尝试过将元数据卷清零(dd if=/dev/zero of=/dev/sdd1)?不久前我在设置 dm-cache 时遇到了问题。

简而言之,我执行以下操作(在 Ubuntu 13.04 + Linux 3.10 版本上):

dmsetup create ssd-metadata --table '0 19370 linear /dev/disk/by-id/scsi-SATA_OCZ-AGILITY2_f2d200034-part6 0'
dmsetup create ssd-blocks --table '0 189008982 linear /dev/disk/by-id/scsi-SATA_OCZ-AGILITY2_f2d200034-part6 19370'
dmsetup create home-cached --table '0 1048576000 cache /dev/mapper/ssd-metadata /dev/mapper/ssd-blocks /dev/vg0/spindle 512 1 writeback default 0'

附带说明一下,我在 Ubuntu 12.11 和 13.04 上运行 3.9.6 和一些更早的 3.9 内核没有问题。

如果一切都失败了,我在我的博客上为我的设置提供了一个可行的解决方案,其中包含更多详细信息,您可能需要查看分步教程。

于 2013-07-01T16:36:24.180 回答
0

我有同样的问题:

[  968.960618] device-mapper: cache metadata: sb_check failed: blocknr 985712174465152: wanted 0

将 0 复制到我的元数据设备解决了这个问题。

dd bs=64k if=/dev/zero of=/dev/md1

谢谢@Kyle。

于 2015-04-27T04:28:43.537 回答