KVM虚拟化服务
环境准备
vmware workstation 15
-
linux系统:CentOS-7.6
需要将虚拟机处理器中的虚拟化设置勾上,(需要将虚拟机关机才能选择)
查看CPU是否⽀持VT技术,能够grep出vmx或者svm则表示支持虚拟化
cat /proc/cpuinfo | grep -E 'vmx|svm'
安装KVM
yum install *qemu* *virt* librbd1-devel -y
创建qemu-kvm软链接
ln -sv /usr/libexec/qemu-kvm /usr/bin/
安装libguestfs-tools,用于对kvm虚拟机镜像的管理
yum -y install libguestfs-tools
启动KVM
systemctl start libvirtd
systemctl enable libvirtd
virsh version
Compiled against library: libvirt 4.5.0
Using library: libvirt 4.5.0
Using API: QEMU 4.5.0
Running hypervisor: QEMU 2.12.0
存储池配置
创建存储池目录,配置目录权限
mkdir -p /data/kvm/images
chown root:root /data/kvm/images/
chmod 755 /data/kvm/images/
定义一个存储池并绑定目录,建立基于文件夹的存储池、激活、设置开机启动。
virsh pool-define-as StoragePool --type dir --target /data/kvm/images
virsh pool-build StoragePool
virsh pool-start StoragePool
virsh pool-autostart StoragePool
查看存储池信息
virsh pool-info StoragePool
virsh pool-list
网络配置
先把现在的网卡文件做个备份
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
添加br0桥接配置
vim /etc/sysconfig/network-scripts/ifcfg-br0
添加如下内容,ip,网关根据之前的eth0配置来修改
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.76.222
NETMASK=255.255.240.0
GATEWAY=192.168.64.1
DNS1=114.114.114.144
DNS2=8.8.8.8
eth0网卡修改如下,桥接到br0上。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes"
BRIDGE=br0
重启network服务
systemctl restart NetworkManager
重启libvirtd服务
systemctl restart libvirtd
查看网卡信息
ifconfig
br0: flags=4099 mtu 1500
inet 192.168.76.222 netmask 255.255.240.0 broadcast 192.168.79.255
ether 82:3a:7d:50:b7:cf txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
开启网桥 stp
树协议,防止环路:
brctl stp br0 yes
查看网桥:
brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 yes
virbr0 8000.52540084a956 yes virbr0-nic
创建虚拟机
上传ISO镜像到服务器
ll *.iso
-rwxr-xr-x 1 root root 4712300544 Aug 18 09:08 CentOS-7-x86_64-DVD-2009.iso
创建一个存放虚拟机系统的卷
qemu-img create -f qcow2 /data/kvm/images/centos7.6x86.qcow 20G
Formatting '/data/kvm/images/centos7.6x86.qcow', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16
创建虚拟机 执行的命令如下:
virt-install \
--name centos7.6x86 \
--ram 2048 \
--vcpus 2 \
--os-type linux \
--os-variant rhel7 \
--network bridge=br0,model=virtio \
--disk /data/kvm/images/centos7.6x86.qcow \
--location /home/CentOS-7-x86_64-DVD-2009.iso \
--console pty,target_type=serial \
--nographics \
--extra-args 'console=ttyS0,115200n8 serial'
--name # 设置虚拟机名称
--vcpus # 设置cpu核数
--ram # 设置ram内存,单位MB
--os-variant #操作系统版本
--disk # 安装的磁盘路径
--cdrom # iso文件路径
--network # 使用桥接方式
--force # 禁止命令进入交互式模式,如果有需要回答yes或no选项,则自动回答为yes
--autostart # 虚拟机自动启动
--console pty,target_type=serial #console控制通道
--extra-args #文本输出
等待命令行界面安装虚拟机
1)语言设置 2)时区设置 3)安装源 4)软件包选择
5)系统分区 6)Kdump功能 7)网络配置 8)密码设置
9)创建用户
按“q”退出,按“b”开始安装。必须把带“!”号的都设置好才能开始安装。
稍等一会,显示安装结束,按回车重启系统
重启后输入用户名和密码就可以登录进新创建的虚拟机
使用console连接虚拟机的命令(base为安装虚拟机时指定的名字):
virsh console centos7.6x86
即可进入虚拟机
克隆虚拟机
输入下面命令即可进入KVM控制台操作界面
virsh
或者直接在宿主机执行
查看所有虚拟机
virsh list --all
使用console方式连接虚拟机(base为虚拟机名称)
virsh console centos7.6x86
关机
virsh shutdown centos7.6x86
开机
virsh start centos7.6x86
删除虚拟机
virsh undefine centos7.6x86
克隆虚拟机之前先关闭虚拟机
virsh shutdown centos7.6x86
virt-clone --connect=qemu:///system -o centos7.6x86 -n centos7.6x86-2 -f /var/lib/libvirt/images/centos7.6x86-2.qcow2
Allocating 'centos7.6x86-2.qcow2' | 20 GB 00:02
Clone 'centos7.6x86-2' created successfully.
-o
参数是模板虚拟机的名称
-n
是你克隆后的虚拟机名称
查看虚拟机列表
virsh list --all
Id Name State
----------------------------------------------------
- centos7.6x86 shut off
- centos7.6x86-2 shut off
设置虚拟机CPU数量
virsh edit master
注意:不可以直接用 vi 或者 vim 修改配置文件(
/etc/libvirt/qemu/master.xml
),否则不会生效。
保存后,再重新开机虚拟机,就可以查看到虚拟机的CPU数量了
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
修改虚拟机名称
关闭虚拟机
virsh shutdown centos7.6x86
注:如果虚拟机有快照需要先删除快照!
修改文件名
[root@kvm-1 qemu]# pwd
/etc/libvirt/qemu
[root@kvm-1 qemu]# mv centos7.6x86.xml centos7.xml
修改 name 和 source file 的名字
修改磁盘文件名,默认路径:/var/lib/libvirt/images/
[root@kvm-1 qemu]# cd /data/kvm/images
[root@kvm-1 images]# mv centos7.6x86.qcow centos7.qcow
删除原有的虚拟机
[root@kvm-1 images]# virsh undefine centos7.6x86
使用现有的文件创建虚拟机,其实就是改名
[root@kvm-1 qemu]# cd /etc/libvirt/qemu
[root@kvm-1 qemu]# virsh define centos7.xml