linux下5秒創建rhel7虛擬機
實驗環境:
[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
[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 nodeinfo //查看虛擬機服務器的cpu信息
virsh dominfo 虛擬機名稱 //查看虛擬機配置
virsh edit 虛擬機名稱 //修改虛擬機額配置
共勉:I hear and I forget. I see and I remember. I do and I understand!
linux下5秒創建rhel7虛擬機