Archive for 八月 2011

非常规change master

flashcache_load resource busy问题

使用fusion io和flashcache的时候遇到过两次
device-mapper: reload ioctl failed: Device or resource busy
Command failed
的异常。

第一次犯的错误是因为
flashcache_load mysql_data_cache /dev/fioa /dev/sdc1
前/dev/sdc1已经mount起来了。flashcache_load无法在已经mount的文件系统上再做cache。
解决的办法:
umount /dev/sdc1
然后按照正确的方法load起来。
正确的做法是对/dev/sdc分区,建立xfs(或者其他ext4,ext3)文件系统,然后利用flashcache_load将ssd设备和文件系统映射起来。
这样就会出现/dev/mapper/mysql_data_cache,将他用xfs(ext3,ext4)的方式mount起来。

第二次犯的错误是:
flashcache还在用,/dev/mapper/mysql_data_cache已经mount好了,把fusion-io的内核模块给卸载掉了。
这个时候flashcache_load会报错,/dev/mapper/mysql_data_cache也没有了,flashcache_create显示:
#flashcache_create mysql_data_cache /dev/fioa /dev/sdc1
cachedev mysql_data_cache, ssd_devname /dev/fioa, disk_devname /dev/sdc1
block_size 8, cache_size 0
flashcache_create: Valid Flashcache already exists on /dev/fioa
flashcache_create: Use flashcache_destroy first and then create again /dev/fioa
dmsetup显示:
#dmsetup table
mysql_data_cache:
解决方案:
dmsetup remove mysql_data_cache
flashcache_load mysql_data_cache /dev/fioa /dev/sdc1
mount -o defaults,rw,noatime,nodiratime,noikeep,nobarrier,allocsize=512M,attr2,largeio,inode64,swalloc /dev/mapper/mysql_data_cache /data2
使用最基本的dmsetup remove来清理mysql_data_cache,然后就可以flashcache_load了。
正常情况下,你最好先flashcache_destroy,然后再来操作fusion io,跟你建立的顺序相反

may your success