1.1 检查是否支持虚拟化
[root@localhost ~]# grep -Ei 'vmx|svm' /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 invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities 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 invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities 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 invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities 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 invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
1.2 安装KVM
yum install -y virt-* libvirt bridge-utils qemu-img
1.3 添加一块新磁盘并挂载
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 59G 0 part ├─centos-root 253:0 0 36.5G 0 lvm / ├─centos-swap 253:1 0 4.8G 0 lvm [SWAP] └─centos-home 253:2 0 17.8G 0 lvm /home sdb 8:16 0 50G 0 disk sr0 11:0 1 4.4G 0 rom
[root@localhost ~]# mkdir /kvm_data [root@localhost ~]# mount /dev/sd sda sda1 sda2 sdb [root@localhost ~]# mount /dev/sdb /kvm_data/ [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 2.3G 0 2.3G 0% /dev tmpfs 2.3G 0 2.3G 0% /dev/shm tmpfs 2.3G 12M 2.3G 1% /run tmpfs 2.3G 0 2.3G 0% /sys/fs/cgroup /dev/mapper/centos-root 37G 1.8G 35G 5% / /dev/mapper/centos-home 18G 33M 18G 1% /home /dev/sda1 1014M 152M 863M 15% /boot tmpfs 466M 0 466M 0% /run/user/0 /dev/sdb 50G 53M 47G 1% /kvm_data
1.4 配置网卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ls ifcfg-ens33 ifdown-isdn ifup ifup-plip ifup-tunnel ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6 ifdown-ib ifdown-Team ifup-ippp ifup-sit ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0 [root@localhost network-scripts]# ls ifcfg-br0 ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort ifcfg-ens33 ifdown-isdn ifup ifup-plip ifup-tunnel ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6 ifdown-ib ifdown-Team ifup-ippp ifup-sit ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
[root@localhost network-scripts]# cat ifcfg-br0 TYPE=Bridge BOOTPROTO=none NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=IP NETMASK=255.255.255.0 GATEWAY=网关 DNS1=114.114.114.114 DNS2=8.8.8.8 [root@localhost network-scripts]# cat ifcfg-ens33 TYPE=Ethernet BOOTPROTO=none NAME=ens33 DEVICE=ens33 ONBOOT=yes BRIDGE=br0
1.6 启动libvirtd服务
[root@localhost network-scripts]# lsmod|grep kvm kvm_intel 188740 0 kvm 637289 1 kvm_intel irqbypass 13503 1 kvm [root@localhost network-scripts]# systemctl start libvirtd [root@localhost network-scripts]# ps -ef |grep libvirt root 1155 1 0 18:33 ? 00:00:00 /usr/sbin/libvirtd nobody 1991 1 0 18:33 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 1992 1991 0 18:33 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 9179 8553 0 18:44 pts/0 00:00:00 grep --color=auto libvirt [root@localhost network-scripts]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c291eeb98 no ens33 virbr0 8000.52540076af68 yes virbr0-nic
1.7准备镜像上传到tmp目录下
[root@localhost network-scripts]# cd /tmp [root@localhost tmp]# ll 总用量 4601860 -rw-r--r--. 1 root root 4712300544 12月 20 18:47 CentOS-7-x86_64-DVD-2009.iso -rwx------. 1 root root 836 12月 20 15:17 ks-script-uJJd_6 drwx------. 3 root root 17 12月 20 18:33 systemd-private-3a2c856a3a624b8887a63a5cce18c83a-chronyd.service-alPbvy drwx------. 2 root root 6 12月 20 18:27 vmware-root_723-4282236435 drwx------. 2 root root 6 12月 20 18:25 vmware-root_750-2957714542 drwx------. 2 root root 6 12月 20 18:33 vmware-root_762-2998936571 -rw-------. 1 root root 0 12月 20 2021 yum.log [root@localhost tmp]# ls CentOS-7-x86_64-DVD-2009.iso ks-script-uJJd_6 systemd-private-3a2c856a3a624b8887a63a5cce18c83a-chronyd.service-alPbvy vmware-root_723-4282236435 vmware-root_750-2957714542 vmware-root_762-2998936571 yum.log
1.8使用virt-install进行CentOS 7的安装
virt-install --name=test --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-2009.iso --disk path=/kvm_data/study01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [x] Time settings (English (United States)) (Asia/Shanghai timezone) 3) [x] Installation source 4) [x] Software selection (Local media) (Minimal Install) 5) [x] Installation Destination 6) [x] Kdump (Automatic partitioning (Kdump is enabled) selected) 8) [x] Root password 7) [ ] Network configuration (Password is set.) (Not connected) 9) [ ] User creation (No user will be created) Please make your choice from above ['q' to quit | 'b' to begin installation | 'r' to refresh]: b #"b"安装 [anaconda] 1:main* 2:shell 3:log 4:storage-lo> Switch tab: Alt+Tab | Help: F1
2.1KVM登录
[root@kvm ~]# virsh list Id 名称 状态 ---------------------------------------------------- 2 test running [root@kvm ~]# virsh console test 连接到域 test 换码符为 ^] [root@localhost ~]#
2.2克隆
[root@kvm ~]# virsh shutdown test #克隆需要关闭虚拟机 域 test 被关闭 [root@kvm ~]# virt-clone --original test --name test02 --file /kvm_data/test02.img 正在分配 'test02.img' | 10 GB 00:00:17 成功克隆 'test02'。 [root@kvm ~]# virsh list Id 名称 状态 ---------------------------------------------------- [root@kvm ~]# virsh start test 域 test 已开始 [root@kvm ~]# virsh start test02 域 test02 已开始 [root@kvm ~]# virsh list Id 名称 状态 ---------------------------------------------------- 3 test running 4 test02 running [root@kvm ~]# ls /etc/libvirt/qemu/ networks test02.xml test.xml
2.3快照管理
[root@kvm ~]# virsh snapshot-create test #创建快照 已生成域快照 1639998942 [root@kvm ~]# virsh snapshot-list test 名称 生成时间 状态 ------------------------------------------------------------ 1639998877 2021-12-20 19:14:37 +0800 running 1639998942 2021-12-20 19:15:42 +0800 running [root@kvm ~]# virsh snapshot-revert test 1639998877 #恢复快照 [root@kvm ~]# virsh snapshot-list test 名称 生成时间 状态 ------------------------------------------------------------ 1639998877 2021-12-20 19:14:37 +0800 running 1639998942 2021-12-20 19:15:42 +0800 running [root@kvm ~]# virsh snapshot-delete test 1639998942 #删除快照 已删除域快照 1639998942 [root@kvm ~]# virsh snapshot-list test 名称 生成时间 状态 ------------------------------------------------------------ 1639998877 2021-12-20 19:14:37 +0800 running
2.4 磁管理
[root@kvm kvm_data]# qemu-img create -f raw /kvm_data/study01.img 2G #创建2G磁盘 Formatting '/kvm_data/study01.img', fmt=raw size=2147483648 [root@kvm kvm_data]# qemu-img info study01.img image: study01.img file format: raw virtual size: 2.0G (2147483648 bytes) disk size: 0 [root@kvm kvm_data]# ls lost+found study01_1.img study01.img test02.img [root@kvm kvm_data]# qemu-img convert -O qcow2 /kvm_data/study01_1.img /kvm_data/study01_1.qcow2 #RAW格式的磁盘转换为qcow2格式 [root@kvm kvm_data]# ls lost+found study01_1.img study01_1.qcow2 study01.img test02.img [root@kvm kvm_data]# qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.raw #将test02转成raw格式 [root@kvm kvm_data]# ls lost+found study01_1.img study01_1.qcow2 study01.img test02_2.raw test02.img
2.5 更改磁盘格式和文件路径,然后启动test02虚拟机
[root@kvm ~]# virsh edit test02 .... <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/kvm_data/test02_2.raw'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> .... [root@kvm ~]# virsh start test02 域 test02 已开始 [root@kvm ~]# ls -l /kvm_data/ 总用量 3360136 drwx------. 2 root root 16384 12月 20 18:35 lost+found -rw-r--r--. 1 root root 2147483648 12月 20 19:21 study01_1.img -rw-r--r--. 1 root root 197120 12月 20 19:25 study01_1.qcow2 -rw-------. 1 qemu qemu 11008081920 12月 20 19:27 study01.img -rw-r--r--. 1 qemu qemu 10737418240 12月 20 19:27 test02_2.raw -rw-------. 1 root root 1752694784 12月 20 19:32 test02.img
2.6 磁盘扩容
[root@kvm ~]# qemu-img info /kvm_data/test02_2.raw image: /kvm_data/test02_2.raw file format: raw virtual size: 12G (12884901888 bytes) disk size: 1.6G [root@kvm ~]# qemu-img resize /kvm_data/test02_2.raw +2G Image resized. [root@kvm ~]# qemu-img info /kvm_data/test02_2.raw image: /kvm_data/test02_2.raw file format: raw virtual size: 14G (15032385536 bytes) disk size: 1.6G
[root@localhost ~]# fdisk -l Disk /dev/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000a50d3 Device Boot Start End Blocks Id System /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 20971519 9436160 8e Linux LVM Disk /dev/mapper/centos-root: 8585 MB, 8585740288 bytes, 16769024 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
[root@localhost ~]# fdisk /dev/vda #使用磁盘 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): Command (m for help): p Disk /dev/vda: 17.2 GB, 17179869184 bytes, 33554432 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000a50d3 Device Boot Start End Blocks Id System /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 20971519 9436160 8e Linux LVM /dev/vda3 20971520 25165823 2097152 83 Linux
2.6
[root@kvm ~]# qemu-img create -f qcow2 /kvm_data/test_2.img 5G Formatting '/kvm_data/test_2.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=of [root@kvm ~]# virsh edit test .... <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/kvm_data/test_2.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> ....
[root@kvm ~]# virsh destroy test #重新启动虚拟机 域 test 被删除 [root@kvm ~]# virsh list Id 名称 状态 ---------------------------------------------------- 8 test02 running [root@kvm ~]# virsh start test 域 test 已开始 [root@kvm ~]# virsh list Id 名称 状态 ---------------------------------------------------- 8 test02 running 9 test running [root@kvm ~]#
3.1 调整CPU 内存 网卡
[root@kvm kvm_data]# virsh dominfo gezi Id: 6 名称: gezi UUID: 4b6a172d-0937-4b17-940a-e7449953765c OS 类型: hvm 状态: running CPU: 1 CPU 时间: 15.8s 最大内存: 1048576 KiB 使用的内存: 524288 KiB 持久: 是 自动启动: 禁用 管理的保存: 否 安全性模式: selinux 安全性 DOI: 0 安全性标签: system_u:system_r:svirt_t:s0:c522,c745 (enforcing) [root@kvm kvm_data]# virsh edit gezi .... <name>gezi</name> <uuid>4b6a172d-0937-4b17-940a-e7449953765c</uuid> <memory unit='KiB'>100000</memory> <currentMemory unit='KiB'>100000</currentMemory> <vcpu placement='static' current='1'>2</vcpu> .... [root@kvm kvm_data]# virsh edit gezi 编辑了域 gezi XML 配置。 [root@kvm kvm_data]# virsh destroy gezi 域 gezi 被删除 [root@kvm kvm_data]# virsh start gezi 域 gezi 已开始 [root@kvm kvm_data]# virsh dominfo gezi Id: 7 名称: gezi UUID: 4b6a172d-0937-4b17-940a-e7449953765c OS 类型: hvm 状态: running CPU: 1 CPU 时间: 5.3s 最大内存: 100352 KiB 使用的内存: 100352 KiB 持久: 是 自动启动: 禁用 管理的保存: 否 安全性模式: selinux 安全性 DOI: 0 安全性标签: system_u:system_r:svirt_t:s0:c176,c365 (enforcing)
[root@kvm kvm_data]# virsh attach-interface gezi --type bridge --source virbr0 #增加网卡 成功附加接口 [root@kvm kvm_data]# virsh domiflist gezi 接口 类型 源 型号 MAC ------------------------------------------------------- vnet1 bridge br0 virtio 52:54:00:a0:4d:f9 vnet2 bridge virbr0 rtl8139 52:54:00:54:3a:bc