设为首页 收藏本站
查看: 1276|回复: 0

[经验分享] Openstack中虚拟机的Resize功能详解

[复制链接]

尚未签到

发表于 2016-1-9 10:42:04 | 显示全部楼层 |阅读模式
本文由guwenwu写于2012年08月11日,转载请注明出处,谢谢!




摘要:在Openstack中生成VM后,由于业务的变更或业务量的增加,需要对VM进行扩展。目前Openstack中提供了Resize功能,本文对Openstack中的源码进行了测试和分析,并进行了一定的修改。




环境:2台Centos6.2机器

     HOSTA:10.28.170.93  8core 16G 实体机 安装和运行全部Openstack组件

     HOSTB:10.28.168.55  4core 4G  虚拟机 安装和运行nova-compute nova-network




一.Openstack中Resize功能源码分析

  Openstack的resize功能默认的操作是在两台HOST(宿主机)之间进行静态的迁移(VM会重启,内存状态无法保存),但是通过修改配置文件,可以允许Openstack在一台HOST上进行RESIZE而不用迁移。

  Resize的过程中,vm主要经过以下几个方法的处理:

    def prep_resize(self, context, instance_uuid, instance_type_id, image,
**kwargs):
    def prep_resize(self, context, instance_uuid, instance_type_id, image,
**kwargs):
    def finish_resize(self, context, instance_uuid, migration_id, disk_info,
image):


详细的代码就不一一例举了,有兴趣的朋友可以自行阅读源码。

主要的操作步骤如下:

  1.检查VM虚拟磁盘格式是否为qcow2,如果是的话,将磁盘格式转换为RAW

        qemu-img convert -f qcow2 -O raw
  2.将虚拟磁盘从HOST A scp到HOST B上

  3.用以下命令对虚拟磁盘大小进行重置

    qemu-img resize
e2fsck -fp
resize2fs  4.如果use_cow_images设置为true,则将磁盘重新转为qcow2格式。

  5.重新获取网络配置,在HOST B上设置DHCP绑定和Iptables规则。

  6.修改XML文件,重新启动虚拟机。

OK啦,整个Resize的工作就完成了。下面重点讲一下实际操作中遇到的问题和BUG




二.在一个单节点中进行resize



同一机器中进行resize需要在配置文件nova.conf中添加:

--allow_resize_to_same_host=True



重启服务:

service nova-api restart

service nova-compute restart






三.在多个节点上进行resize

3.1.采用共享存储

  从源码上来看, Openstack中resize这个功能并没有考虑使用共享存储的情况。因此需要对源码进行一些改造,并不复杂,在这里就不交代了,有兴趣的朋友可以留言。PS:测试多节点时请注释掉--allow_resize_to_same_host=True

3.1.1.在HOST A上安装配置NFS服务器


(1)检查是否安装nfs(Centos6.2默认是安装好了的)


    rpm -qa|grep nfs

   如未安装:




yum install nfs-utils.x86_64(64位系统)


yum install nfs-utils(32位系统)



(2)检查安装portmap服务,注意portmap在centos6中改名为rpcbind


yum install rpcbind(centos6)


yum install portmap(centos5)

(3配置nfs服务器

vim /etc/exports

添加:


/home/nova/instances  *(rw,sync,fsid=0,no_root_squash)

这一行的含义是共享文件夹$novahomedir/instances ,可访问该共享文件的ip地址为*(所有IP)

权限为:rw 读写权限


no_root_squash
登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限


重启服务


/etc/init.d/rpcbind restart


/etc/init.d/nfs restart



(4)配置nfs 客户端 client

检查服务起是否可用:


showmount -e 10.28.170.93

挂载目录


mount -t nfs 10.28.170.93:/home/nova/instances /home/nova/instances

配置开机自动挂载


vi /etc/fstab

添加

10.28.170.93 :/home/nova/instances  /home/nova/instances nfs nodev,ro,rsize=32768,wsize=32768  0 0


(5):常见问题及解决方法

     Permission denied

     解决方法:1权限问题,注意检查权限设置。注意*和'('是连接在一起的。

              2检查/home/nova/instance 的用户组是不是nova:nova,如果客户机和服务端nova的UID和GID不同,应该将其修改为一致的。用id命令查看用户UID、GID




命令格式






id [选项]... [用户名]






命令选项






-a 忽略,兼容其它版本






-Z, –context 只输出当前用户的安全上下文






-g, –group 只输出有效的GID






-G, –groups 输出所有的GID






-n, –name 对于 -ugG 输出名字而不是数值






-r, –real 对于 -ugG 输出真实ID而不是有效ID






-u, –user 只输出有效UID






–help 输出帮助后退出






–version 输出版本信息后退出



      修改UID、GID:vi /etc/passwd修改nova用户

                   usermod -u 502 nova  和groupmod -g 502 nova

                  find / -user 501 -exec chown 502 {} \; 修改nova所有文件的UID



3.2,使用本地存储

  3.2.1在HOST A和B配置ssh

vim /etc/passwd

将nova用户名后的/sbin/nologin修改为 /bin/bash

passwd nova修改密码

su nova切换到nova用户,运行

ssh-keygen -t rsa一路回车生成密钥,并将密钥copy到另一台机器中的nova用户.ssh目录下,这样HOST A和B之间的ssh连接就不需要密码。






四,BUG


    迁移后VM网络错误,VM迁移后在新的host上重建网络和更新Iptables规则,而由于数据库中的vm_host没有及时更新为新的host,vm获得的dhcp_server是错误的。同时在host上的dhcp服务是由dnsmasq提供的,dnsmasq按照/home/nova/networks/nova-br100.conf文件中的配置对vm的mac和ip进行了绑定。而迁移后新的host中没有在这个中添加vm的mac和ip绑定,因此即使vm获得了正确的dhp_server地址,也无法获得IP。



   VM完成resize之后进入resize_verfiy状态,这个时候Openstack还保留有虚拟机的旧数据,需要人工连接到vm中查看vm的状态是否正常,如果正常,需要自己调用confirm_resize接口,Openstack会将旧的数据删除。然而在confirm_resize的代码中,没有将虚拟机状态更新为active。这个也需要自己修改代码。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-162111-1-1.html 上篇帖子: 基于openstack上的MICRO BOSH 安装cf 下篇帖子: CentOS6.3下为OpenStack制作CentOS镜像
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表