现在的位置: 首页 > 综合 > 正文

OpenStack从数据库恢复Volume状态

2014年01月03日 ⁄ 综合 ⁄ 共 5822字 ⁄ 字号 评论关闭

转自:http://blog.csdn.net/ugyn109/article/details/8126059

问题

OpenStack中很容易导致数据库和真实状态不一致的情况。因为OpenStack中操作基本都是分步完成的,从api接受请求到调度再到具体的操作节点,每一步都有可能更新数据库状态,如果哪一个出错就会直接抛出异常导致整个操作链中断,然后数据库就处于上一个操作后的更新状态。比较典型的就是删除实例,如果在nova-compute出错那这个实例的状态就可能永远处于deleting状态了。

现在我遇到这样一个问题,我有一个Volume挂载在一个实例上,但是不知道什么原因,这个Volume与这个实例的联系断了,在nova-volume通过tgtadm查看发现已经没有客户端连接到该Volume了。但是数据库中该记录还在,这导致以下结果:
1) 删除实例时无法删除,提示“Stderr: 'iscsiadm: No records found'”
2) 无法从实例卸载Volume 。于是只能直接操作数据库了。

与Volume相关的表

数据库中与Volume直接相关的几个表如下所示

操作Volume时数据库的相关数据变化

新建Volume:

[plain] view
plain
copy

  1. select * from volumes where id = 40\G  
  2. *************************** 1. row ***************************  
  3.          created_at: 2012-10-29 07:00:23  
  4.          updated_at: 2012-10-29 07:00:25  
  5.          deleted_at: NULL  
  6.             deleted: 0  
  7.                  id: 40  
  8.              ec2_id: NULL  
  9.             user_id: 397dd3be88b6492caa88521502b07617  
  10.          project_id: c6159a4f3dd34a2b83527499a40dbd2b  
  11.                host: store2.sigsit.org  
  12.                size: 20  
  13.   availability_zone: nova  
  14.         instance_id: NULL  
  15.          mountpoint: NULL  
  16.         attach_time: NULL  
  17.              status: available  
  18.       attach_status: detached  
  19.        scheduled_at: 2012-10-29 07:00:23  
  20.         launched_at: 2012-10-29 07:00:25  
  21.       terminated_at: NULL  
  22.        display_name: test  
  23. display_description:   
  24.   provider_location: 10.61.2.14:3260,5 iqn.2010-10.org.openstack:volume-00000028 1  
  25.       provider_auth: NULL  
  26.         snapshot_id: NULL  
  27.      volume_type_id: NULL  
  28.   
  29. select * from volume_metadata where volume_id = 40\G  
  30.   
  31. select * from iscsi_targets where volume_id = 40\G  
  32. *************************** 1. row ***************************  
  33. created_at: 2012-09-24 09:00:36  
  34. updated_at: 2012-10-29 07:00:24  
  35. deleted_at: NULL  
  36.    deleted: 0  
  37.         id: 205  
  38. target_num: 5  
  39.       host: store2.sigsit.org  
  40.  volume_id: 40  
  41.   
  42. select * from block_device_mapping where volume_id = 40\G  
  43.   
  44. select * from sm_volume where id = 40\G  
  45.       

将该Volume挂载到一个实例后:

[plain] view
plain
copy

  1. select * from volumes where id = 40\G  
  2. *************************** 1. row ***************************  
  3.          created_at: 2012-10-29 07:00:23  
  4.          updated_at: 2012-10-29 11:55:36  
  5.          deleted_at: NULL  
  6.             deleted: 0  
  7.                  id: 40  
  8.              ec2_id: NULL  
  9.             user_id: 397dd3be88b6492caa88521502b07617  
  10.          project_id: c6159a4f3dd34a2b83527499a40dbd2b  
  11.                host: store2.sigsit.org  
  12.                size: 20  
  13.   availability_zone: nova  
  14.         instance_id: 70  
  15.          mountpoint: /dev/vdc  
  16.         attach_time: NULL  
  17.              status: in-use  
  18.       attach_status: attached  
  19.        scheduled_at: 2012-10-29 07:00:23  
  20.         launched_at: 2012-10-29 07:00:25  
  21.       terminated_at: NULL  
  22.        display_name: test  
  23. display_description:   
  24.   provider_location: 10.61.2.14:3260,5 iqn.2010-10.org.openstack:volume-00000028 1  
  25.       provider_auth: NULL  
  26.         snapshot_id: NULL  
  27.      volume_type_id: NULL  
  28.   
  29. select * from volume_metadata where volume_id = 40\G  
  30.   
  31. select * from iscsi_targets where volume_id = 40\G  
  32. *************************** 1. row ***************************  
  33. created_at: 2012-09-24 09:00:36  
  34. updated_at: 2012-10-29 07:00:24  
  35. deleted_at: NULL  
  36.    deleted: 0  
  37.         id: 205  
  38. target_num: 5  
  39.       host: store2.sigsit.org  
  40.  volume_id: 40  
  41.   
  42. select * from block_device_mapping where volume_id = 40\G  
  43. *************************** 1. row ***************************  
  44.            created_at: 2012-10-29 11:55:36  
  45.            updated_at: NULL  
  46.            deleted_at: NULL  
  47.               deleted: 0  
  48.                    id: 49  
  49.           instance_id: 70  
  50.           device_name: /dev/vdc  
  51. delete_on_termination: 0  
  52.          virtual_name: NULL  
  53.           snapshot_id: NULL  
  54.             volume_id: 40  
  55.           volume_size: NULL  
  56.             no_device: NULL  
  57.       connection_info: {"driver_volume_type": "iscsi", "data": {"device_path": "/dev/disk/by-path/ip-10.61.2.14:3260-iscsi-iqn.2010-10.org.openstack:volume-00000028-lun-1", "target_discovered": false, "target_iqn": "iqn.2010-10.org.openstack:volume-00000028", "target_portal": "10.61.2.14:3260", "volume_id": 40, "target_lun": 1}}  
  58.   
  59. select * from sm_volume where id = 40\G  
  60.   
  61. select * from instances where id = 70\G  
  62. *************************** 1. row ***************************  
  63.               created_at: 2012-09-10 02:32:36  
  64.               updated_at: 2012-09-12 10:43:48  
  65.               deleted_at: NULL  
  66.                  deleted: 0  
  67.                       id: 70  
  68.              internal_id: NULL  
  69.                  user_id: 397dd3be88b6492caa88521502b07617  
  70.               project_id: c6159a4f3dd34a2b83527499a40dbd2b  
  71.                image_ref: 6c239063-9d2a-41ce-9612-bfe3564cc203  
  72.                kernel_id:   
  73.               ramdisk_id:   
  74.              server_name: NULL  
  75.             launch_index: 0  
  76.                 key_name: NULL  
  77.                 key_data: NULL  
  78.              power_state: 1  
  79.                 vm_state: active  
  80.                memory_mb: 1024  
  81.                    vcpus: 1  
  82.                 hostname: jiangyong-win7  
  83.                     host: stack6.sigsit.org  
  84.                user_data:   
  85.           reservation_id: r-h1yqckm4  
  86.             scheduled_at: 2012-09-10 02:32:37  
  87.              launched_at: 2012-09-10 02:32:48  
  88.            terminated_at: NULL  
  89.             display_name: jiangyong-win7  
  90.      display_description: jiangyong-win7  
  91.        availability_zone: NULL  
  92.                   locked: 0  
  93.                  os_type: NULL  
  94.              launched_on: stack6.sigsit.org  
  95.         instance_type_id: 19  
  96.                  vm_mode: NULL  
  97.                     uuid: 333f6afa-9009-40f7-a493-20b2382628b1  
  98.             architecture: NULL  
  99.         root_device_name: /dev/vda  
  100.             access_ip_v4: NULL  
  101.             access_ip_v6: NULL  
  102.             config_drive:   
  103.               task_state: NULL  

抱歉!评论已关闭.