KVM+ceph-RBD 快照创建问题

本文探讨了在KVM环境下使用Ceph-RBD作为存储时遇到的快照创建问题,并给出了两种解决思路。一种是通过ceph-fs挂载的方式支持快照创建;另一种则是直接对ceph存储池中的映像进行快照管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KVM+ceph-RBD 快照创建问题

环境描述
ceph集群,Luminous 12.2.5版本;
执行操作
1.划分存储池cloud,指定存储池rbd模式,创建映像bak-image;
2.KVM宿主机,创建虚拟机centos7,修改配置文件通过ceph官网文档介绍libvirt访问ceph-RBD;
操作参考:
http://docs.ceph.com/docs/master/rbd/libvirt/

KVM虚拟机可以直接访问到ceph-rbd存储块,从虚拟机本地对块存储读写正常。
错误描述
对虚拟机创建快照发生故障报错,报错信息如下:
报错1:
virsh # snapshot-create-as centos7-bakdata centos7-bakdata_20180524
error: unsupported configuration: internal snapshot for disk vdb unsupported for storage type raw

关闭虚拟机,制作快照,仍然报错;
报错2:
virsh # snapshot-create-as centos7-bakdata centos7-bakdata_20180524
error: internal error: internal inactive snapshots are not supported on 'network' disks using 'rbd' protocol
解决思路
针对报错1,查询之后解决思路如下:
1.在ceph集群上创建qcow2格式映像;

  1. 关闭KVM虚拟机后创建快照;
    方法一,参考官网qemu-img命令在ceph集群上创建qcow2格式镜像,最终KVM识别出来仍是RAW格式,无效;
    方法二,关闭KVM虚拟机创建快照,产生报错2;
    提示不支持网络盘使用rbd协议;

遗留问题
如何使KVM虚拟机访问ceph-RBD支持快照创建?

#######更新分割线 2018-06-12########
ceph集群运行文件存储服务,ceph-fs挂载到虚拟机,无论是fuse方式或者内核挂载,在KVM虚拟机中,均支持创建快照;
因为ceph-fs文件存储直接通过ceph-fuse或者内核方式挂载到KVM虚拟机,KVM会自动识别硬盘位QCOW2格式,故支持快照创建;

操作记录如下:
KVM+ceph-RBD 快照创建问题

KVM+ceph-RBD 快照创建问题

ceph-rbd方式挂载到KVM虚拟机创建快照,可以直接对存储池中对应映像创建快照,实现快照的创建、回滚、删除等管理操作;
1.在ceph存储集群上使用rbd snap create +参数命令创建指定存储池中,对应映像的快照;
2.快照回滚使用rbd --pool testpool snap rollback +参数命令;
3.快照删除使用rbd --pool testpool snap rm +参数命令;

转载于:https://blog.51cto.com/driver2ice/2121678

<think>好的,我现在需要解决用户关于RBD镜像无法删除和unmap失败的问题,特别是遇到“device or resource busy”和“image still has watchers”的错误。用户之前已经得到了一些解决方案,但可能遇到了新的情况,需要结合他们提供的站内引用和之前的回答来综合处理。 首先,用户提到的引用[1]显示在尝试取消映射时出现“Device or resource busy”错误,可能原因是设备仍在使用中。引用[2]提到内核不支持某些特性导致映射失败,需要禁用某些特性。不过用户现在的问题更多是删除和解除映射时的错误,需要综合之前的解决方案和新信息。 用户的问题主要围绕两个错误:1. 解除映射时设备忙;2. 删除时仍有watchers。之前给出的步骤包括强制解除映射、等待超时、强制删除和检查残留watchers。现在用户可能遇到了这些步骤后仍然无法解决问题的情况,或者需要更详细的处理步骤。 需要分析错误的原因:“Device or resource busy”通常意味着设备仍然被某个进程占用,比如挂载的文件系统或者被应用程序锁定。而“image still has watchers”说明仍有客户端在使用该镜像,可能是未正确卸载或客户端崩溃导致租约未释放。 结合用户提供的引用,可能需要检查镜像的特性是否导致内核无法正确处理,比如禁用某些特性如object-map、fast-diff、deep-flatten,这可能在映射时出现问题,但解除映射或删除时也可能相关。 接下来需要整合解决方案: 1. **强制解除映射**:使用`rbd unmap -o force`,但用户可能已经尝试过。如果仍然失败,可能需要检查进程占用情况,比如使用`fuser`或`lsof`找到占用设备的进程并终止。 2. **禁用镜像特性**:如引用[2]所述,禁用不支持的特性可能有助于解除映射,但用户的问题是删除和解除映射,可能需要先禁用这些特性才能成功操作。 3. **检查并终止占用进程**:查找哪些进程正在使用设备,强制终止这些进程后再解除映射。 4. **客户端租约超时**:等待30秒让租约过期,如果客户端崩溃,Ceph会自动释放。 5. **强制删除镜像**:在确定无残留后使用`rbd rm --force`,但需谨慎。 6. **验证和排查残留watchers**:使用`rbd status`确认是否仍有watchers,检查所有节点是否已卸载,或重启客户端节点。 另外,用户可能需要了解如何防止这类问题,比如在删除前确保所有客户端已正确卸载,或者调整特性设置以避免内核不兼容问题。 需要确保回答结构清晰,步骤详细,涵盖所有可能的解决方法,并引用提供的参考资料中的解决方案,比如禁用特性。同时生成相关问题,帮助用户深入理解。</think>针对RBD镜像无法删除及解除映射时出现的`device or resource busy`和`image still has watchers`错误,以下是综合解决方案: --- ### 一、强制解除映射与终止占用进程 1. **强制解除映射** 若常规`rbd unmap`失败,使用`-o force`强制操作: ```bash rbd unmap -o force <pool-name>/<image-name> # 示例:rbd unmap -o force rbd/foo ``` 此命令会忽略设备状态强制断开连接,适用于客户端崩溃或异常退出的场景[^1]。 2. **终止占用进程** 若仍报错`device busy`,需检查占用设备文件的进程: ```bash # 查找占用设备的进程(假设设备路径为/dev/rbd0) fuser -v /dev/rbd0 # 查看进程PID kill -9 <PID> # 强制终止进程 lsof /dev/rbd0 # 检查文件占用情况 ``` 终止相关进程后重试解除映射。 --- ### 二、禁用冲突的RBD镜像特性 若内核不支持镜像特性(如`object-map`、`fast-diff`),会导致映射/解除映射失败: ```bash # 禁用特定特性(需先解除映射) rbd feature disable <pool-name>/<image-name> object-map fast-diff deep-flatten ``` 禁用后重新尝试映射或删除操作[^2]。 --- ### 三、处理残留Watchers 1. **等待租约超时** Ceph客户端异常退出后,需等待30秒租约自动释放: ```bash sleep 30 && rbd rm <pool-name>/<image-name> ``` 2. **强制删除镜像** 确认无客户端访问后,使用`--force`参数绕过保护: ```bash rbd rm --force <pool-name>/<image-name> ``` 此操作会直接删除镜像,可能导致数据不一致,慎用[^3]。 --- ### 四、全面排查残留关联 1. **验证Watchers状态** ```bash rbd status <pool-name>/<image-name> # 检查watchers列表 ``` 2. **排查关联环境** - **KVM/OpenStack**:确认虚拟机未挂载该镜像。 - **Kubernetes**:检查PVC/PV是否已释放。 - **计算节点**:在所有节点执行`rbd showmapped`确认无残留映射。 3. **重启释放资源** 若无法定位占用节点,重启相关客户端主机以强制释放资源锁。 --- ### 五、内核兼容性检查 若问题由内核版本导致(如低版本内核不支持某些RBD特性): ```bash # 查看当前镜像特性 rbd info <pool-name>/<image-name> ``` 若输出包含`exclusive-lock`或`object-map`等特性,需禁用后操作(参考第二步)。 --- ### 六、数据恢复预防措施 若误删镜像且未做快照: 1. 立即停止集群写入操作。 2. 使用专业工具(如`rbd-diff`)尝试恢复块数据。 3. 联系Ceph社区支持获取高级恢复方案。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值