KVM虚拟机的关机与开启

我们在开启与关闭KVM虚拟机时,一般是通过start、shutdown、reboot等命令来进行。但是有时候我们会发现在使用shutdown、reboot命令进行关闭和重启虚拟机时,虚拟机没有任何反应,该怎么运行还是怎么运行,这个时候我们可能就会使用destroy暴力关机。

为什么会出现这种现象?经过查询相关资料发现,原来这几个命令是向KVM虚拟机发送一个ACPI指令,来实现相关对虚拟机的操作。

而默认安装KVM虚拟机时,特别是linux虚拟机,没有安装ACPI服务,因此导致虚拟机没有对这些命令做出相应的动作。

有关这些命令,我们可以在KVM虚拟机的配置文件中找到:

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

clip_image001

有关ACPI的相关信息,我们也可以通过KVM虚拟机的配置文件来查看,如下:

<features>

<acpi/>

<apic/>

<pae/>

</features>

clip_image002

如果要实现这些指令的功能,那么就需要在KVM的虚拟机中,安装ACPI服务,然后启动该服务即可。

KVM虚拟机中目前windows系统默认ACPI服务已经安装并启动,所以我们只需要对Linux进行安装ACPI服务即可。如下:

yum –y install acpid

clip_image003

clip_image004

ACPI服务安装完毕后,启动ACPI服务。我们就可以在KVM服务器上使用shutdown、reboot等命令来对虚拟机进行关机和重启。

clip_image005

clip_image006

08-03 929
### KVM虚拟机的安装配置 #### 安装KVM及相关工具 要在Linux系统上安装和配置KVM虚拟机,首先需要确保系统的硬件支持虚拟化技术。可以通过运行以下命令来验证CPU是否支持虚拟化: ```bash egrep -c '(vmx|svm)' /proc/cpuinfo ``` 如果返回值大于零,则表示CPU支持虚拟化[^1]。 接着,在CentOS或其他基于RPM的发行版中,可以使用`yum`包管理器来安装必要的软件包。以下是具体的安装命令: ```bash sudo yum install qemu-kvm libvirt virt-install bridge-utils virt-manager ``` 这一步会安装QEMU-KVM、libvirt库以及一些常用的虚拟机管理工具[^2]。 完成安装后,启动并启用`libvirtd`服务以便于后续操作: ```bash sudo systemctl start libvirtd sudo systemctl enable libvirtd ``` #### 配置网络桥接 为了使虚拟机能访问外部网络,通常需要设置一个网络桥接设备。编辑现有的网络接口文件(例如 `/etc/sysconfig/network-scripts/ifcfg-eth0`),将其更改为桥接模式: ```plaintext DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0 ``` 随后重启网络服务以应用更改: ```bash sudo systemctl restart network ``` 此时,新创建的桥接适配器应该已经可用,并且物理网卡会被附加到该桥接下[^3]。 #### 创建并管理虚拟机 通过`virt-install`命令能够轻松地部署新的虚拟机实例。下面是一个基本的例子,展示如何利用ISO镜像文件构建一台名为`testvm`的虚拟机: ```bash virt-install \ --name testvm \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/testvm.qcow2,size=20 \ --cdrom /path/to/your.iso \ --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 \ --os-type linux \ --os-variant rhel7 ``` 以上参数分别定义了内存大小、CPU核心数、磁盘容量、光驱映射路径以及其他重要属性[^3]。 对于已存在的虚拟机,可借助`virsh`命令行工具执行诸如开机、关机或查询状态之类的常规任务。例如: ```bash # 开启虚拟机 virsh start <domain-name> # 停止虚拟机 virsh shutdown <domain-name> # 获取所有域的状态列表 virsh list --all ``` 此外,还可以导出XML格式描述文档用于备份或迁移目的: ```bash virsh dumpxml <domain-name> > domain.xml ``` 最后提醒一点,当计划复制某台已有虚拟机时,请务必先关闭目标机器再进行下一步动作;否则可能导致数据不一致等问题发生[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值