疑难杂症——解决 Cinder 僵尸卷问题
目录
问题描述
Cinder 的僵尸卷一般是因为操作不当导致分配的卷无法正常使用且无法正常分离或删除.
问题解决
解决僵尸卷问题的思路类似解决 Linux 系统中的僵尸进程, 需要手动的通过修改数据库和执行 CLI 来实现.
- 使用 CLI 定位僵尸卷的基本信息
最主要的是要获取其 id, 然后到数据库中查看其详细信息.
stack@fanguiju-dev:~$ openstack volume list
+--------------------------------------+--------------+--------+------+-----------------------------------------------------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+--------------+--------+------+-----------------------------------------------------------+
| 0d71a98a-0d2c-4b73-9886-a98005d9f969 | mysql-vol | in-use | 5 | Attached to e1fd229f-413e-49dd-a741-1bbffa7f249c on /mnt |
+--------------------------------------+--------------+--------+------+-----------------------------------------------------------+
可以看出这次的问题的原因是因为使用 openstackclient 挂载卷到 Instance 的时候指定了错误设配(/mnt), 应该指定挂载设备为(/dev/vdX). 而且使用 CLI 的 –force 也无法强制删除:
stack@fanguiju-dev:~$ openstack volume delete 0d71a98a-0d2c-4b73-9886-a98005d9f969 --force
Invalid volume: Volume must not be migrating, attached, belong to a consistency group or have snapshots. (HTTP 400) (Request-ID: req-8ec31dac-591a-4895-942d-3e4998c5407d)
- 手动的修改 cinder 数据库的表 volumes 的 status 字段为 deleted
在挂载完卷之后该记录的字段 status 的值为 in-use.
*************************** 2. row ***************************
created_at: 2017-01-18 14:59:38
updated_at: 2017-01-18 16:12:09
deleted_at: NULL
deleted: 0
id: 0d71a98a-0d2c-4b73-9886-a98005d9f969
ec2_id: NULL
user_id: b03df4585b7d41cca635ec341217404d
project_id: d0f2734c0cd3421eaab8e7d3da5b61d1
host: fanguiju-dev@lvmdriver-1#lvmdriver-1
size: 5
availability_zone: nova
status: in-use
attach_status: attached
scheduled_at: 2017-01-18 14:59:39
launched_at: 2017-01-18 14:59:40
terminated_at: NULL
display_name: mysql-vol
display_description: backup volume of mysql server.
provider_location: 200.21.18.30:3260,2 iqn.2010-10.org.openstack:volume-0d71a98a-0d2c-4b73-9886-a98005d9f969 1
provider_auth: CHAP xvATFN4UYj3ueGXZBW5P aTsMksaXX6KSsw8n
snapshot_id: NULL
volume_type_id: 2fac34b8-f25c-490c-b0bb-6989d4778432
source_volid: NULL
bootable: 0
provider_geometry: NULL
_name_id: NULL
encryption_key_id: NULL
migration_status: NULL
replication_status: disabled
replication_extended_status: NULL
replication_driver_data: NULL
consistencygroup_id: NULL
provider_id: NULL
multiattach: 0
previous_status: NULL
手动修改其 status 字段值:
mysql> update volumes set status='deleted' where id='0d71a98a-0d2c-4b73-9886-a98005d9f969';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
- 执行指令删除卷
同样的, 在删除之前先要查看现在逻辑卷的使用情况.
stack@fanguiju-dev:~$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
cinder-volumes-default 1 0 0 wz--n- 50.00g 50.00g
cinder-volumes-lvmdriver-1 1 1 0 wz--n- 50.00g 45.00g
ubuntu-dev-fanguiju-vg 1 2 0 wz--n- 99.76g 20.00m
stack@fanguiju-dev:~$ sudo lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
volume-0d71a98a-0d2c-4b73-9886-a98005d9f969 cinder-volumes-lvmdriver-1 -wi-a---- 5.00g
root ubuntu-dev-fanguiju-vg -wi-ao--- 95.74g
swap_1 ubuntu-dev-fanguiju-vg -wi-ao--- 4.00g
通过 volume 的 id(0d71a98a-0d2c-4b73-9886-a98005d9f969) 我们不能判断出现问题的 lv 就是 /dev/cinder-volumes-lvmdriver-1/volume-0d71a98a-0d2c-4b73-9886-a98005d9f969.
但是在删除该 lv 之前, 我们需要保证该 lv 没有被任何的进程占用.
stack@fanguiju-dev:~$ lsof /dev/cinder-volumes-lvmdriver-1/volume-0d71a98a-0d2c-4b73-9886-a98005d9f969
使用 lsof 指令可以获取使用该设备的进程列表, 如果被占用的话, 需要使用 kill 指令来将这些进程杀掉. 之后再将该 lv remove 掉.
stack@fanguiju-dev:~$ sudo lvremove /dev/cinder-volumes-lvmdriver-1/volume-0d71a98a-0d2c-4b73-9886-a98005d9f969
Do you really want to remove and DISCARD active logical volume volume-0d71a98a-0d2c-4b73-9886-a98005d9f969? [y/n]: y
Logical volume "volume-0d71a98a-0d2c-4b73-9886-a98005d9f969" successfully removed
因为该僵尸卷在数据库中记录的状态已经修改为了 deleted, 所以 dashboard 不会读取该记录, 而且又使用了 lvremove 来将该逻辑卷删除了, 所以也算彻底的解决了这个问题.
最后
最后记录一下, 如果使用 cinderclient 包提供的 cinderclient.v2.volumes:VolumeManager.attach 来挂载卷的话, 其参数 mountpoint 的含义是指定该卷挂载到 Instance 的那一个设备文件上, 而不是指定挂载目录路径.
疑难杂症——解决 Cinder 僵尸卷问题的更多相关文章
- openstack 后期维护(四)--- 删除僵尸卷
前言: 在长时间使用openstack之后,删除虚机后,经常会有因这样那样的问题,导致卷处于僵尸状态,无法删除! 状态一: 虚机已近删除,然而卷却挂在到了 None上无法删除 解决办法: 1.# ci ...
- openstack删除僵尸卷
问题描述: 最近在清理openstack环境,在删除cinder云硬盘时,一直发现有两个卷在删除中. 解决方法如下: 首先我们去cinder的数据库中找到这个卷,命令为: MariaDB [(none ...
- [疑难杂症]解决实际开发中各种问题bug
我有一个习惯就是遇到问题找到解决方案后收藏网页.后来遇到问题越来越多,收藏就多得有点离谱了.我反思了一下,其实有用的信息就那么点,那我干脆还是做成网页剪报好了. 关于VS的 Problem:未能正确加 ...
- cinder 挂载卷和 iSCSI原理
LVM名称介绍 PV:物理磁盘 VG:卷组,多个PV可以组成一个VG,一个VG可以划分成多个LV(逻辑卷). PP:物理区块,将一个VG逻辑的划分成连续的小块. LP:逻辑区块,若干个PP组成一个LP ...
- Tomcat疑难杂症解决记录
1. startup.bat闪退 cmd中运行startup.bat报错: The JRE_HOME environment variable is not defined correctly Thi ...
- cinder挂载卷的过程原理
LVM名称介绍 PV:物理磁盘 VG:卷组,多个PV可以组成一个VG,一个VG可以划分成多个LV(逻辑卷). PP:物理区块,将一个VG逻辑的划分成连续的小块. LP:逻辑区块,若干个PP组成一个LP ...
- Hadoop _ 疑难杂症 解决1 - WARN util.NativeCodeLoader: Unable to load native-hadoop library for your plat
最近博主在进行Hive测试 压缩解压缩的时候 遇到了这个问题, 该问题也常出现在日常 hdfs 指令中, 在启动服务 与 hdfs dfs 执行指令的时候 : 都会显示该提示,下面描述下该问题应该如何 ...
- APM(pixhawk)飞控疑难杂症解决方法汇总(持续更新)
本文转自下面博主 https://blog.csdn.net/junzixing/article/details/79310159 APM/Pixhawk常用链接汇总(持续更新) https://bl ...
- 转载 linux 僵尸进程,讲的很透彻
僵尸进程的产生和避免,以及wait,waitpid的使用 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitp ...
随机推荐
- Redis介绍及入门安装及使用
Redis介绍及入门安装及使用 什么是Redis Redis is an open source (BSD licensed), in-memory data structure store, use ...
- JAVA总结--java基本语法
static :静态的~ static :静态变量.静态方法: 被修饰的成员变量或者方法独立于该类的任何对象,只要该类被加载,被修饰的成员变量或者方法就存在并可以使用. 用public修饰的stat ...
- VSCode工具插件推荐
一:VSCode简介 VSCode( Visual Studio Code)是微软出的一款轻量级代码编辑器 ,重要的是它在Windows, OS X 和Linux操作系统的桌面上均可运行.Visual ...
- Python学习-第三天-面向对象编程基础
Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...
- HDU 5094 题解(状压BFS)
题面: Maze 题目中文大意: 这个故事发生在“星际迷航”的背景下. “星际争霸”的副队长史波克落入克林贡的诡计中,被关押在他们的母亲星球Qo’noS上. 企业的上尉詹姆斯·T·柯克(James T ...
- MS COCO 数据集学习笔记(Common Objects in COntext)
一.数据来源 COCO中图片资源均引用自Flickr图片网站 二.数据集创建目的 进行图像识别训练,主要针对以下三个方向: (1)object instances (2)object keypoint ...
- CentOS 6.5下源码安装LAMP(Linux+Apache+Mysql+Php)环境
---恢复内容开始--- 一.系统环境 系统平台:CentOS 6.5 (Final) Apache版本:httpd-2.2.31.tar.gz(最新版本2015-07-16) Mysql 版本:my ...
- Linux架构之Nginx 配置文件
第42章 nginx相关配置文件 1.Nginx主配置文件 路径 类型 作用 /etc/nginx/nginx.conf 配置文件 nginx主配置文件 /etc/nginx/conf.d/def ...
- 【学习】005 线程池原理分析&锁的深度化
线程池 什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池.在开发过程中,合理地使用线程池能够带来3个好处. 第一:降低资源消耗.通过重复 ...
- ps:消除锯齿和羽化
我们使用椭圆选框工具,分别关闭和打开消除锯齿(也称抗锯齿),创建两个差不多大的正圆形选区,然后填充黑色看看.怎样快速填充黑色还记得吗?先[X]然后[ALT DELETE].填充之后取消选择[CTRL ...