mysql 关闭 xfs 空间 释放_Ceph-RBD kvm openstack 虚拟机删除数据后磁盘空间不释放

本文介绍了在KVM虚拟机和OpenStack环境中,使用Ceph RBD块存储遇到的数据删除后空间不释放的问题。解决方案包括在KVM中通过安装libvirt-scsi驱动和修改虚拟机配置文件来启用discard参数,以及在OpenStack中通过修改镜像属性为scsi接口以支持fstrim命令触发空间释放。对于Windows虚拟机,需要安装virtio-win驱动来实现空间释放。
摘要由CSDN通过智能技术生成

环境描述

ceph版本:luminous 12.2.5

OSD三节点,monitor三节点,同时运行在三台物理服务器;

KVM宿主机运行多台虚拟机,其中一台挂载ceph-rbd块存储;

##操作环境同样适用Nautilus 版本集群

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集群删除同步;

在客户端执行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 内核挂载,此操作无效,

报错:

21df093093b7680b5bd2f8c753003bc1.png

问题原因

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,对应虚拟机安装virtio-scsi驱动即可!

########2020-04-16更新分割线############

针对前期问题解决办法

1.KVM虚拟机,访问CephRBD存储集群,分两种情况:

1)对于CentOS 7 x64系统,修改虚拟机配置文件,修改配置项scsi或者virtio-scsi磁盘接口,系统挂载对应数据盘添加discard挂载参数,即可实现磁盘空间自动释放功能,配置示例如下:

2)对于Windows 2012以及以上版本系统,修改虚拟机配置文件,修改配置项scsi或者virtio-scsi磁盘接口,虚拟机系统安装最新版本virtio-win驱动程序,其挂载的块存储磁盘空间虚拟机删除释放后,存储集群对应镜像空间可自动释放;测试过程中发现,Windows 2008系统不支持磁盘释放功能;

2.Openstack虚拟机,访问CephRBD存储集群,情况类似:

前期openstack虚拟机系统镜像,默认磁盘接口为virtio,相对scsi磁盘接口来说,性能稍有提升,但是对后端存储磁盘空间释放问题造成隐患,客户端对数据盘删除数据后,系统显示磁盘空间已释放,但是在存储集群查看镜像空间仍是客户端写入最大适用量,无法主动释放。虚拟机客户端磁盘接口virtio问题,不支持手动执行fstrim命令被动释放磁盘空间;

对openstack系统镜像添加磁盘接口属性参数,修改磁盘接口默认为scsi,支持fstrim触发磁盘空间释放操作;

操作命令:

glance image-update CentOS7.4 --property hw_scsi_model=virtio-scsi --property hw_disk_bus=scsi

1)对于CentOS 7 x64系统,修改虚拟机镜像属性,即修改磁盘接口为virtio-scsi,系统挂载对应数据盘添加discard挂载参数,即可实现磁盘空间自动释放功能,配置示例如下:

glance image-update CentOS7.4 --property hw_scsi_model=virtio-scsi --property hw_disk_bus=scsi

mount -t xfs -o discard /dev/sdb /data

或调用虚拟机系统命令,手动执行磁盘空间释放:

fstrim -v /data

2)对于Windows 2012以及以上版本系统,即修改磁盘接口为virtio-scsi,重新定制虚拟机系统镜像,安装最新版本virtio-win驱动程序,生成openstack时添加镜像属性。以此镜像基础创建虚拟机,其挂载的块存储磁盘空间虚拟机删除释放后,存储集群对应镜像空间可自动释放;测试过程中发现,Windows 2008系统不支持磁盘释放功能;

操作命令:

glance image-update Windows 2012 --property hw_scsi_model=virtio-scsi --property hw_disk_bus=scsi

virtio-win下载地址:

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.171-1/virtio-win.iso

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值