一、virsh 命令(KVM 底层,宿主机执行,面试高频)
virsh:KVM/QEMU 虚拟机管理工具,OpenStack 底层就是调用 virsh 操作虚拟机
# 查看全部虚拟机(运行+关闭)
virsh list --all
# 只看运行中虚拟机
virsh list
# 启动虚拟机
virsh start <vm-name>
# 关闭虚拟机(优雅关机)
virsh shutdown <vm-name>
# 强制断电(硬关机,相当于拔电源)
virsh destroy <vm-name>
# 重启
virsh reboot <vm-name>
# 挂起/暂停
virsh suspend <vm-name>
# 恢复暂停
virsh resume <vm-name>
# 查看虚拟机xml配置文件
virsh dumpxml <vm-name>
# 编辑虚拟机xml配置
virsh edit <vm-name>
# 定义虚拟机(从xml文件导入)
virsh define xxx.xml
# 删除虚拟机(取消定义,不删磁盘)
virsh undefine <vm-name>
# 删除虚拟机同时删除磁盘
virsh undefine --remove-all-storage <vm-name>
# 虚拟机快照
virsh snapshot-list <vm-name> # 查看快照
virsh snapshot-create-as <vm-name> snap01 # 创建快照
virsh snapshot-revert <vm-name> snap01 # 恢复快照
virsh snapshot-delete <vm-name> snap01 # 删除快照
# 控制台vnc信息,排错看虚拟机控制台
virsh vncdisplay <vm-name>
# 查看虚拟机磁盘信息
virsh domblklist <vm-name>
# 查看虚拟机网卡
virsh domiflist <vm-name>
# 查看宿主机kvm版本
virsh version
# 查看kvm支持的cpu型号
virsh cpu-models x86_64
# 查看宿主机资源池
virsh pool-list --all
virsh pool-info <pool-name>
二、QEMU 辅助命令(KVM 底层,面试了解)
# 创建qcow2镜像
qemu-img create -f qcow2 test.qcow2 20G
# 查看镜像信息
qemu-img info test.qcow2
# 镜像格式转换 qcow2 --> raw
qemu-img convert -f qcow2 -O raw test.qcow2 test.raw
# 镜像扩容
qemu-img resize test.qcow2 +10G
# 检查qcow2镜像
qemu-img check test.qcow2
三、OpenStack CLI 命令(控制节点,source 环境变量后执行!面试核心)
必须先加载环境变量
source /etc/kolla/admin-openrc.sh
# 或者
source admin-openrc
1. 实例 nova(openstack compute service)
# 列出所有云主机实例
openstack server list
# 查看实例详情(重点!排错看状态、网络、fault信息)
openstack server show <instance-name/id>
# 创建云主机
openstack server create \
--image cirros \
--flavor m1.small \
--key-name mykey \
--nic net-id=xxx-network-id \
vm01
# 启动实例
openstack server start <vm-id>
# 关闭实例
openstack server stop <vm-id>
# 软重启
openstack server reboot <vm-id>
# 硬重启(强制断电重启)
openstack server reboot --hard <vm-id>
# 删除实例
openstack server delete <vm-id>
# 实例快照
openstack server snapshot create vm-snap01 --server <vm-id>
# 获取实例控制台url,网页控制台
openstack server show <vm-id> | grep console
openstack console url show <vm-id>
# 实例迁移(冷迁移)
openstack server migrate <vm-id>
# 热迁移(在线迁移)
openstack server live-migration <vm-id> compute02
# 将实例置为维护模式
openstack server set --state error <vm-id>
# 查看nova服务状态(看哪些compute节点活着)
openstack compute service list
# 查看flavor规格
openstack flavor list
openstack flavor show m1.small
# 创建flavor
openstack flavor create --ram 2048 --disk 20 --vcpus 2 m1.test
2. Glance 镜像服务
# 镜像列表
openstack image list
# 查看镜像详情
openstack image show cirros
# 上传镜像
openstack image create --file cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare cirros
# 删除镜像
openstack image delete <image-id>
3. Neutron 网络(面试高频)
# 网络列表
openstack network list
openstack network show net1
# 子网列表
openstack subnet list
# 路由器列表
openstack router list
# port端口列表(每个虚拟机网卡对应一个port)
openstack port list
openstack port show <port-id>
# floating ip 浮动IP
openstack floating ip list
# 创建浮动ip
openstack floating ip create ext-net
# 绑定浮动ip到实例
openstack server add floating ip vm01 10.0.0.123
# 解绑浮动ip
openstack server remove floating ip vm01 10.0.0.123
# 安全组
openstack security group list
openstack security group rule list default
# 添加安全组规则,放行ssh
openstack security group rule create --proto tcp --dst-port 22 default
4. Cinder 块存储(云硬盘)
# 云硬盘列表
openstack volume list
openstack volume show vol01
# 创建云硬盘
openstack volume create --size 20 vol01
# 挂载云硬盘到实例
openstack server add volume vm01 vol01
# 卸载云硬盘
openstack server remove volume vm01 vol01
# 卷快照
openstack volume snapshot list
openstack volume snapshot create --volume vol01 vol-snap01
5. Keystone 身份认证
# 用户列表
openstack user list
# 项目/租户
openstack project list
# 角色
openstack role list
# 域
openstack domain list
6. OpenStack 服务状态排错
# 查看所有openstack服务组件状态
openstack service list
# 查看endpoint访问地址
openstack endpoint list
四、OpenStack 排错面试高频命令
面试经常问:实例创建失败,如何排查?
- 看实例详情
openstack server show <uuid>,看fault字段报错信息 - 看 nova-compute 日志:
/var/log/nova/nova-compute.log - 看 nova-api 日志:
/var/log/nova/nova-api.log - 看 neutron 日志:
/var/log/neutron/ - 宿主机查看 virsh list –all,确认 kvm 侧虚拟机是否生成
- compute service list 确认计算节点是否 up 状态
# 查看实例控制台日志(非常重要,虚拟机内部启动报错看这个)
openstack console log show <vm-id>
五、面试常考区别问答(背)
- virsh vs openstack server 命令
openstack server:控制节点 API 调用,nova 组件接口;virsh:计算宿主机本地,直接操作 QEMU/KVM,OpenStack 底层调用 virsh;实例在 openstack 删除,virsh 上虚拟机也会消失。
- 冷迁移 vs 热迁移(live‑migration)
- 热迁移:虚拟机不关机,在线迁移到另一台计算节点,内存拷贝;要求共享存储或者块迁移,网络要求高。
- 冷迁移:关机后迁移磁盘,停机业务中断。
- snapshot:
- OpenStack server snapshot:glance 镜像快照,生成新镜像;
- virsh snapshot:qemu 内部快照,qcow2 快照,存在磁盘文件,openstack 不推荐使用 virsh 快照。
- qcow2 vs raw:
- raw:裸格式,性能高,不支持快照,占用空间预分配;
- qcow2:稀疏镜像,支持快照、压缩,动态占用磁盘,openStack 默认。
六、速记精简版(面试前快速过)
virsh 高频
virsh list --all、virsh dumpxml、virsh destroy、virsh shutdown、virsh domblklist
openstack 高频
openstack server list/show、openstack console log show、openstack compute service list、openstack image list、openstack floating ip list、openstack volume list