环境描述
ceph版本:luminous 12.2.5
OSD三节点,monitor三节点,同时运行在三台物理服务器;
KVM宿主机运行多台虚拟机,其中一台挂载ceph-rbd块存储;

KVM调用ceph-rbd
1.ceph集群创建存储池,创建映像;
2.ceph集群设定映像大小,属性;
3.ceph集群创建针对此存储池访问账户,指定权限;
4.KVM宿主机上创建虚拟机;
5.编辑虚拟机配置文件,添加网络硬盘块;
6.虚拟机重定义后启动,格式化硬盘块,挂载到系统本地;
参考网址:
http://docs.ceph.com/docs/master/rbd/libvirt/

故障问题
KVM虚拟机挂载硬盘后,读写删除数据正常,但是数据删除后,ceph集群空间未释放;

已知且验证可行的解决方法
1.ceph-rbd在客户端配置时候,mount命令添加参数(-o discard),可以从客户端和ceph集群删除同步;

  1. 在客户端执行fstrim -v mountpoint 命令,触发删除请求;
    参考网址:
    https://blog.csdn.net/wytdahu/ ... 88681

本人测试,jewel版本,以ceph-fs文件存储,rbd命令挂载的虚拟机,fstrim命令可用,mount 命令添加discard参数同样有效;

但是对于新版本luminous 12.2.5的ceph集群,KVM虚拟机,直接编辑配置文件,ceph-rbd 块存储,libvirt 内核挂载,此操作无效,
报错:
ceph-rbd kvm 删除数据后集群空间不释放

问题原因
KVM宿主机缺少scsi驱动,需要安装libvirt-scsi驱动

解决办法
yum install libvirt-scsi

针对Linux(CentOS 7)虚拟机正常可用,需修改.xml配置文件,本人多次验证,此方案稳定可行;
虚拟机删除数据后,ceph存储池及时释放空间;

目前继续研究windows虚拟机磁盘挂载后数据删除空间释放问题;

############分割线############
另问题
1.后期虚拟机分配给用户后,管理员一般不会直在虚拟机上执行额外命令,所以 discard参数有一定局限性;
2.对于windows虚拟机以上操作并不适用;

针对ceph-rbd 客户端删除数据,ceph集群及时删除并释放存储空间问题;
是否有其他配置项目或者操作命令可以触发ceph集群释放存储池映像使用空间,后续继续探索!

########2018-09-25更新分割线############
问题1:
KVM虚拟机,Linux系统访问ceph-rbd块存储,触发删除操作,仅需要修改配置文件,指定硬盘接口,虚拟机即可调用fstrim命令;
硬盘挂载命令,指定discard参数即可实时更新释放存储池空间;
问题2:Windows虚拟机,需要额外安装虚拟硬盘接口驱动,即可初步解决硬盘空间释放问题;
(Windows占用ceph-rbd存储池空间,显示并未释放,实则可以复用已删除数据所占用空间)

ceph-rbd集成openstack-queens
下一篇文章解析openstack通过cinder服务调用ceph-rbd块存储;
无需额外配置discard/fstrim触发删除操作,nova节点配置unmap即可!

路过点一赞,技术升一线,加油↖(^ω^)↗!