1. 程式人生 > >linux下5秒創建rhel7虛擬機

linux下5秒創建rhel7虛擬機

linux虛擬機 KVM 創建虛擬機

經常玩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 nodeinfo //查看虛擬機服務器的cpu信息
virsh dominfo 虛擬機名稱 //查看虛擬機配置
virsh edit 虛擬機名稱 //修改虛擬機額配置

共勉:I hear and I forget. I see and I remember. I do and I understand!

linux下5秒創建rhel7虛擬機