我正在尝试使用虚拟机创建一个 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 文章文档中的说明 page
我在内核中启用了 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 成功加载?任何帮助将不胜感激。
最佳答案
多字节或宽字符错误消息让我很困扰,我没有任何直接的建议来解决这个问题。
我假设/dev/sdd1 和/dev/sdb1 是您的元数据和数据存储 block 设备?它们包含任何数据吗?
您是否尝试过将元数据卷清零 (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 内核没有问题。
如果一切都失败了,我有一个 working solution for my setup on my blog有关更多详细信息,您可能需要查看分步教程。
关于linux - 使用 dmsetup Kernel 3.9.6 创建 dm-cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17369767/