一、简介
kvm(Kernel-based Virtual Machine,基于内核的虚拟机),是一个开源的系统虚拟化模块。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。
二、查看是否支持虚拟化
在VMware虚拟机中开启虚拟化技术
AMD处理器
[root@server ~]# grep svm /proc/cpuinfo
Intel处理器
[root@server ~]# grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl
xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2
x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm
3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx
rdseed adx smap clflushopt xsaveopt xsavec xsaves
我这台电脑是Intel处理器的,故查询svm没有结果
三、安装kvm虚拟化模块
libvirt:操作和管理KVM虚拟机的虚拟化API
virt-manager:基于libvirt的GUI工具
[root@server ~]# yum install libvirt virt-manager -y
重启服务
[root@server ~]# systemctl restart libvirtd
查看是否已安装kvm模块
[root@server ~]# lsmod | grep kvm
kvm_intel 162153 0
kvm 525259 1 kvm_intel
四、图形化界面安装虚拟机
启动图形化界面管理工具
[root@server ~]# virt-manager
选择创建新的虚拟机
使用本地光盘或镜像,需要拷贝镜像到虚拟机中,点击Forward
从本地磁盘选择镜像
选择镜像的位置,点击open
选择完成之后点击Forward
设置内存和cpu
设置磁盘大小,注意这里不是创建物理磁盘,而是虚拟磁盘,后边会说到
设置虚拟机名称,点击finish
emmm
网络的配置
1.本机需配置网桥br0
[root@server ~]# nmcli connection add con-name br0 ifname br0 type bridge
[root@server ~]# nmcli connection modify br0 ipv4.addresses 192.168.10.10/24 ipv4.method manual connection.autoconnect yes
2.将本机的一个网卡eno50332216桥接到br0
[root@server ~]# nmcli connection add con-name br0-port0 ifname eno50332216 type bridge-slave master br0
3.将虚拟机的网卡桥接到br0
4.虚拟机的IP地址设置为和网桥地址同一网段
[root@kvm-vmx 桌面]# nmcli connection modify eth0 ipv4.addresses 192.168.10.100/24 ipv4.method manual connection.autoconnect yes
[root@kvm-vmx 桌面]# ifdown eth0
[root@kvm-vmx 桌面]# ifup eth0
5.本机上ssh登陆虚拟机
[root@server ~]# ssh root@192.168.10.100
root@192.168.10.100's password:
Last login: Sun Dec 1 14:26:53 2019
[root@kvm-vmx ~]#
虚拟机中设置桥接模式,只能桥接到本机的一个物理网卡上,比如桥接到br0底下的eno67109440
Windows中的VMware虚拟机也一样,只能桥接到一张物理网卡上。
Linux中网桥下可以有多张网卡,被虚拟化为端口,它们的IP及MAC都不再可用,且它们被设置为接收任何包,最终由bridge设备来决定数据包的去向,网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据链路层实现的,上层不需要关心桥接的细节。因此这里的IP地址是配给br0,而不是br0底下的网卡(端口)。
删除虚拟机
注意这里的圈出来的地方,我们可以查看一下这个文件夹
[root@server ~]# ll -h /var/lib/libvirt/images/
total 7.8G
-rw-------. 1 root root 9.1G Dec 1 12:40 rhel7.1-2.qcow2
-rw-r--r--. 1 root root 3.9G Dec 1 03:52 rhel7.1-clone.qcow2
-rw-------. 1 root root 8.1G Dec 1 03:52 rhel7.1.qcow2
这里就是存放虚拟机虚拟磁盘的位置,和在Windows上存放VMware虚拟机一个道理。
并且此时有可能并没有真正删除虚拟机文件,还需要删除这个文件
[root@server ~]# rm -f /var/lib/libvirt/images/rhel7.1-2.qcow2
查看运行的虚拟机
[root@server ~]# virsh list --all
Id Name State
----------------------------------------------------
- rhel7.1 shut off
- rhel7.1-clone shut off
四、命令行界面安装虚拟机
准备一个分区来安装虚拟机
[root@server ~]# lsblk | grep sdb
sdb 8:16 0 3G 0 disk
准备一个桥接网络
[root@server ~]# nmcli connection add con-name br0 ifname br0 type bridge
[root@server ~]# nmcli connection modify br0 ipv4.addresses 192.168.10.10/24 ipv4.method manual connection.autoconnect yes
[root@server ~]# nmcli connection add con-name br0-port0 ifname eno50332216 type bridge-slave master br0
安装命令行工具包
[root@server ~]# yum install virt-install -y
开始安装
[root@server ~]# virt-install --name test --ram 1024 --vcpus=1 --disk path=/dev/sdb --check path_in_use=off --graphics spice --location=/iso/rhel-server-7.2-x86_64-dvd.iso --network bridge=br0 --os-type=linux --os-variant=rhel7
参数说明
参数 | 说明 |
---|---|
–name=NAME | 虚拟机名称,需全局惟一 |
–ram=MEMORY | 虚拟机内在大小,单位为MB |
–vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#] | VCPU个数及相关配置 |
–disk=DISKOPTS | 指定存储设备及其属性;例如: --disk path=/dev/sda5。 |
–check path_in_use=off | 如果已将该磁盘划分给其他VM,则不弹出警告。 |
–graphics TYPE,opt1=val1,opt2=val2 | 指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机启动后对其进行访问的接口,通常不用选定它 |
–location=LOCATION | 安装源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub |
–network=NETWORK,opt1=val1,opt2=val2 | 将虚拟机连入宿主机的网络中,其中NETWORK可以为 |
bridge=BRIDGE:连接至名为“BRIDEG”的桥设备 | |
network=NAME:连接至名为“NAME”的网络 | |
–os-variant | 优化性能,通常不需要 |
安装完成后会到下面的界面
virsh常用命令
参数 | 说明 |
---|---|
virsh --help | 查看命令帮忙 |
virsh list | 显示正在运行的虚拟机 |
virsh list --all | 显示所有的虚拟机 |
virsh start vm-node1 | 启动vm-node1虚拟机 |
virsh shutdown vm-node1 | 关闭vm-node1虚拟机 |
virsh destroy vm-node1 | 虚拟机vm-node1强制断电 |
virsh suspend vm-node1 | 挂起vm-node1虚拟机 |
virsh resume vm-node1 | 恢复挂起的虚拟机 |
virsh undefine vm-node1 | 删除虚拟机,慎用 |
virsh dominfo vm-node1 | 查看虚拟机的配置信息 |
virsh domiflist | 查看网卡配置信息 |
virsh domblklist vm-node1 | 查看该虚拟机的磁盘位置 |
virsh edit vm-node1 | 修改vm-node1的xml配置文件 |
virsh dumpxml vm-node1 | 查看KVM虚拟机当前配置 |
virsh dumpxml vm-node1 > vm-node1.bak.xml | 备份vm-node1虚拟机的xml文件,原文件默认路径/etc/libvirt/qemu/vm-node1.xml |
virsh autostart vm-node1 | KVM物理机开机自启动虚拟机,配置后会在此目录生成配置文件/etc/libvirt/qemu/autostart/vm-node1.xml |
virsh autostart --disable vm-node1 | 取消开机自启动 |