疑难杂症——解决 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 的那一个设备文件上, 而不是指定挂载目录路径.

时间: 2024-11-10 00:45:22

疑难杂症——解决 Cinder 僵尸卷问题的相关文章

如何解决无法停止通用卷设备的问题

  有时插上移动设置拷贝完东西时,打算退出时,电脑会出现提示:无法停止"通用卷设备",这是什么问题呢?又该如何解决这个问题呢?也许有些人会选择强行拔下U盘,但这是很糟糕的做法.这样做的话,很容易损坏计算机U口或者U盘及U盘里的资料.那么,是否有更好的方法可以解决这个难题呢?有的,下面系统之家小编就给大家介绍四大妙方解决这个问题. 1.清空剪切板 通常我们在把U盘的文件或者数据取出来的时候,都是用的"复制""粘贴"方式,如果复制的是U盘上的文件,这

这个问题不解决,我得卷铺盖走人了

问题描述 如何在window2003,visual2005实现传真功能,那个faxcontrol是否有用,哪位有相干资料,点化鄙人,万谢万谢 解决方案 解决方案二:...这东西做了有什么用?有现成的软件啊解决方案三:老板要啊,没办法啊.老兄,出出主意解决方案四:协议,如果你明白协议,自己不用控件都可以做,而且做起来也不是很麻烦至于faxcontrol你得找到他的接口说明文档,没有说明文档,鬼知道他如何用解决方案五:faxcontrol有用解决方案六:一定坚持住啊,曾经做过一个条码打印的程序,看了

植物大战僵尸2 狂野西部第8关全三星攻略

植物大战僵尸2 狂野西部第8关一星攻略植物大战僵尸2中的第8关,毕竟是主路线的倒数第二关,所以会有点难度.特别是二星和三星.不过好在这关中没有讨厌的骑牛的僵尸,所以还是比较好对付的.[一星达成目标]1.produce at least 3500sun至少生产3500个阳光2.don'/t lose any lawn mowers不要损失任何草坪收割机植物大战僵尸2 狂野西部第8关一星攻略在西部第8关的一星中,任务要求是需要收集3500个太阳.所以植物方面:孪生太阳花:生产双倍阳光必备.坚果:抵挡

Openstack组件实现原理 — Keystone认证功能

目录 目录 前言 Keystone安装列表 Keystone架构 Keystone的管理对象 一个理解Keystone管理对象功能的例子 Keystone管理对象之间的关系 Keystone V3的新特性 V3的改进 Authorization授权功能的应用 Authentication认证功能的应用过程 前言 Keystone实现始终围绕着Keystone所实现的功能来展开,所以在理解其实现之前,建议大家尝试通过安装Keystone这一个过程来感受Keystone在Openstack架构中所充

什么是OpenStack 开源的云计算管理平台项目_OpenStack

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作.OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成. OpenStack是一个旨在为公共及私

设计之处:产品不要被技术绑架

文章描述:产品不要被技术绑架的十大注意事项. 不可能的:有难度的:你懂不懂技术的:这个功能要放在二期才能做:要做可以但需要时间:把那个项目停掉我就给你做--如果经常听到技术这样说,那你的产品很有可能已经被技术绑架了,接下来你想再多的功能,只要技术说不可以那就没戏.   1.正确选人 --做网站的技术开发,必须是个技术牛人,要像科学怪人那样的人最好,为实现一个功能可以两天不睡觉的主.千万不要找一个所谓的高级架构师之类的高人,其实这种人连最简单的功能也不会开发了.   2.严禁不可能 --如果一个程

测试4年,说给自己听的话

本来是写给组内的一个同学的,没想到越写越长,想来想去,还是写个自己吧,毕竟每个人都有按自己的方式成长的权利和自由,而且自己也还在成长中,难免会误导别人~珍惜每个人在成长时付出的努力~   咱们所在的团队不是梦幻团队,甚至不是一个合格的互联网团队,咱们的团队缺少有预见性的有方向感的产品经理,缺少技术大牛,甚至缺少好的架构师,当然了,同时也缺少测试牛人. 为什么这么说呢? 产品没有清晰的产品预期:研发没有工作激情:测试为了测试而测试.为什么会这样呢?因为咱们目标性不够.好的团队一定是和而不同的.比方

一个程序员的运气有多重要

先说两个真实的故事: 第一个故事有点悲凉,2011年3月,我的同学老 A 和我一同进入茁壮网络,2012 年公司战略变动,整个部门端掉了,我提前离了职另谋出路,老 A 一直赖到了最后拿到了N+1,后来和当时的部门经理一同进入一家创业公司,没日没夜的干了两年,最后公司工资都发不起,直到我这位同学离开,还有两个月的工资没拿到. 第二个故事有点刺激,发生在我呆过的第三家公司:博雅互动.2011年我的另一位同学老 Z 进入这家公司,当时这家公司规模不到100人,公司正在由页游向手游转型,当时我同学是公司

细数云计算产品和技术-OpenStack

简介 OpenStack是一个开源的云计算管理平台项目,由几个组件组合起来完成具体工作.OpenStack支持几乎所有类型的云环境,提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成. OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目.OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性.OpenStack云计算平台,帮助服务商和企业