第四周
一、安装配置kvm虚拟机,并创建虚拟机。
1、开启宿主机的CPU虚拟化功能
编辑虚拟机设置--处理器--勾选 虚拟化Intel VT-x/EPT 或AMD-V/RVI(V).
2、验证是否开启虚拟化支持
[root@KVM ~]#grep -Em 1 "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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid 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 cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid movdiri movdir64b avx512_vp2intersect md_clear flush_l1d arch_capabilities
3、安装KVM工具包并设置服务开机自启
[root@KVM ~]#dnf install -y qemu-kvm libvirt virt-manager virt-install virt-viewer
[root@KVM ~]#systemctl start --now libvirtd
[root@KVM ~]#systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enab>
Active: active (running) (thawing) since Mon 2022-04-11 11:57:42 CST; 16s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 2215 (libvirtd)
Tasks: 19 (limit: 32768)
Memory: 42.3M
CGroup: /system.slice/libvirtd.service
├─1371 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l>
├─1372 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --l>
└─2215 /usr/sbin/libvirtd --timeout 120
Apr 11 11:57:42 KVM systemd[1]: Starting Virtualization daemon...
Apr 11 11:57:42 KVM systemd[1]: Started Virtualization daemon.
Apr 11 11:57:42 KVM dnsmasq[1371]: read /etc/hosts - 2 addresses
Apr 11 11:57:42 KVM dnsmasq[1371]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 ad>
Apr 11 11:57:42 KVM dnsmasq-dhcp[1371]: read /var/lib/libvirt/dnsmasq/default.hostsfile
4、准备安装系统的iso相关文件
[root@KVM ~]#mkdir -pv /data/isos
mkdir: created directory '/data'
mkdir: created directory '/data/isos'
[root@KVM ~]#cd /data/isos/
[root@KVM isos]#ls
CentOS-8.3.2011-x86_64-dvd1.iso
5、创建虚拟机从光盘启动并利用kickstart自动安装系统
准备yum仓库和kickstart环境
[root@KVM ~]#yum install -y httpd
[root@KVM ~]#systemctl enable --now httpd
[root@KVM ~]#mkdir -pv /var/www/html/centos8/os/x86_64
[root@KVM ~]#mount /dev/sr0 /var/www/html/centos8/os/x86_64/
[root@KVM ~]#cat /var/www/html/ks/centos8.cfg
ignoredisk --only-use=sda
zerombr
text
reboot
clearpart --all --initlabel
selinux --disabled
firewall --disabled
url --url=http://10.0.0.150/centos8/os/x86_64/
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=centos8.tan.org
rootpw --iscrypted $6$j9YhzDUnQVnxaAk8$qv7rkMcPAEbV5yvwsP666DXWYadd3jYjkA9fpxAo9qYotjGGBUclCGoP1TRvgHBpqgc5n0RypMsPTQnVDcpO01
firstboot --enable
skipx
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
user --name=tan --password=6oUfb/02CWfLb5l8f$sgEZeR7c7DpqfpmFDH6huSmDbW1XQNR4qKl2EPns.gOXqlnAIgv9pTogtFVaDtEpMOC.SWXKYqxfVtd9MCwxb1 --iscrypted --gecos="tan"
autopart --type=lvm
%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
%post
useradd tanl
echo 123456 | passwd --stdin tanl &> /dev/null
%end
#利用virt-install的两项选项实现kickstart安装
#创建磁盘文件
[root@KVM ~]#qemu-img create -f qcow2 /var/lib/libvirt/images/centos8-vm1.qcow2 20G
Formatting '/var/lib/libvirt/images/centos8-vm1.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16
#创建虚拟机
[root@KVM ~]#virt-install --virt-type kvm --name centos8-vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/centos8-vm1.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --location=/data/isos/CentOS-8.3.2011-x86_64-dvd1.iso --extra-args="ks=http://10.0.0.150/ks/centos8.cfg"
#验证宿主机进程
[root@KVM ~]#ps aux|grep qemu-kvm
qemu 3581 189 8.3 3185700 1369156 ? Sl 12:30 10:50 /usr/libexec/qemu-kvm -name guest=centos8-vm1,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-centos8-vm1/master-key.aes -machine pc-i440fx-rhel7.6.0,accel=kvm,usb=off,dump-guest-core=off -cpu Cooperlake,ss=on,hypervisor=on,tsc-adjust=on,avx512ifma=on,sha-ni=on,avx512vbmi=on,umip=on,avx512vbmi2=on,gfni=on,vaes=on,vpclmulqdq=on,avx512bitalg=on,avx512-vpopcntdq=on,md-clear=on,xsaves=on,ibpb=on,amd-ssbd=on,hle=off,rtm=off,avx512-bf16=off,taa-no=off -m 2048 -overcommit mem-lock=off -smp 2,sockets=2,cores=1,threads=1 -uuid 0ee96344-b772-4472-9ebe-b99a4416759f -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=36,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-reboot -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -kernel /var/lib/libvirt/boot/virtinst-_0_vb3ya-vmlinuz -initrd /var/lib/libvirt/boot/virtinst-jou8dx9f-initrd.img -append ks=http://10.0.0.150/ks/centos8.cfg -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x4 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x4.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x4.0x2 -blockdev {"driver":"file","filename":"/var/lib/libvirt/images/centos8-vm1.qcow2","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"driver":"qcow2","file":"libvirt-2-storage","backing":null} -device ide-hd,bus=ide.0,unit=0,drive=libvirt-2-format,id=ide0-0-0,bootindex=1 -blockdev {"driver":"file","filename":"/data/isos/CentOS-8.3.2011-x86_64-dvd1.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"} -device ide-cd,bus=ide.0,unit=1,drive=libvirt-1-format,id=ide0-0-1 -netdev tap,fd=39,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=52:54:00:53:db:58,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 0.0.0.0:0 -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on
root 3791 0.0 0.0 12112 1084 pts/2 S+ 12:36 0:00 grep --color=auto qemu-kvm
#可以修改VNC端口的范围,默认5900-65535
[root@KVM ~]#ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:111 0.0.0.0:*
LISTEN 0 32 192.168.122.1:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 100 127.0.0.1:25 0.0.0.0:*
LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
LISTEN 0 128 127.0.0.1:6011 0.0.0.0:*
LISTEN 0 128 0.0.0.0:39327 0.0.0.0:*
LISTEN 0 1 0.0.0.0:5900 0.0.0.0:*
[root@KVM ~]#grep remote_display_port /etc/libvirt/qemu.conf
#remote_display_port_min = 5900
#remote_display_port_max = 65535
二、实现将虚拟机在vmware esxi主机之间跨主机迁移。
1、修改光盘配置,防止迁移中出现问题。
右键单机虚拟机-->编辑设置-->虚拟机硬件-->CD/DVD驱动器1--移除设备
2、每个ESXi上配置vMotion专用网络,配置同网段地址,可以和esxi地址不同网段
主机--配置--虚拟交换机--添加网络,或者直接点源ESXi主机右键添加网络,选择连接类型--VMkernel网络适配器,选择目标设备--选择现有标准交换机--vSwitch0,端口属性--勾选 vMotion,ipv4设置--使用静态ipv4设置--配置ip地址和子网掩码--完成。
3、执行虚拟机迁移。
在VMware ESXi主机中,选择要迁移的目标虚拟机,选中后右键单机,然后选择迁移。选择迁移类型--更改计算资源和存储,选择目标主机--另一台主机--兼容性检查成功,选择目标主机存储--datastore1-兼容性检查成功,选择网络,选择vMotion优先级--安排优先级高的vMotion(建议),迁移完成。
4、验证迁移后的虚拟机网络通信是否正常。