kvm安装管理

KVM是指基于Linux内核(

虚拟化需要开源的内核(linux内核开源而windows内核闭源,因此kvm在linux),原因是需要内核区分是虚拟机还是真机指令发给cpu,如reboot命令,如果在虚拟机中执行同时被宿主机cpu也接收到,则宿主机也会执行这个命令

xen最早在centos5上,但在centos6时启用xen,而使用kvm!(xen需要定制内核)

个人环境:

虚拟机:Parallels Desktop 20(CPU开启虚拟化)

虚拟机底层:Centos7

vnc viewer免费版7.8.0.dmg

安装KVM环境

1
2
3
4
5
6
#安装
yum install libvirt virt-install qemu-kvm -y

#libvirt:虚拟机管理程序
#virt-install:安装虚拟机
#qemu-kvm:虚拟磁盘管理程序

安装虚拟机

先启动 libvirt 服务,相当于虚拟机的底层框架

1
2
 systemctl start libvirtd
 systemctl enable libvirtd

场景 1:通过 ISO 镜像安装 CentOS 7​

注:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
virt-install \
  --virt-type kvm \
  --os-type=linux \
  --os-variant=centos7.0 \
  --name=centos7_vm1 \
  --memory=2048 \
  --vcpus=2 \
  --disk path=/var/lib/libvirt/images/centos7_vm1.qcow2,size=20,format=qcow2,bus=virtio \
  --cdrom=/opt/iso/CentOS-7-x86_64-Minimal-2009.iso \
  --network network=default \
  --graphics vnc,port=5901,listen=0.0.0.0,password=123456 \
  --noautoconsole

​场景 2:通过网络安装(HTTP 源)​

1
2
3
4
5
6
7
8
virt-install \
  --name=ubuntu_vm \
  --memory=4096 \
  --vcpus=4 \
  --disk size=30 \
  --location=
  --extra-args="auto=true url=
  --graphics spice,port=5902

​场景 3:PXE 网络启动安装​

1
2
3
4
5
6
7
8
9
virt-install \
  --name=pxe_vm \
  --memory=1024 \
  --vcpus=1 \
  --disk size=5 \
  --network bridge=br0,model=virtio \
  --pxe \
  --graphics none \
  --console pty,target_type=serial

管理虚拟机

常用命令: virsh 《参数》

注:虚拟机名称是唯一的!

查看信息

虚拟机列表(仅开机状态): virsh list

虚拟机列表(所有状态的): virsh list --all

查看开机自启的虚拟机: virsh list --autostart

查看虚拟机信息: virsh dominfo 《虚拟机名称》

查看虚拟机状态: virsh domstate 《虚拟机名称》

开/关机

开启虚拟机: virsh start 《虚拟机名称》

关闭虚拟机: virsh shutdown 《虚拟机名称》

强制关闭虚拟机: virsh destroy《虚拟机名称》

重启虚拟机: virsh reboot 《虚拟机名称》

开机自启

启用开机自启虚拟机: virsh autostart 《虚拟机名称》

关闭开机自启虚拟机: virsh autostart --disable 《虚拟机名称》

暂停/恢复

暂停虚拟机: virsh suspend 《虚拟机名称》

恢复虚拟机: virsh resume 《虚拟机名称》

备份/恢复/删除

备份的配置文件记录了主机硬件、网络、磁盘位置等信息!

备份注册信息(仅备份配置文件): virsh dumpxml 《虚拟机名称》 >导出备份路径

导入注册信息(重新注册配置): virsh define 备份路径

删除注册信息(仅取消注册,数据盘还在): virsh undefine 《虚拟机名称》

彻底删除

删除虚拟机及关联磁盘(彻底删除): virsh undefine 《虚拟机名称》 --remove-all-storage

手动删除磁盘文件: rm -f /var/lib/libvirt/images/虚拟机磁盘

编辑虚拟机配置文件

实现修改虚拟机配置(改CPU、内存、硬盘容量等等)

virsh edit 《虚拟机名称》

console控制台

连接虚拟机:vrish console 《虚拟机》
退出console模式:需要按"ctrl+]" ,与telnet测试连接时相同

virt-install安装的虚拟机使用vnc进行连接,而console则是纯文本连接,适用于纯命令行的系统,免去安装vnc的需求!

console控制台需要登录vm虚拟机内核支持来实现console接入!

支持console的两种添加方式
  • 第一种方法:vm已创建完成

1.ssh到虚拟机执行命令来修改内核参数:

1
2
#root权限修改内核参数
grubby --update-kernel=ALL --args="console=ttyS0, 115200n8"

2.重启虚拟机

  • 第二种方法:测试vnc卡到硬件,不可用!!!virt-instll,创建虚拟机时添加console参数
1
2
3
4
# 启用串口控制台
    --console pty,target_type=serial 
# 注入内核参数(安装时配置控制台指定内核日志和控制台输出重定向到虚拟机的第一个串口设备ttyS0),及串口通信的波特率为 ​​115200​​,数据位为 ​​8​​,无校验n)       
    --extra-args="console=ttyS0,115200n8"