OpenStack运维:计算节点的故障和维护

Posted 杜先生的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack运维:计算节点的故障和维护相关的知识,希望对你有一定的参考价值。

1、计划中的维护

  举例:需要升级某一个计算节点的硬件配置,需要将计算节点上的虚拟机迁移后在对其进行操作,分为两种情况。

  1.1 云系统使用了共享存储

    a. 获取虚拟机列表:nova list --host compute01-node-Name --all-tenant

    b. 将每个虚拟机迁移至另一台计算节点:nova live-migration <uuid> compute02-node-Name 

    c. 停止nova-compute服务:stop nova-compute

    d. 维护工作完成以后,启动服务:start nova-compute

    e. 确认服务正常启动和AMQP正常连接:status nova-comput     grep AMQP /var/log/nova-compute

    f. 将虚拟机迁移回来

  1.2 云系统没有使用共享存储

    将上述迁移命令改为:nova live-migration --block-migrate <uuid> compute02-node-Name 

 

2、虚拟机实例启动故障

  2.1 意外关闭可能会出现磁盘分区错误,需要对root分区进行fsck,此时使用VNC连接虚拟机即可完成修复。

  2.2 libvirt的XML错误:nova reboot --hard <uuid>

 

3、从故障实例中恢复数据

  故障:虚拟机正常运行,SSH无法链接,VNC控制台显示kernel panic错误

  恢复数据:

    a. 使用virsh list查看故障实例的ID,假设ID为30 实例名为instance-30

    b. 挂起实例:virsh suspend 30

    c. 将qemu-nbd设备链接到磁盘上:

      cd /var/lib/nova/instance/instance-30

      qemu-nbd -c /dev/nbd0 `pwd`/disk

    d. 挂载qemu-nbd设备

      qemu-nbd会将虚拟机的不同分区导出为/dev/nbd0 nbd0p1 nbd0p2等

      挂载:mount /dev/nbd0p1 /mnt  进去mnt目录即可查看实例数据

    e. 查看完成后释放qemu-nbd设备

      umount /mnt

      qemu-nbd -d /dev/nbd0

    f.  恢复实例:virsh resume 30

 

4、卷

  如果故障的虚拟机的挂载的有卷,需要将卷手工分离并挂载

  mysql> select nova.instances.uuid as instance_uuid, cinder.volumes.id as volume_uuid, cinder.volumes.status, cinder.volumes.attach_status, cinder.volumes.mountpoint,  cinder.volumes.display_name from cinder.volumes inner join nova.instance on cinder.volumes.instance_uuid=nova.instances.uuid where nova.instances.host = ‘compute01-node-Name‘;

  手工分离:nova volume-detach <instance_uuid> <volume_uuid>

  重新挂载:nova volume-attach <instance_uuid> <volume_uuid> /dev/vdX

 

5、计算节点彻底故障

  故障:计算节点无法启动,恢复虚拟机实例,如果/var/lib/instances使用了共享目录

  a. 生产故障节点运行的所有实例uuid列表

    mysql> select uuid from instances where host = ‘故障节点主机名‘ and deleted = 0;

  b. 更新数据库,将虚拟机实例宿主机改为其他计算节点

    mysql> update instances set host = ‘NewComputeName‘ where host = ‘故障节点主机名‘ and deleted = 0;

  c. 启动虚拟机并生产XML

    nova reboot --hard <uuid>

  d. 根据4恢复相对于的卷即可。

  如果没有使用共享目录,这个目录在计算节点的硬盘上

以上是关于OpenStack运维:计算节点的故障和维护的主要内容,如果未能解决你的问题,请参考以下文章

51CTO学院三周年我的RHCE之旅

openstack怎么查计算节点的vm接口ip地址

OpenStack 运维 - 从零开始学习

OpenStack 运维 - 从零开始学习

OpenStack Nova 计算节点的维护模式

OpenStack 运维 - 部署Nova组件