[步骤] CentOS&RHEL 网络设置 (通过网卡文件设置 IP 地址、网关和 DNS)

步骤目录:

步骤一:修改网卡配置文件

步骤二:启动网卡
2.1 如果系统版本是 CentOS 7 & RHEL 7 及以下的启动方法
2.2 如果系统版本是 CentOS 8 & RHEL 8 及以上的启动方法

步骤三:查看新网卡的 IP 地址

具体的操作步骤:

步骤一:修改网卡配置文件

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

将全部内容修改如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=839428e5-45c0-4dc7-933d-08f3bcf11056
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.11.111
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=8.8.8.8
DNS2=114.114.114.114


补充:这里以:
1) 静态 IP 地址
2) 网卡名称是 eth0
3) 网卡 UUID 是 839428e5-45c0-4dc7-933d-08f3bcf11056
4) 开机启动
5) IP 地址是 192.168.11.111
6) 子网掩码是 255.255.255.0
7) 网关是 192.168.11.1
8) 第一个 DNS 是 8.8.8.8
9) 第二个 DNS 是 114.114.114.114
为例

步骤二:启动网卡
2.1 如果系统版本是 CentOS 7 & RHEL 7 及以下的启动方法

# ifup eth0

或者:

# service network restart

2.2 如果系统版本是 CentOS 8 & RHEL 8 及以上的启动方法

# nmcli connection down eth0
# nmcli connection up eth0

或者:

# reboot

步骤三:查看新网卡的 IP 地址

# ip a s

[工具] Shell 批量克隆 KVM 虚拟机 (中文版)

注意:

在克隆 KVM 虚拟机之前要先安装 KVM 、创建 KVM 虚拟网络和 KVM 模板机

介绍:

作者:朱明宇
名称:批量克隆 KVM 虚拟机(中文版)
作用:批量克隆 KVM 虚拟机(中文版)

使用方法:
1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量:
1. templatedisk=”/var/lib/libvirt/images/template-centos-8-10g.qcow2″ #模板机硬盘文件
2. templatexml=”/etc/libvirt/qemu/template-centos-8-10g.xml” #模板机 xml 文件
3. templatename=”template-centos-8″ #模板机在 KVM 域中的名称
4. newpath=”/var/lib/libvirt/images/” #新模版机硬盘文件目录

注意:
1. 在执行此脚本之前要先安装 KVM
2. 在执行此脚本之前要先准备好模板机的硬盘文件和 xml 文件
3. 请以 root 的权限执行次脚本

脚本:

#!/bin/bash

####################### Separator ########################

templatedisk="/var/lib/libvirt/images/template-centos-8-10g.qcow2"
templatexml="/etc/libvirt/qemu/template-centos-8-10g.xml"
templatename="template-centos-8"
newpath="/var/lib/libvirt/images/"

####################### Separator ########################

echo

mkdir $newpath &> /dev/null

sudo systemctl start libvirtd &> /dev/null
if [ $? -ne 0 ];then
	echo
	echo -e "\033[31m你没有安装 KVM 或者你没有以 root 权限执行次脚本,脚本无法执行\033[0m"
	exit
fi

ls $templatedisk &> /dev/null
if [ $? -ne 0 ];then
        echo
        echo -e "\033[31m模版机硬盘文件不存在,脚本无法执行\033[0m"
        exit
fi

ls $templatexml &> /dev/null
if [ $? -ne 0 ];then
        echo
        echo -e "\033[31m模版机配置文件不存在,脚本无法执行\033[0m"
        exit
fi

sudo virsh destroy $templatename &> /dev/null
sudo virt-sysprep -d $templatename &> /dev/null
dnet=`sudo virsh net-list | sed -n 3p  | awk '{print $1}'`

read -p "将要克隆虚拟机,单独克隆一台请输入 1,批量克隆请输入任意其他字符 " cloneway
if [ ! $cloneway ];then
	echo
	echo -e "\033[31m你没有输入任何值,立刻退出\033[0m"
	exit
fi

if [ $cloneway == 1 ];then
	read -p "要克隆产生的主机名,没有默认值必须输入一个 " onename

	echo $onename | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m要克隆产生的主机名 '$onename' 不能有空格,停止克隆\033[0m"
                exit
        fi

        if [ ! $onename ];then
		echo
                echo -e "\033[31m你没有输入要克隆产生的主机名,停止克隆\033[0m"
                exit
        fi

	sudo virsh list --all | egrep -w $onename &> /dev/null
        if [ $? -eq 0 ];then
		echo
                echo -e "\033[31m要克隆产生的主机名 '$onename' 已经存在了,停止克隆\033[0m"
                exit
        fi

        read -p "要克隆的主机所属的虚拟网络,直接回车则是选择已创建的网络中排名最靠前的 $dnet " net

        echo $net | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m网络名 '$net' 不能有空格,停止克隆\033[0m"
                exit
        fi

	read -p "要克隆产生的主机处理器核心数,请只输入数字,最小为 1,单位个,直接回车则是使用默认值 1 " cpu

	echo $cpu | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m处理器核心数 '$cpu' 不能有空格,停止克隆\033[0m"
                exit
        fi

	read -p "要克隆产生的主机内存大小,请只输入数字,单位 K,直接回车则是使用默认值 1048576 " mem

        echo $mem | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m内存大小 '$mem' 不能有空格,停止克隆\033[0m"
                exit
        fi

	read -p "要克隆产生的主机硬盘大小,请只输入数字,单位 G,直接回车则是使用默认值 10 " disk

        echo $disk | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m硬盘大小 '$disk' 不能有空格,停止克隆\033[0m"
                exit
        fi

	echo
	echo "名称:"
	echo "使用主机名 '$onename'"

else
	read -p "要批量克隆产生的主机名的前缀名称,没有默认值必须输入一个 " name

	echo $name | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m要批量克隆产生的主机名前缀 '$name' 不能有空格,停止克隆\033[0m"
                exit
        fi


        if [ ! $name ];then
		echo
                echo -e "\033[31m你没有输入要批量克隆产生的主机名前缀,停止克隆\033[0m"
                exit
        fi

	read -p "要批量克隆产生的主机名后缀起始编号,没有默认值必须输入一个,请只输入数字 " snum

        if [ ! $snum ];then
		echo
                echo -e "\033[31m你没有输入要批量克隆产生的主机名后缀起始编号,停止克隆\033[0m"
                exit
        fi

        echo $snum | grep '\-' &> /dev/null
        if [ $? -eq 0 ];then
		snum=${snum##*-}
                echo -e "\033[33m你输入的要批量克隆产生的主机名后缀起始编号可能是一个负数,将只使用整数部分 $snum\033[0m"
        fi

        echo $snum | grep '\.' &> /dev/null
        if [ $? -eq 0 ];then
                snum=${snum%%.*}
                echo -e "\033[33m你输入的要批量克隆产生的主机名后缀起始编号可能是一个小数,将只使用数字部分 $snum\033[0m"
        fi

        let snum+0 &> /dev/null
        if [ $? -ne 0 ];then
                echo
                echo -e "\033[31m你输入的要批量克隆产生的主机名后缀起始编号 $snum 不是数字,无法克隆\033[0m"
        exit
        fi

	read -p "要批量克隆产生的主机名后缀结束编号,没有默认值必须输入一个,请只输入数字 " enum

        if [ ! $enum ];then
                echo -e "\033[31m你没有输入要批量克隆产生的主机名后缀结束编号,停止克隆\033[0m"
        fi

	echo $enum | grep '\-' &> /dev/null
        if [ $? -eq 0 ];then
                enum=${enum##*-}
                echo -e "\033[33m你输入的要批量克隆产生的主机名后缀结束编号可能是一个负数,将只使用数字部分 $enum\033[0m"
        fi

        echo $enum | grep '\.' &> /dev/null
        if [ $? -eq 0 ];then
                enum=${enum%%.*}
                echo -e "\033[33m你输入的要批量克隆产生的主机名后缀结束编号可能是一个小数,将只使用整数部分 $enum\033[0m"
        fi

        let enum+0 &> /dev/null
        if [ $? -ne 0 ];then
                echo -e "\033[31m你输入的要批量克隆产生的主机名后缀结束编号 $enum 不是数字,无法克隆\033[0m"
                exit
        fi

        read -p "要批量克隆的主机所属的虚拟网络,直接回车则是选择已创建的网络中排名最靠前的 $dnet " net

        echo $net | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m网络名 '$net' 不能有空格,停止克隆\033[0m"
                exit
        fi

	read -p "要批量克隆产生的主机处理器核心数,请只输入数字,最小为 1,单位个,直接回车则是使用默认值 1 " cpu

        echo $cpu | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m处理器核心数 '$cpu' 不能有空格,停止克隆\033[0m"
                exit
        fi

	read -p "要批量克隆产生的主机内存大小,请只输入数字,单位 K,直接回车则是使用默认值 1048576 " mem

        echo $mem | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m内存大小 '$mem' 不能有空格,停止克隆\033[0m"
                exit
        fi

	read -p "要批量克隆产生的主机硬盘大小,请只输入数字,单位 G,直接回车则是使用默认值 10 " disk
	
        echo $disk | grep '\ ' &> /dev/null
        if [ $? -eq 0 ];then
                echo
                echo -e "\033[31m硬盘大小 '$disk' 不能有空格,停止克隆\033[0m"
                exit
        fi
        
	echo
	echo "名称:"
	for i in `seq $snum $enum`
	do
	sudo virsh list --all | egrep -w $name$i &> /dev/null
	if [ $? -eq 0 ];then
		echo -e "\033[33m使用主机名 '$name$i' ,已经存在了,将跳过不克隆它\033[0m"
	else
		echo "使用主机名 '$name$i' "
	fi
        done
fi

echo

echo "网络:"

sudo virsh net-list | grep $net &> /dev/null
if [ $? -eq 0 ];then
        echo "使用网络 $net"
fi

if [ ! $net ];then
        net=`sudo virsh net-list | sed -n 3p  | awk '{print $1}'`
	echo -e "\033[33m你没有输入网络,将使用默认网络 $net\033[0m"
	echo "使用网络 $net"
fi

sudo virsh net-list | grep $net &> /dev/null
if [ $? -ne 0 ];then
        net=`sudo virsh net-list | sed -n 3p  | awk '{print $1}'`
        echo -e "\033[33m你输入的要克隆主机的所属的网络不存在,将使用默认网络 $net\033[0m"
	echo "使用网络 $net"
fi

echo

echo "处理器:"

if [ ! $cpu ];then
	cpu=1
	echo -e "\033[33m你没有输入处理器核心数,将使用默认处理器核心数 1\033[0m"
else

        echo $cpu | grep '\-' &> /dev/null
        if [ $? -eq 0 ];then
                cpu=${cpu##*-}
                echo -e "\033[33m你输入的处理器核心数可能是一个负数,将只使用数字部分 $cpu\033[0m"
        fi

        echo $cpu | grep '\.' &> /dev/null
        if [ $? -eq 0 ];then
                cpu=${cpu%%.*}
                echo -e "\033[33m你输入的处理器核心数可能是一个小数,将只使用整数部分 $cpu\033[0m"
        fi

	let cpu=cpu+0 &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[33m你输入的处理器核心数不是数字,将使用默认值 1\033[0m"
                cpu=1
	fi

	if [ $cpu -lt 1 ];then
                echo -e "\033[33m你输入的处理器核心数小于 1,将使用默认值 1\033[0m"
		cpu=1
	fi
fi

echo "处理器核心数 $cpu"

echo

echo "内存:"

if [ ! $mem ];then
	mem=1048576
        echo -e "\033[33m你没有输入内存大小,将使用默认内存大小 1048576 K\033[0m"

else

        echo $mem | grep '\-' &> /dev/null
        if [ $? -eq 0 ];then
                mem=${mem##*-}
                echo -e "\033[33m你输入的内存大小可能是一个负数,将只使用数字部分 $mem\033[0m"
        fi

        echo $mem | grep '\.' &> /dev/null
        if [ $? -eq 0 ];then
                mem=${mem%%.*}
                echo -e "\033[33m你输入的内存大小可能是一个小数,将只使用整数部分 $mem\033[0m"
        fi

	let mem=mem+0 &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[33m你输入的内存大小不是数字,将使用默认值 1048576\033[0m"
                mem=1048576
	fi

	if [ $mem -lt 1048576 ];then
                echo -e "\033[33m你输入的内存大小小于 1048576,将使用默认值 1048576\033[0m"
		mem=1048576
	fi
fi

echo "内存大小 $mem K"

echo

echo "硬盘:"

if [ ! $disk ];then
	disk=10
        echo -e "\033[33m你没有输入硬盘大小,将使用默认硬盘大小 10 G\033[0m"

else

        echo $disk | grep '\-' &> /dev/null
        if [ $? -eq 0 ];then
                disk=${disk##*-}
                echo -e "\033[33m你输入的硬盘大小可能是一个负数,将只使用数字部分 $disk\033[0m"
        fi

        echo $disk | grep '\.' &> /dev/null
        if [ $? -eq 0 ];then
                disk=${disk%%.*}
                echo -e "\033[33m你输入的硬盘大小可能是一个小数,将只使用整数部分 $disk\033[0m"
        fi

	let disk=disk+0 &> /dev/null
	if [ $? -ne 0 ];then
		echo -e "\033[33m你输入的硬盘大小不是数字,将使用默认值 10\033[0m"
	fi

	if [ $disk -lt 10 ];then
		echo -e "\033[33m你输入的硬盘大小小于 10,将使用默认值 10\033[0m"
		disk=10
	fi
fi

echo "硬盘大小 $disk G"

echo

echo "备注(可能没有任何信息):"

if [ $cloneway -eq 1 ];then
	sudo qemu-img create -f qcow2 -b $templatedisk $newpath$onename.qcow2 ${disk}G &> /dev/null
	sudo cp $templatexml /etc/libvirt/qemu/$onename.xml
	sudo sed -i "/uuid/d" /etc/libvirt/qemu/$onename.xml
	sudo sed -i "/mac address/d" /etc/libvirt/qemu/$onename.xml
	sudo sed -i "s:<name>.*</name>:<name>$onename</name>:" /etc/libvirt/qemu/$onename.xml
	sudo sed -i "s:<source file=.*/>:<source file=\'$newpath$onename.qcow2\'/>:" /etc/libvirt/qemu/$onename.xml
	sudo sed -i "s:<vcpu placement='static'>.*</vcpu>:<vcpu placement='static'>$cpu</vcpu>:" /etc/libvirt/qemu/$onename.xml
	sudo sed -i "s:.*</memory>:<memory unit='KB'>$mem</memory>:" /etc/libvirt/qemu/$onename.xml
	sudo sed -i "s:.*</currentMemory>:<currentMemory unit='KB'>$mem</currentMemory>:" /etc/libvirt/qemu/$onename.xml
        sudo sed -i "s:<source network=.*:<source network=\'$net\'/>:" /etc/libvirt/qemu/$onename.xml
	sudo virsh define /etc/libvirt/qemu/$onename.xml &> /dev/null
        sudo virsh start $onename &> /dev/null
	echo
	sudo virsh list --all
else
	for i in `seq $snum $enum`
	do
                sudo virsh list --all | egrep -w $name$i &> /dev/null
                if [ $? -eq 0 ];then
		      echo -e "\033[33m$name$i 没有被克隆\033[0m"
	       	      continue
                fi
		sudo qemu-img create -f qcow2 -b $templatedisk $newpath$name$i.qcow2 $[disk]G &> /dev/null
		sudo cp $templatexml /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "/uuid/d" /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "/mac address/d" /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "s:<name>.*</name>:<name>$name$i</name>:" /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "s:<source file=.*/>:<source file=\'$newpath$name$i.qcow2\'/>:" /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "s:<vcpu placement='static'>.*</vcpu>:<vcpu placement='static'>$cpu</vcpu>:" /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "s:.*</memory>:<memory unit='KB'>$mem</memory>:" /etc/libvirt/qemu/$name$i.xml
		sudo sed -i "s:.*</currentMemory>:<currentMemory unit='KB'>$mem</currentMemory>:" /etc/libvirt/qemu/$name$i.xml
                sudo sed -i "s:<source network=.*:<source network=\'$net\'/>:" /etc/libvirt/qemu/$name$i.xml
	        sudo virsh define /etc/libvirt/qemu/$name$i.xml &> /dev/null
                sudo virsh start $name$i &> /dev/null
      done
      echo
      sudo virsh list --all
fi

[步骤] KVM 的安装

步骤一:系统环境要求

服务器系统要配置好可用的软件源

步骤二:安装 KVM
2.1 CentOS&RHEL 安装 KVM

# yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu virt-install virt-manager virt-viewer virt-v2v

2.2 openSUSE&SUSE 安装 KVM

# zypper in -t pattern kvm_server
# zypper in -t pattern kvm_tools

步骤三:启动 KVM

# systemctl start libvirtd-manager

步骤四:使用 KVM

# virt-manager


补充:
1) qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu 是必选安装项
2) virt-install(虚拟机命令行安装器) virt-manager(虚拟机图形界面安装和管理器) virt-v2v(虚拟机导入器) 是可选安装项

[步骤] KVM 虚拟机模板的创建 (CentOS 7 版)

注意:

在创建 KVM 虚拟机之前要先安装 KVM 并创建 KVM 虚拟网络

软件准备:

在 CentOS 官网上下载安装系统所需要的镜像:

https://centos.org/download/

正文:

步骤目录:

步骤一:创建 KVM 虚拟机模板的目的

步骤二:为这个虚拟机创建硬盘文件 template_centos_7_10g.qcow2
2.1 创建硬盘文件 template_centos_7_10g.qcow2
2.2 确认硬盘文件 template_centos_7_10g.qcow2 已创建

步骤三:使用 KVM 和刚刚创建的硬盘文件新安装一台虚拟机
3.1 启动 KVM 的 virt-manager
3.2 在 virt-manager 上的左上角点击文件之后点击“新建虚拟机”
3.2.1 选择以本地安装介质的方式安装系统
3.2.2 选择安装系统的系统镜像
3.2.3 设置内存大小和处理器数量
3.2.4 选择用刚刚创建的硬盘文件来安装系统
3.2.5 给虚拟机命名为 “template_centos_7_10g” 并选择虚拟网络 “vlan001”
3.2.6 开始安装系统
3.2.7 选择系统语言
3.2.8 之后进行系统配置界面
3.2.8.1 通过 “INSTALLATION DESTINATION” 对硬盘进行分区
3.2.8.2 取消 “KDUMP”
3.2.9 之后点击右下角的 “Begin installation”
3.2.10 在安装的过程中设置 root 密码,安装完成后重启
3.2.11 在安装系统的过程中需要注意的内容总结

步骤四:进入新创建虚拟机修改配置
4.1 修改网卡个性化设置
4.1.1 修改网卡配置文件
4.1.2 使修改的网卡配置生效
4.2 禁用 selinux
4.3 禁用空路由
4.4 添加 Console 配置
4.4.1 修改 grub 内核配置文件
4.4.2 使修改的 grub 内核配置生效
4.5 将系统自动挂载的硬盘从使用 UUID 换成硬件路径
4.5.1 查看根分区的 UUID
4.5.2 在自动挂载文件里将根分区的 UUID 换成硬件路径
4.6 删除不用的程序
4.7 配置虚拟系统的 yum 源
4.7.1 备份旧 yum 源
4.7.1.1 创建备份目录
4.7.1.2 备份旧 yum 源
4.7.2 创建新的 yum 源文件
4.7.3 删除旧的 yum 源数据
4.7.4 刷新新的 yum 源
4.8 对虚拟系统进行升级
4.9 进行分区扩展
4.9.1 安装分区扩展软件
4.9.2 给开机自启配置文件相应的权限
4.9.3 设置开机自动扩容根目录
4.10 修改虚拟机系统的名称
4.11 启用 serial 服务实现通过 virsh console 命令控制虚拟机
4.12 清除虚拟系统的历史命令
4.13 关闭虚拟机

步骤五:在真机上对虚拟机进行清理优化

步骤六:此时就可以将此虚拟机的硬件文件作为模块批量克隆虚拟机了

具体的操作步骤:

步骤一:理解创建 KVM 虚拟机模板的目的

主要用于批量克隆出新的 KVM 机器,节约创建新虚拟机的时间

步骤二:为这个虚拟机创建硬盘文件 template_centos_7_10g.qcow2
2.1 创建硬盘文件 template_centos_7_10g.qcow2

(只在真机上执行以下步骤)

# qemu-img create -f qcow2 /var/lib/libvirt/images/template_centos_7_10g.qcow2 10G

2.2 确认硬盘文件 template_centos_7_10g.qcow2 已创建

(只在真机上执行以下步骤)

# ls /var/lib/libvirt/images/ | grep template_centos_7_10g.qcow2

步骤三:使用 KVM 和刚刚创建的硬盘文件新安装一台虚拟机
3.1 启动 KVM 的 virt-manager

(只在真机上执行以下步骤)

# virt-manager

3.2 在 virt-manager 上的左上角点击文件之后 “点击新建虚拟机”

(只在真机上执行以下步骤)

(步骤略)

3.2.1 选择以本地安装介质的方式安装系统

(只在真机上执行以下步骤)

(图:1)

3.2.2 选择安装系统的系统镜像

(只在真机上执行以下步骤)

(图:2)

3.2.3 设置内存大小和处理器数量

(只在真机上执行以下步骤)
(图:3)

3.2.4 选择用刚刚创建的硬盘文件来安装系统

(只在真机上执行以下步骤)

(图:4)

3.2.5 给虚拟机命名为 “template_centos_7_10g” 并选择虚拟网络 “vlan001”

(注意:虚拟网络必须提前创建好)

(只在真机上执行以下步骤)

(图:5)

3.2.6 开始安装系统

(只在真机上执行以下步骤)

(图:6)

3.2.7 选择系统语言

(只在真机上执行以下步骤)

(图:7)

3.2.8 之后进行系统配置界面

(只在真机上执行以下步骤)

需要手动配置的地方有两个:
1) “INSTALLATION DESTINATION”
2) “KDUMP”
分别点击以后就可以配置了

3.2.8.1 通过 “INSTALLATION DESTINATION” 对硬盘进行分区

(只在真机上执行以下步骤)

(补充:完成后点击左上角的 “DONE”)

(注意:只分一个分区,只设置一个挂载点挂载到根,使用标准硬盘类型,硬盘格式设置为 XFS)

(图:8)
(图:9)

3.2.8.2 取消 “KDUMP”

(只在真机上执行以下步骤)

(补充:完成后点击左上角的 “DONE”)

(图:10)

3.2.9 设置完成之后点击右下角的 “Begin installation”

(只在真机上执行以下步骤)

(图:11)

3.2.10 在安装的过程中设置 root 密码,安装完成后重启

(只在真机上执行以下步骤)

(图:12)

3.2.11 在安装系统的过程中需要注意的内容总结

1) 一定要使用刚刚创建的 /var/lib/libvirt/images/template_centos_7_10g.qcow2 作为安装虚拟机的硬件文件
2) 虚拟机网络 “vlan001” 要提前创建好
3) 只分一个分区,只设置一个挂载点挂载到根,使用标准硬盘,硬盘格式是 XFS
4) 取消 “KDUMP”

步骤四:进入新创建虚拟机修改配置
4.1 修改网卡个性化设置
4.1.1 修改网卡配置文件

(只在虚拟机上执行以下步骤)

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

将全部内容进行如下修改:

BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet

4.1.2 使修改的网卡配置生效

(只在虚拟机上执行以下步骤)

# service network restart

4.2 禁用 selinux

(只在虚拟机上执行以下步骤)

# vi /etc/selinux/config

将全部内容进行如下修改:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

4.3 禁用空路由

(只在虚拟机上执行以下步骤)

# vi /etc/sysconfig/network

将全部内容修改如下:

# Created by anaconda
NOZEROCONF="yes"

4.4 添加 Console 配置
4.4.1 修改 grub 内核配置文件

(只在虚拟机上执行以下步骤)

# vi /etc/default/grub

将全部内容修改如下:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --unit=1 --speed=115200"
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
GRUB_DISABLE_RECOVERY="true"

4.4.2 使修改的 grub 内核配置生效

(只在虚拟机上执行以下步骤)

# grub2-mkconfig -o grub

4.5 将系统自动挂载的硬盘从使用 UUID 换成硬件路径

(只在虚拟机上执行以下步骤)

# blkid
/dev/vda1: UUID="84ccf593-a924-4949-b7ef-584be43deef5" TYPE="xfs"

(补充:这里的 UUID 是: 84ccf593-a924-4949-b7ef-584be43deef5)

# vi /etc/fstab

将以下内容:

......
UUID=84ccf593-a924-4949-b7ef-584be43deef5 /                   xfs     defaults        0 0

(补充:这里的 UUID 是: 84ccf593-a924-4949-b7ef-584be43deef5)

修改为:

......
/dev/vda1 /                   xfs     defaults        0 0

4.6 删除不用的程序

(只在虚拟机上执行以下步骤)

# yum -y remove NetworkManager-* firewalld-* python-firewall

4.7 配置虚拟系统的 yum 源
4.7.1 备份旧 yum 源
4.7.1.1 创建备份目录

(只在虚拟机上执行以下步骤)

# mkdir /etc/yum.repos.d/backup

4.7.1.2 备份旧 yum 源

(只在虚拟机上执行以下步骤)

# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup

4.7.2 创建新的 yum 源文件

(只在虚拟机上执行以下步骤)

# vi /etc/yum.repos.d/lan.repo

创建以下内容:

[CentOS7]
name=CentOS7
baseurl=http://192.168.100.254/CentOS7/
enabled=1
gpgcheck=0

(注意: http://192.168.1.250/centos7/ 需要根据真实环境的情况进行更改)

4.7.3 删除旧的 yum 源数据

(只在虚拟机上执行以下步骤)

# yum clean all

4.7.4 刷新新的 yum 源

(只在虚拟机上执行以下步骤)

# yum repolist

4.8 对虚拟系统进行升级

(只在虚拟机上执行以下步骤)

# yum -y update

4.9 进行分区扩展
4.9.1 安装分区扩展软件

(只在虚拟机上执行以下步骤)

# yum install -y cloud-utils-growpart

4.9.2 给开机自启配置文件相应的权限

(只在虚拟机上执行以下步骤)

# chmod 755 /etc/rc.local

4.9.3 设置开机自动扩容根目录

(只在虚拟机上执行以下步骤)

# vi /etc/rc.local

添加以下内容:

/usr/bin/growpart /dev/vda1 
/usr/sbin/xfs_growfs /

4.10 修改虚拟机系统的名称

(只在虚拟机上执行以下步骤)

# vi /etc/hostname

将全部内容修改如下:

template_centos_7_10g

4.11 启用 serial 服务实现通过 virsh console 命令控制虚拟机

(只在虚拟机上执行以下步骤)

# systemctl start serial-getty@ttyS0
# systemctl enable serial-getty@ttyS0

4.12 清除虚拟系统的历史命令

(只在虚拟机上执行以下步骤)

# history -c

4.13 关闭虚拟机

(只在虚拟机上执行以下步骤)

# poweroff

步骤五:在真机上对虚拟机进行清理优化

(只在真机上执行以下步骤)

# sudo virt-sysprep -d template_centos_7_10g


注意:如果此命令不存在
1) CentOS 系统的话需要安装 libguestfs-tools
2) openSUSE 系统的话需要安装 guestfs-tools

步骤六:此时就可以将此虚拟机的硬件文件作为模块进行批量克隆虚拟机了

(只在真机上执行以下步骤)

[内容] Linux 硬件信息的查看 (CPU、内存、硬盘和其他硬件信息)

内容目录:

内容一:查看 CPU 信息
1.1 查看 CPU 个数(也就是处理的 socket 数)
1.2 查看 CPU 核心数
1.3 查看 CPU 的详细信息

内容二:查看内存大小
2.1 查看内存大小
2.2 查看内存详细信息

内容三:查看硬盘信息

内容四:查看其他硬件的方法
4.1 查看其他所有硬件的方法
4.2 查看某一个硬件的方法

具体的内容:

内容一:查看 CPU 信息
1.1 查看 CPU 个数(也就是处理的 socket 数)

# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

1.2 查看 CPU 核心数

# cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l

1.3 查看 CPU 的详细信息

# lscpu

内容二:查看内存大小
2.1 查看内存大小

# free -m

2.2 查看内存详细信息

# cat /proc/meminfo 

内容三:查看硬盘信息

# lsblk

内容四:查看其他硬件的信息
4.1 查看其他所有硬件的信息

# dmesg

4.2 查看某一个硬件的信息

# dmesg | grep -i mouse

(补充:这里以查看鼠标信息的方法为例)