openstack快速更改虚拟机配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

在使用nova resize去修改虚拟机的配置的时候,实际调用的是migrate的代码


  在默认情况下,执行resize的时候,首先会进行磁盘disk镜像和后端镜像进行一个合并成raw,然后转换成qcow2的过程。而且会进行迁移的动作。整个过程会相当的消耗时间,而且我们一般只需要修改cpu和mem的大小,并不需要去合并镜像,更不需要去做迁移。

总之,在单台宿主机上去进行nova resize是一件很让人蛋碎的事情。


事实上,在reboot一个instance的时候,这个instance的libvirt.xml(只考虑kvm环境)会重新从数据库中生成。所以只需要修改数据库就行了。


附上pyhon修改数据库脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import  MySQLdb,sys
ip  =  sys.argv[ 1 ]
size  =  sys.argv[ 2 ]
size_info = { '1' : '55800df7-5579-45c3-b4b3-584454aa2b77' ,
            '2' : '6fe54364-e066-460b-89a2-ffe19cb26ae7' ,
            '4' : '7a457be6-b1a0-48cd-88e1-c4e21d0518c1' ,
            '6' : '7105ad91-3e49-43ed-9575-1a0535694578' ,
            '8' : '61fc938c-234a-406b-b102-d535264e914d' ,
            '12' : 'dc5ffd92-eedf-4851-a40a-90e657f799a2' ,
            '16' : '5c7af872-2089-4ece-bba7-4099d2a3ef24' ,
           }
to_size  =  size_info[size]
get_flavor_info_sql = "select  id ,memory_mb,vcpus  from  instance_types \
                     where flavorid  =  '%s' ;"  %  \
                     to_size
class  mysqlEng():
     def  __init__( self ,host = '127.0.0.1' ,user = 'root' ,passwd = ' ',db=' None ',port=' 3306 '):
         self .conn  =  MySQLdb.connect(host = host,user = user,passwd = passwd,db = db,port = 3306 )
         self .cur  =  self .conn.cursor()
     def  select( self ,sql = 'show tables;' ):
         self .cur.execute(sql)
         ret  =  self .cur.fetchall()
         return  ret
     def  update( self ,sql = ''):
         self .cur.execute(sql)
         self .conn.commit()
     def  __del__( self ):
         self .cur.close()
         self .conn.close()
mysql_object  =  mysqlEng(host = '127.0.0.1' ,user = 'root' ,passwd = '123456' ,db = 'nova' )
flavor_info  =  mysql_object.select(get_flavor_info_sql)
flavor_id = flavor_info[ 0 ][ 0 ]
mem = flavor_info[ 0 ][ 1 ]
vcpus = flavor_info[ 0 ][ 2 ]
update_flavor_info_sql = "update instances  set  instance_type_id = '%d' ,vcpus = '%d' ,memory_mb = '%d'  \
                         where hostname = '%s'  AND vm_state ! =  'deleted'  AND vm_state ! =  'error' ;"  %  \
                         (flavor_id,vcpus,mem,ip)
mysql_object.update(update_flavor_info_sql)
after_update_info_sql = "select vcpus,memory_mb  from  instances \
                       where hostname = '%s'  AND vm_state ! =  'deleted'  AND vm_state ! =  'error' ;"  %  \
                       ip
after_update_info  =  mysql_object.select(after_update_info_sql)
print  '+' * 80 + '\n'
print  "This server %s now flavor : cpu=%s , mem=%s\n"  % \
       (ip,after_update_info[ 0 ][ 0 ],after_update_info[ 0 ][ 1 ])
print  '+' * 80 + '\n'


修改脚本中size_info里的对应openstack中flavor的id号,还有mysql_obejcet对象中的mysql相关信息


使用方式:python update_size.py  instance_name flavor


修改完成后必须使用nova reboot --hard instance_id 去重启,必须带上--hard去强制重启实例,不然不会生效。




本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/1367575,如需转载请自行联系原作者

相关文章
|
10月前
|
存储 编解码 虚拟化
【2025最新】VMware Workstation Pro 虚拟机配置与安装VMware Tools 感受它的强大~
VMware Tools 是 VMware 虚拟机中自带的一种增强工具,能够显著提升虚拟机的性能和用户体验。它提供了优化的显卡驱动程序、文件共享与拖放功能、时间同步以及跨虚拟机和宿主机的复制粘贴功能。安装 VMware Tools 可以让虚拟机在 VMware 平台上运行得更加高效,并且对于老旧系统(如 Win98、Win2000、WinXP)也能提供必要的驱动支持。每个虚拟机都需要独立安装与其操作系统版本相匹配的 VMware Tools,以确保最佳兼容性和性能表现。
1051 6
【2025最新】VMware Workstation Pro 虚拟机配置与安装VMware Tools 感受它的强大~
|
9月前
|
存储 网络协议 网络安全
Hyper-V Win10虚拟机配置常见问题
在配置Hyper-V Win10虚拟机时,用户常面临网络连接、虚拟交换机配置、资源分配及其他问题。例如,虚拟机无法获取IP地址可能源于DHCP服务异常,需检查并启动该服务;外部虚拟交换机配置错误则需确保物理网络适配器正确连接。此外,内存不足或虚拟硬盘性能瓶颈也会影响运行效果。通过合理调整资源配置、优化设置及遵循最佳实践,可有效解决这些问题。
|
9月前
|
安全 网络协议 网络安全
当虚拟机出现网络连接问题时,应该先检查Hyper-V的网卡连接配置
当虚拟机出现网络连接问题时,应首先检查Hyper-V的网卡配置。具体步骤包括:确认虚拟机运行状态、检查虚拟交换机类型和物理网卡连接、确保虚拟机网络适配器正确连接到虚拟交换机,并验证网络配置(IP地址等)。常见问题如虚拟交换机配置错误、网络适配器未连接或防火墙阻止连接,可通过重新配置或调整设置解决。必要时重启虚拟机和宿主机,查看事件日志或联系技术支持以进一步排查问题。
|
9月前
|
监控 安全 网络协议
Hyper V上网实战:多虚拟机网络环境配置
在Hyper-V环境中配置多虚拟机网络以实现上网功能,需完成以下步骤:1. 确认Hyper-V安装与物理网络连接正常;2. 配置虚拟交换机(外部、内部或专用)以支持不同网络需求;3. 设置虚拟机网络适配器并关联对应虚拟交换机;4. 验证虚拟机网络连接状态;5. 根据场景需求优化多虚拟机网络环境。此外,还需注意网络隔离、性能监控及数据备份等事项,确保网络安全稳定运行。
|
9月前
|
虚拟化 网络虚拟化 Windows
导入虚拟机到Hyper-V环境时,理解并配置网络适配器设置是确保网络通信的关键
在Hyper-V环境中,正确配置虚拟机的网络适配器是确保其网络通信的关键。需先启用Hyper-V功能并创建虚拟交换机。接着,在Hyper-V管理器中选择目标虚拟机,添加或配置网络适配器,选择合适的虚拟交换机(外部、内部或私有),并根据需求配置VLAN、MAC地址等选项。最后,启动虚拟机并验证网络连接,确保其能正常访问外部网络、与主机及其他虚拟机通信。常见问题包括无法访问外部网络或获取IP地址,需检查虚拟交换机和适配器设置。
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
|
存储 网络性能优化 块存储
OpenStack的块存储卷管理创建与配置
【8月更文挑战第27天】
672 3
|
安全
【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
|
存储 网络协议 搜索推荐
在Linux中,如何配置和管理虚拟机的网络和存储?
在Linux中,如何配置和管理虚拟机的网络和存储?
|
网络协议 Linux 网络安全
Hyper-v 如何配置 Centos7 虚拟机网络?
Hyper-v 如何配置 Centos7 虚拟机网络?
489 0