有4种安装方式,但是只说说命令行
01 图形方式安装 非常重要 非常简单
02 完全文本模式 现场配置虚拟机的规格 一般适用于不带图形界面的宿主机
03 命令行模式 重中之重 非常常用,模板镜像+配置文件
04 通过飞机驾驶舱安装和管理虚拟机 了解
其实kvm-qemu就是虚拟机,kvm是虚拟机内存与cpu。qemu是虚拟机其他io设备。而libvirt中的virsh是虚拟机的管理工具,可以方便管理虚拟机,例如: virsh list --all 查看所有虚拟机 virsh domiflist +虚拟机查看虚拟机的网络连接
相比之下virsh唯一特别之处可能是可以通过xml文件直接配置虚拟机
virsh define xxx.xml 生成xxx虚拟机
virsh dumpxml xxx 查看xxx虚拟机xml文件
virsh edit xxx 编辑xxx虚拟机xml文件 修改时xml文件只有在关机状态下有效
查看电脑是否支持虚拟化
cat /proc/cpuinfo | egrep ‘vmx|svm’
下载并安装
yum install qemu-kvm qemu-img \
virt-manager \
libvirt libvirt-python libvirt-client \
virt-manager \
virt-install \
virt-viewer -y
qemu-kvm: KVM模块
libvirt: 虚拟管理模块
virt-manager: 图形界面管理虚拟机
virt-install: 虚拟机命令行安装工具
命令行创建虚拟机
首先需要创建镜像文件,镜像文件作为磁盘,你创建什么格式磁盘文件后面就生成什么格式镜像
qemu-img create -f qcow2 test 10G
qemu-system-x86_64 -m 2048 -smp 2 -boot order=cd -cdrom /home/images/CentOS-8.2.2004-x86_64-dvd1.iso -hda /home/test -display vnc=:22
-m 内存
-smp cpu个数
-boot order=cd 启动方式
-cdrom 本地镜像启动
-hda 文件格式
使用libvit包创建虚拟机,两个命令作用一样
virt-install --ram 2048 --vcpus 2 --name test --cdrom=/home/images/CentOS-8.2.2004-x86_64-dvd1.iso --disk /home/test --graphics vnc,port=5900,listen=0.0.0.0
我是使用的时vnc连接,如果出现以下问题:
RFB protocol error:
正常来说,RFB协议会根据网络质量自动调整画面质量。
但如果KVM服务器的VNC服务不能提供该功能或者无法
根据网络质量适配画面质量,就会出现以上错误提示。
我们清楚原因后,解决起来也就很简单了。
在VNC客户端远程主机的属性选项里,选中Options选项卡。
Picture quality画面质量选择
Medium中等质量
注意是大写O
qemu-img conver -f qow2 -O raw /home/test /home/test.raw
-f 文件格式 -O 输出格式
只要创建虚拟机就生成了镜像文件,制作好镜像后,启动镜像文件
qemu-system-x86_64 -m 2048 -smp 2 -drive file=镜像文件,format=镜像格式 -display vnc=:1(端口为5900+1)
(将-drive file=镜像文件,format=镜像格式 替换为 -hda 镜像文件,也能运行,但是会有警告)
虚拟机安装系统后,使用镜像启动,和创建虚拟机的区别就在于不需要启动的iso,不需要设置设置磁盘,因为系统和磁盘都在生成的镜像文件中
# qemu-system-x86_64命令无法找到,没有这个命令需要链接下,举个例子:
ln -s /usr/libexec/qemu-kvm /usr/local/bin/qemu-system-x86_64
我们公司镜像是在这个位置,不一样自己调整吧
使用virsh启动镜像,没试过,但应该是:
修改xml文件的磁盘路径
然后
virsh destroy xxx
vrish create xxx.xml 生成虚拟机,并运行
virsh undefine xxx 即使删除虚拟机,只要镜像文件还在,xml中的配置是该磁盘镜像,就能生成一模一样的虚拟机
创建网卡,centos官方的命令,centos8之后都是用NetWorkManager
原本的eth0网卡与eth0连接
生成一个br0网卡,一个bridge-br0连接
将eth0和br0绑定,生成brdige-slave-eth0连接
将eth0删除
现在将虚拟机与br0连接(virsh attach-interface …),会自动生成tun类型的vnet0网卡,vnet0连接,再执行(virsh attach-interface …),会生成vnet1网卡,vnet1连接
(1) Create a bridge named bridge-br0.
生成一个虚拟网卡,桥类型,名叫br0, 并生成一个连接叫做bridge-br0
[root@host]# nmcli con add type bridge ifname br0
(2) Disable spanning tree protocol (STP)
关掉名为bridge-br0的connection的stp
[root@host]# nmcli con modify bridge-br0 bridge.stp no
(3) Set the IP address, etc. (adjust the parameters appropriately)
设置一系列参数,默认是dhcp,可以跳过
[root@host]# nmcli con modify bridge-br0 ipv4.method manual ipv4.address “192.168.199.100/24” ipv4.gateway “192.168.199.254” ipv4.dns 8.8.8.8 ipv4.dns-search example.com
Note that, in CentOS 7.0, the syntax was ‘ipv4.addresses 192.168.199.100/24 192.168.199.254’. This has been changed in the later minor versions.
(4) Connect the physical port eth0 to the bridge just created.
将物理网卡eth0与桥连接,生成brige-br0的从属连接,名为bridge-slave-eth0
[root@host]# nmcli con add type bridge-slave ifname eth0 master bridge-br0
(5) Delete the physical port and reboot the system immediately as the connection will be lost
[root@host]# nmcli con del enp0s25; reboot
删除名为eth0的连接,官网说dhcp不用删,但是我不删不对
If your host uses dhcp, not static IP, skip steps (3) and (5).
查看当前机器的网卡
virsh domiflist 虚拟机 查看虚拟机网络连接
virsh dumpxml 虚拟机 > 虚拟机.xml 将当前虚拟机配置xml写入当前文件夹的xml文件
然后删除虚拟机再用新xml创建虚拟机
自动生成的xml文件位于/etc/libvirt/qemu
注意修改xml文件路径参数
先创建磁盘文件,方法和创建镜像文件一样,文件后缀没用,只是为了方便识别
(也能用qemu info 文件名, 查看该文件格式、大小等信息)
qemu craete -f qcow2 test.qcow2 10G
virsh attach-disk 虚拟机 --source test.qcow --target sdc
由于模拟的IDE体系结构,无法将磁盘连接到正在运行的域,会报错“无法热插拔磁盘总线’ide’。”
而你关掉虚拟机又无法运行命令。所以这里使用scsi架构,有了hda和hdb应该是hdc,为了让虚拟机知道是scsi架构所以使用sdc
然后执行
virsh dumpxml 虚拟机名 > /etc/libvirt/qemu/ 虚拟机.xml
virsh define 虚拟机.xml
将运行域的更改跟新到xml文件
也可以修改xml文件
virsh edit 虚拟机
sdb scsi
hdb ide
可以通过修改xml增加ide磁盘,但删除只能备份xml,删除虚拟机,修改备份,
重建虚拟机,其他类型可以在运行是修改
virsh edit 虚拟机
virsh destroy 虚拟机
virsh create 虚拟机.xml