学习视频 bilibili 搜kvm
自己做个记录,很实用
查看并设置字符集
export LANG="en_US.UTF-8"
yum -y install bridge-utils
cat > /etc/sysconfig/network-scripts/ifcfg-br0 << EOF DEVICE=br0 ONBOOT=yes BOOTPROTO=static NM_CONTROLLED=no IPADDR=10.200.100.11 NETMASK=255.255.255.0 GATEWAY=10.200.100.2 DNS1=223.5.5.5 USERCTL=no TYPE=Bridge EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF TYPE=Ethernet BOOTPROTO=none NAME=eth0 DEVICE=eth0 NM_CONTROLLED=no ONBOOT=yes BRIDGE=br0 EOF
systemctl restart network
egrep '(vmx|svm)' /proc/cpuinfo
yum -y install libvirt*
systemctl start libvirtd systemctl enable libvirtd
echo "<network><name>br0</name><uuid>`uuidgen`</uuid><forward mode='bridge'/><bridge name='br0'/></network>" > /etc/libvirt/qemu/networks/br0.xml
virsh net-define /etc/libvirt/qemu/networks/br0.xml
virsh net-start br0
virsh net-autostart br0
mkdir -p /kvm/image mkdir -p /kvm/iso
virsh pool-define-as kvmimage dir --target "/kvm/image" virsh pool-define-as iso dir --target "/kvm/iso"
virsh pool-start kvmimage virsh pool-start iso
virsh pool-autostart kvmimage virsh pool-autostart iso
yum -y install virt-manager xorg*
重新ssh连接xxx.xx.xx.xx 直到不再出现如下提示
Last login: Tue Jun 25 22:19:59 2019 from 192.168.1.100 /usr/bin/xauth: file /root/.Xauthority does not exist
在xshell 中再次连接宿主机 可以多尝试几次 只到 没有再出现 之类的提示
输入 virt-manager 命令 即可打开图形工具
[root@localhost ~]# virt-manager [root@localhost ~]# libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast
yum -y install mesa-dri-drivers
使用virt-manager安装虚拟机
使用 Xftp 上传ISO
cd /kvm/iso/ ls /kvm/iso









选择 网络 br0 virtIO 磁盘 qcow2 virtIO 大小3G 显示 vnc ens-us 开始安装
安装操作系统 注意
使用 标准分区 文件系统 xfs 全部给根分区 / 标准分区 / 3G xfs 没有 swap 没有 boot
虚拟机名字
centos7.9_temp
虚拟磁盘名字
centos7.9_temp.qcow2
关闭虚拟机 备份 虚拟磁盘
cp /kvm/image/centos7.9_temp.qcow2 /kvm/image/centos7.9_temp.qcow2-bak
备份虚拟机 xml 文件
cp /etc/libvirt/qemu/centos7.9_temp.xml /etc/libvirt/qemu/centos7.9_temp.xml-bak
物理主机 virsh 命令自动补全
yum install -y bash-completion libvirt-bash-completion yum -y install libvirt-client source /usr/share/bash-completion/completions/vsh source /etc/profile
优化模板虚拟机
使之可以使用 virsh console 命令登陆虚拟机
虚拟机里面执行 grubby --update-kernel=ALL --args="console=ttyS0" reboot
物理机执行 virsh console xxx
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=10.200.100.101 PREFIX=24 GATEWAY=10.200.100.2 DNS1=223.5.5.5 EOF
systemc restart network
退出console 使用 ssh 连接配置的ip 地址
退出console ctrl+]
kvm 虚拟机安装
yum install -y acpid systemctl enable acpid
yum install cloud-utils-growpart -y
模板虚拟机内部安装 qga

并且模板虚拟机内部安装
yum -y install qemu-guest-agent systemctl start qemu-guest-agent systemctl enable qemu-guest-agent
测试qga,在宿主机上修改虚拟机的root密码
virsh set-user-password centos7.9_temp --user root --password 123456
在宿主机上,配置虚拟机的ip
先安装
yum -y install libguestfs-tools-c
关闭虚拟机
virsh destroy centos7.9_temp mkdir /tmp/centos7.9_temp
cat > /tmp/centos7.9_temp/ifcfg-eth0 << EOF TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=10.200.100.102 PREFIX=24 GATEWAY=10.200.100.2 DNS1=223.5.5.5 EOF
virt-copy-in -d centos7.9_temp /tmp/centos7.9_temp/ifcfg-eth0 /etc/sysconfig/network-scripts/
开启虚拟机,登录进去确认ip有没有改变
[root@localhost image]# virsh start centos7.9_temp Domain centos7.9_temp started [root@localhost image]# virsh console centos7.9_temp Connected to domain centos7.9_temp Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-1160.el7.x86_64 on an x86_64 centos7_temp login: root Password: Last login: Sat Nov 20 21:29:23 on ttyS0 [root@centos7_temp ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:e9:0d:a1 brd ff:ff:ff:ff:ff:ff inet 10.200.100.102/24 brd 10.200.100.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fee9:da1/64 scope link valid_lft forever preferred_lft forever [root@centos7_temp ~]#
看到虚拟机ip变成
10.200.100.102
kvm虚拟机扩容
宿主机
virsh blockresize --path /kvm/image/centos7.9_temp --size 10G centos7.9_temp
虚拟机
fdisk -l df -lh growpart /dev/vda 1 && partprobe && xfs_growfs /dev/vda1 df -lh
示例
宿主机
[root@localhost image]# virsh blockresize --path /kvm/image/centos7.9_temp --size 8G centos7.9_temp Block device '/kvm/image/centos7.9_temp' is resized
虚拟机
[root@centos7_temp ~]# growpart /dev/vda 1 && partprobe && xfs_growfs /dev/vda1 CHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=20969439 end=20971487 meta-data=/dev/vda1 isize=512 agcount=7, agsize=327616 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=2096891, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 2096891 to 2621179 [root@centos7_temp ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 909M 0 909M 0% /dev tmpfs 919M 0 919M 0% /dev/shm tmpfs 919M 8.6M 911M 1% /run tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/vda1 10G 1.5G 8.6G 15% / tmpfs 155M 0 155M 0% /run/user/0 [root@centos7_temp ~]#
命令行删除虚拟机
[root@localhost image]# virsh destroy centos7.9_temp Domain centos7.9_temp destroyed [root@localhost image]# virsh undefine centos7.9_temp Domain centos7.9_temp has been undefined [root@localhost image]# virsh vol-delete centos7.9_temp centos7.9_temp centos7.9_temp.bak [root@localhost image]# virsh vol-delete centos7.9_temp --pool kvmimage Vol centos7.9_temp deleted
复制原始的备份的模板虚拟机
[root@localhost image]# cp centos7.9_temp.bak centos7.9_temp [root@localhost image]# cd /etc/libvirt/qemu/ [root@localhost qemu]# cp centos7.9_temp.xml.bak centos7.9_temp.xml [root@localhost qemu]# ls centos7.9_temp.xml centos7.9_temp.xml.bak networks [root@localhost qemu]# virsh list --all Id Name State ---------------------------------------------------- [root@localhost qemu]# virsh define /etc/libvirt/qemu/centos7.9_temp.xml Domain centos7.9_temp defined from /etc/libvirt/qemu/centos7.9_temp.xml [root@localhost qemu]# [root@localhost qemu]# [root@localhost qemu]# virsh list --all Id Name State ---------------------------------------------------- - centos7.9_temp shut off
复制xml文件,复制虚拟磁盘文件
[root@localhost qemu]# cp /etc/libvirt/qemu/centos7.9_temp.xml /etc/libvirt/qemu/kvm10.200.100.103.xml [root@localhost qemu]# ls centos7.9_temp.xml centos7.9_temp.xml.bak kvm10.200.100.103.xml networks [root@localhost qemu]# cd /kvm/image/ [root@localhost image]# ls centos7.9_temp centos7.9_temp.bak [root@localhost image]# virsh vol-clone centos7.9_temp --pool kvmimage kvm10.200.100.103 Vol kvm10.200.100.103 cloned from centos7.9_temp [root@localhost image]# virsh vol-resize kvm10.200.100.103 --pool kvmimage --capacity 8G Size of volume 'kvm10.200.100.103' successfully changed to 8G [root@localhost image]# virsh vol-info kvm10.200.100.103 --pool kvmimage Name: kvm10.200.100.103 Type: file Capacity: 8.00 GiB Allocation: 1.59 GiB [root@localhost image]#
修改如下基本内容
name kvm10.200.100.103
uuid
uuidgen
<source file='/kvm/image/kvm10.200.100.103'/>
<mac address='52:54:00:d3:01:ac'/>
echo "52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed -r 's/^(..)(..)(..)(..).*$/\1:\2:\3:\4/')"
virsh define /etc/libvirt/qemu/kvm10.200.100.103.xml
关机状态更改kvm10.200.100.103的ip地址
cat > /tmp/ifcfg-eth0 << EOF TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=10.200.100.103 PREFIX=24 GATEWAY=10.200.100.2 DNS1=223.5.5.5 EOF virt-copy-in -d kvm10.200.100.103 /tmp/ifcfg-eth0 /etc/sysconfig/network-scripts/
virsh start kvm10.200.100.103
登录虚拟机kvm10.200.100.103查看ip地址,正确
[root@localhost qemu]# virsh console kvm10.200.100.103 Connected to domain kvm10.200.100.103 Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-1160.el7.x86_64 on an x86_64 centos7 login: root Password: Last login: Sat Nov 20 22:20:24 on ttyS0 [root@centos7 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:10:52:eb:08 brd ff:ff:ff:ff:ff:ff inet 10.200.100.103/24 brd 10.200.100.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:10ff:fe52:eb08/64 scope link valid_lft forever preferred_lft forever
最后附加一个创建虚拟机脚本,根据自己的环境更改使用
[root@localhost ~]# cat create_vm.sh
#!/bin/bash
images_dir=/letv/kvm/image
xml_dir=/etc/libvirt/qemu
read -p "请输入新建虚拟机名称: " new_kvm
if [ -f "${xml_dir}/${new_kvm}.xml" ];then
echo "${new_kvm} 已存在,部署程序退出..."
exit 1
fi
if [ -f "${images_dir}/${new_kvm}.qcow2" ];then
echo "${new_kvm}.qcow2 已存在,部署程序退出..."
exit 1
fi
virsh vol-clone centos7-1908.qcow2 --pool kvmimage ${new_kvm}.qcow2
read -p "请输入新建虚拟机磁盘大小单位G: " disk_size
echo "开始创建虚拟磁盘"
virsh vol-resize ${new_kvm}.qcow2 --pool kvmimage --capacity $disk_size'G'
read -p "请输入新建虚拟机内存大小单位KB:4G=4194304 8G=8388608 16G=16777216 32G=33554432 : " mem_size
read -p "请输入新建虚拟机cpu核心数 : " core_num
################配置虚拟机模板#######################################################################################################################################################################################
cp ${xml_dir}/centos7-1908.xml ${xml_dir}/${new_kvm}.xml
sed -i "s#.*:.*:.*:.*:.*:.*#<mac address='`MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed -r 's/^(..)(..)(..)(..).*$/\1:\2:\3:\4/')"; echo $MACADDR`'/>#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#<uuid>.*-.*-.*-.*-.*</uuid>#<uuid>`uuidgen`</uuid>#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#centos7-1908#${new_kvm}#g" ${xml_dir}/${new_kvm}.xml
#sed -i "s#mem-size#$mem_size#g" ${xml_dir}/${new_kvm}.xml
#sed -i "s#core-num#$core_num#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#<memory unit='KiB'>2097152</memory>#<memory unit='KiB'>$mem_size</memory>#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#<currentMemory unit='KiB'>2097152</currentMemory>#<currentMemory unit='KiB'>$mem_size</currentMemory>#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#<vcpu placement='static'>2</vcpu>#$<vcpu placement='static'>$core_num</vcpu>#g" ${xml_dir}/${new_kvm}.xml
#######################################################################################################################################################################################################################
virsh define ${xml_dir}/${new_kvm}.xml
virsh autostart ${new_kvm}
echo "创建成功"
read -p "请输入为虚拟机配置的ip: " new_kvm_ip
mkdir /tmp/${new_kvm}
echo "NAME=eth0" > /tmp/${new_kvm}/ifcfg-eth0
echo "DEVICE=eth0" >> /tmp/${new_kvm}/ifcfg-eth0
echo "ONBOOT=yes" >> /tmp/${new_kvm}/ifcfg-eth0
echo "TYPE=Ethernet" >> /tmp/${new_kvm}/ifcfg-eth0
echo "BOOTPROTO=none" >> /tmp/${new_kvm}/ifcfg-eth0
echo "IPADDR=${new_kvm_ip}" >> /tmp/${new_kvm}/ifcfg-eth0
echo "NETMASK=255.255.255.0" >> /tmp/${new_kvm}/ifcfg-eth0
echo "GATEWAY=10.200.100.2" >> /tmp/${new_kvm}/ifcfg-eth0
echo "DNS1=223.5.5.5" >> /tmp/${new_kvm}/ifcfg-eth0
cat /tmp/${new_kvm}/ifcfg-eth0
read -p "请确认您的网卡配置,按y键继续?[y/n]: " eth0_config
if [ ! "${eth0_config}" = "y" ];then
echo "输入错误!"
exit 1
fi
echo "开始配置$new_kvm 的网卡,请稍后......."
virt-copy-in -d $new_kvm /tmp/${new_kvm}/ifcfg-eth0 /etc/sysconfig/network-scripts/
virsh start $new_kvm 1>/dev/null
echo "正在启动虚拟机请稍后....."
sleep 15s
echo "虚拟机启动成功,登录赋值如下命令即可 ssh ${new_kvm_ip}"
rm -rf /tmp/${new_kvm} 2>/dev/null
配置虚拟机模板
sed -i "s#<memory unit='KiB'>2097152</memory>#<memory unit='KiB'>$mem_size</memory>#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#<currentMemory unit='KiB'>2097152</currentMemory>#<currentMemory unit='KiB'>$mem_size</currentMemory>#g" ${xml_dir}/${new_kvm}.xml
sed -i "s#<vcpu placement='static'>2</vcpu>#$<vcpu placement='static'>$core_num</vcpu>#g" ${xml_dir}/${new_kvm}.xml
这几个参数根据自己的模板虚拟机更改
赶紧测试一下吧!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70004783/viewspace-2843238/ ,如需转载,请注明出处,否则将追究法律责任。