经常玩linux的朋友,有时候会不会为了创建虚拟机搭建环境而苦恼,接下来所展示的如何在5秒内创建一个可以使用的虚拟机。
实验环境:
[root@luc ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
准备的文件:
rh7_template.img和 rhel7.xml
如果没有两个文件的,可以直接使用下面的文件。
链接: https://pan.baidu.com/s/1ESlqw22wEY9HP2-kCFptpA 密码: etyh
链接: https://pan.baidu.com/s/1rm-sVkd3R7GtdVEyaFqeSQ 密码: myh3
把下载的文件放到/var/lib/libvirt/images/ 并保存为以.开头文件名
[root@luc ~]# mv rh7_template.img /var/lib/libvirt/images/.rh7_template.img
[root@luc ~]# mv rhel7.xml /var/lib/libvirt/images/.rhel7.xml
搭建虚拟环境:
[root@luc ~]# yum -y groups install 虚拟化平台 虚拟化主机 虚拟化客户端
// 真机是中文环境,如果是英文环境就安装 “Virtualization Platform” “Virtualization Host” “Virtualization Client” 每个部分之间要有空格隔开
[root@luc ~]# virt-manager //调出虚拟×××管理器,如下图
进入编辑——>连接详情——>虚拟网络,如下图
添加四个虚拟网络分别是
private1,private2,public1,public2
点击上图的左下脚加号,出现如图所示:(以private1为例子)
完成即可。
private1,配置的ip网段是:192.168.1.0/24
private2,配置的ip网段是:192.168.2.0/24
public1,配置的ip网段是:100.0.1.0/24
public2,配置的ip网段是:100.0.1.0/24
创建虚拟机的脚本
下面连接可以直接下载使用:
链接: https://pan.baidu.com/s/1lx_murPn7U09hywyuWSFyw 密码: 4xq6
[root@luc ~]# vim clone-vm7
#! /usr/bin/bash
# 定义变量
IMG_DIR=/var/lib/libvirt/images
BASEVM=rh7_template
NUM=`tr -dc '0-9a-f' < /dev/urandom |head -c 2`
# 输入创建虚拟机的编号
read -p "Enter VM number: " VMNUM
# 判断输入编号
if [ -z "${VMNUM}" ]; then
echo "You must input a number."
exit 1
elif [ $(echo ${VMNUM}*1 | bc) = 0 ]; then
echo "You must input a number."
exit 2
elif [ ${VMNUM} -lt 1 -o ${VMNUM} -gt 99 ]; then
echo "Input out of range"
exit 3
fi
# 生成新的变量并判断文件是否存在
NEWVM=rh7_node${VMNUM}
if [ -e $IMG_DIR/${NEWVM}.img ]; then
echo "File exists."
exit 4
fi
# 创建新虚拟机的img文件
echo -en "Creating Virtual Machine disk image......\t"
qemu-img create -f qcow2 -b $IMG_DIR/.${BASEVM}.img $IMG_DIR/${NEWVM}.img &> /dev/null
echo -e "\e[32;1m[OK]\e[0m"
# 修改新虚拟机的xml文件
cat /var/lib/libvirt/images/.rhel7.xml > /tmp/myvm.xml
# 修改新虚拟机的主机名和uuid
sed -i "/<name>${BASEVM}/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
sed -i "/uuid/s/<uuid>.*<\/uuid>/<uuid>$(uuidgen)<\/uuid>/" /tmp/myvm.xml
# 修改新虚拟机的使用的img路径
sed -i "/${BASEVM}\.img/s/${BASEVM}/${NEWVM}/" /tmp/myvm.xml
# 模板给4个网卡,修改每个网卡的mac地址
sed -i "/mac /s/a1/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/a2/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/a3/${VMNUM}/" /tmp/myvm.xml
sed -i "/mac /s/b1/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/b2/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/b3/${VMNUM}/" /tmp/myvm.xml
sed -i "/mac /s/c1/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/c2/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/c3/${VMNUM}/" /tmp/myvm.xml
sed -i "/mac /s/d1/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/d2/${NUM}/" /tmp/myvm.xml
sed -i "/mac /s/d3/${VMNUM}/" /tmp/myvm.xml
# 导入虚拟机配置
echo -en "Defining new virtual machine......\t\t"
virsh define /tmp/myvm.xml &> /dev/null
echo -e "\e[32;1m[OK]\e[0m"
创建虚拟机
[root@luc ~]# ./clone-vm7
Enter VM number: 1
Creating Virtual Machine disk image...... [OK]
Defining new virtual machine...... [OK]
注:用户名为root 密码为:123456 。 登陆结果如下:
在命令行输入init 5 直接可以进入图形界面模式
注:运行级别
init 0 关闭主机
init 3 多用户命令行模式
init 5 图形界面模式
init 6 重启主机
init 1和2 分别是单用户和多用户(没有NFS)
centos7设置命令:
systemctl isolate multi-user.target
systemctl isolate graphical.target
systemctl set-default 目标级别
原理
简单说:
一台正常的KVM虚拟机的组成:
主机箱和外部设备 -------> 配置文件xml文件(name,uuid,disk位置,网卡mac等)
磁盘------> 虚拟机的镜像文件img文件
虚拟机的配置的导出和导入操作
virsh dumpxml 虚拟机名称 > 文件名.xml (打印配置文件)
virsh define 文件名.xml (组装机器)
KVM相关的命令
virt-manager //打开虚拟×××管理器
virsh list --all //列出所有虚拟机
virsh start 虚拟机名称 //虚拟机开机
virsh destroy 虚拟机名称 //强制断电关机
virsh autostart 虚拟机名称 //虚拟机开机自启 --disable 取消开机自启
virsh console 虚拟机名 //不需要ip地址登陆虚拟机
virsh nodeinfo //查看虚拟机服务器的cpu信息
virsh dominfo 虚拟机名称 //查看虚拟机配置
virsh edit 虚拟机名称 //修改虚拟机额配置
共勉:I hear and I forget. I see and I remember. I do and I understand!
转载于:https://blog.51cto.com/13667098/2110747