前提
在公司的BCLinux 7.2 (CentOS 7.2)安装单节点Ceph。
部署完成,ceph -s查看系统处于active+clean状态
阶段1
ceph osd pool create rbd 64 64
rbd create foo --size 1G
rbd map foo --name client.admin
报错一
在执行第三部时,系统报错如下:
通过/var/log/messages查看日志,信息如下:
解决
网上查阅一大堆资料,比较有用的是,内核版本问题。
查看内核版本uname -r ,发现版本是3.10.*,于是尝试升级内核。
升级步骤如下:
1.导入key
rpm --importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2.安装elrepo的yum源
rpm -Uvhhttp://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
3. 安装内核
yum --enablerepo=elrepo-kernelinstallkernel-ml-devel kernel-ml -y
4.查看设置默认启动顺序
awk-F\' '$1=="menuentry "{print $2}' /etc/grub2.cfg,显示结果应该是升级后的最新版本的内核在上面,执行以下命令:
grub2-set-default 0
5.重启
reboot
阶段2
报错二
恢复集群后,执行阶段1中的创建块步骤,依然报错:
学习后发现,RBD块Ceph支持两种格式:
format 1:新建RBD镜像时使用最初的格式,此格式兼容所有版本的librbd和内核模块,但是不支持较新的功能,像克隆。
format 2:使用第二版rbd格式,librbd和3.11版以上内核模块才支持(除非是拆分的模块)。此格式增加了克隆支持,使得扩展更容易,还允许以后增加新功能。
解决
rbd create rbd/test1 --size 10G --image-format 2 --image-feature layering
rbd ls
rbd map rbd/test1
终于map成功了。
总结
1.J版本Ceph,使用RBD时,需要关注下内核版本。
2.如果内核版本是比较高的,则注意下新建镜像的format格式。