cinder 卷none连接处理办法

本文介绍了解决Cinder卷删除失败的方法,包括修改数据库状态和手动删除RBD映像,确保资源释放。

作者:吴业亮

cinder的卷在删除的时候经常因为消息队列和数据库问题导致删除失败,使卷的状态为none。在dashboard上刷新会跳出找不到卷信息。解决办法如下:

图片1

导出数据库,以防误操作

mysqldump -uroot -p -B --all-databases | gzip > all.sql.gz

修改数据表

MariaDB [cinder]>  use cinder ;
MariaDB [cinder]>  update  volumes set status ="available"  where id="8dca9949-7d9d-4028-bc67-f9c041ab1fd8"  ;
MariaDB [cinder]>  update  volumes set attach_status ="detached"  where id="8dca9949-7d9d-4028-bc67-f9c041ab1fd8"  ;

查看卷

# cinder list --all
+--------------------------------------+----------------------------------+-----------+-------+------+-------------+----------+-------------+
| ID                                   | Tenant ID                        | Status    | Name  | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+----------------------------------+-----------+-------+------+-------------+----------+-------------+
| 8dca9949-7d9d-4028-bc67-f9c041ab1fd8 | d1d84e4b43c140f5a9f0411645185795 | available | admin | 1    | ceph        | false    |             |
+--------------------------------------+----------------------------------+-----------+-------+------+-------------+----------+-------------+

查看rbd

[root@node1 ~]# rbd  ls  -p volumes
8dca9949-7d9d-4028-bc67-f9c041ab1fd8

删除对应的rbd

# rbd rm 8dca9949-7d9d-4028-bc67-f9c041ab1fd8 -p volumes
### 可能的原因及解决方案 在 OpenStack 中,Cinder 创建失败可能由多种原因引起。以下是常见的原因及对应的解决方案: #### 1. 数据库连接问题 如果 Cinder 服务无法正确连接到数据库,可能会导致创建失败。请检查 `/etc/cinder/cinder.conf` 文件中的 `[database]` 部分配置是否正确[^1]。 ```ini [database] connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder ``` 确保数据库密码 `CINDER_DBPASS` 正确,并且数据库服务正在运行。可以通过以下命令测试数据库连接: ```bash mysql -h controller -u cinder -pCINDER_DBPASS -e "use cinder;" ``` #### 2. 后端存储配置错误 Cinder 的后端存储配置决定了的创建位置。如果 `[lvm]` 部分配置不正确,可能导致创建失败。请检查以下配置项是否正确: ```ini [lvm] volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver volume_group = cinder-volumes iscsi_protocol = iscsi iscsi_helper = lioadm ``` 确保 `cinder-volumes` 组已正确创建: ```bash vgcreate cinder-volumes /dev/sdX ``` 其中 `/dev/sdX` 是用于存储的物理磁盘或分区。 #### 3. Keystone 认证问题 Cinder 服务需要通过 Keystone 进行认证。如果认证失败,创建也会失败。请检查 `[DEFAULT]` 部分的 `auth_strategy` 和 `transport_url` 配置是否正确[^1]: ```ini [DEFAULT] auth_strategy = keystone transport_url = rabbit://openstack:RABBIT_PASS@controller ``` 确保 RabbitMQ 服务正常运行,并且密码 `RABBIT_PASS` 正确。 #### 4. Glance 服务不可用 Cinder 在创建时可能需要从 Glance 下载镜像。如果 Glance 服务不可用,会导致创建失败。请检查以下配置是否正确[^1]: ```ini [DEFAULT] glance_api_servers = http://controller:9292 ``` 确保 Glance 服务正在运行,并且网络连通性正常。 #### 5. 锁机制问题 Cinder 使用锁机制来避免并发操作冲突。如果锁路径配置不正确,可能会导致创建失败。请检查 `[oslo_concurrency]` 部分的 `lock_path` 配置是否正确[^1]: ```ini [oslo_concurrency] lock_path = /var/lib/cinder/tmp ``` 确保目录 `/var/lib/cinder/tmp` 存在并且具有正确的权限: ```bash mkdir -p /var/lib/cinder/tmp chown -R cinder:cinder /var/lib/cinder/tmp ``` #### 6. 日志分析 如果以上检查均未发现问题,可以通过查看 Cinder 日志进一步分析原因。日志文件通常位于 `/var/log/cinder/` 目录下。重点检查以下文件: - `/var/log/cinder/cinder-api.log` - `/var/log/cinder/cinder-scheduler.log` - `/var/log/cinder/cinder-volume.log` #### 7. Packstack 部署问题 如果使用 Packstack 部署 OpenStack,可能由于源配置或部署脚本问题导致创建失败。请确保安装了正确的 repo 源[^3]: ```bash yum install -y centos-release-openstack-queens yum update -y yum install -y openstack-packstack packstack --allinone ``` --- ### 示例代码:检查组状态 以下是一个检查组状态的示例代码: ```bash #!/bin/bash # 检查组是否存在 if vgdisplay cinder-volumes > /dev/null 2>&1; then echo "cinder-volumes 已存在" else echo "cinder-volumes 不存在,请创建" exit 1 fi # 检查组是否有足够的空间 VG_SIZE=$(vgdisplay cinder-volumes --noheadings -o vg_size --units g | tr -d ' ') VG_FREE=$(vgdisplay cinder-volumes --noheadings -o vg_free --units g | tr -d ' ') if (( $(echo "$VG_FREE < 1" | bc -l) )); then echo "cinder-volumes 空间不足,请扩展" exit 1 fi echo "cinder-volumes 状态正常" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值