KVM虛擬機管理——虛擬機克隆


1. 概述

通過為KVM虛擬機安裝操作系統只是安裝最基本的操作系統模板。這是必須的,因為每個虛擬機都需要操作系統。實際應用過程中,主要是基於操作系統安裝好環境之后,再作為業務模板,方便快速部署或者遷移等。
本篇博客主要介紹該如何制作KVM模板,和克隆KVM虛擬機。

2. 部署基本操作系統虛擬機

本篇博客主要是以虛擬機node99作為基本操作系統模板。首先為node99配置硬件,並安裝操作系統。

操作系統以本地安裝方式,具體參見博客《》

3. 配置虛擬機

node99安裝好操作系統之后,需要對其內部配置進行修改,去掉一些信息

3.1 修改/etc/sysconfig/hostname

刪除/etc/sysconfig/network中'HOSTNAME=node99'一行
並添加"NOZEROCONF=yes"

3.2 刪除/etc/sysconfig/network-scripts/ifcfg-ethx和主機有關信息

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

上面文件已經刪除了uuid,hardmac等和主機有關的信息

3.3 編輯/etc/udev/rules.d/70-persistent-net.rules

刪除內容

# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:00:00:80:00:99", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:00:00:10:00:99", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

3.4 編輯/etc/yum.repo.d/

執行命令cd /etc/yum.repo.d,創建目錄mkdir oldrepo,然后把之前的YUM源配置文件移動其中'mv Cent* oldrepo',在從oldrepo中復制文件'cp .oldreop/CentOS-Media.repo ../CentOS-ftp.repo'
編輯CentOS-ftp.repo,內容如下

[console-ftp]
name=CentOS-$releasever - ftp
baseurl=ftp://192.168.80.8/pub/osimage/centos6.5
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

執行yum repolist驗證,如下圖顯示,則表示成功。

3.5 配置console到node99無密碼訪問

配置console到node99(模板虛擬機)的無密碼登陸,本質就是用一對公密鑰對來實現無密碼通信。兩種方式:

  • 將consle的公鑰上傳到模板主機/root/.ssh/authorized_keys
  • 在模板下生成公密鑰,將私鑰下載到console的/root/.ssh/目錄下

這個過程可以不用配置,因為在實際生成過程中,即便是開始未配置宿主機到虛擬機的無密碼登陸,后期也可以手動配置或者批量管理。

3.6 配置sshd配置文件

3.7 配置virsh console訪問虛擬機

配置kvm虛擬機的控制台登陸,方式有很多種,其基本思路都是修改kvm虛擬機操作系統內部的三個文件,即

  • /etc/inittab
  • /etc/securety
  • /boot/grub/grub.conf

這三個文件配置修改的主要目的是為kvm虛擬機配置虛擬控制台ttyS0,讓宿主機能夠通過virsh console xxxx方式登陸虛擬機

這種登陸方式主要預防在宿主機無圖形界面,無VNC登陸,無法ssh登陸的情況下,進行虛擬機登陸管理和維護

具體文件內容如下:
/etc/inittab最后一行添加以下內容

S0:12345:respawn:/sbin/agetty ttyS0 115200

/etc/securetty最后一行添加以下內容

ttyS0

/boot/grub/grub.conf修改如下

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=f41dc2f7-a05c-4b17-9204-eef2459c21d3 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0
        initrd /initramfs-2.6.32-431.el6.x86_64.img

上面三個文件,在對應虛擬機修改好后,重啟虛擬機即可生效。
登陸測試
本篇博客已經對node11修改完成,執行命令:virsh console node11,輸入root,回車輸入密碼即可登陸,如下:

登出
通過ctrl + D ,登出node11,此時處於node11 login:界面。此時輸入ctrl + ],即可回到宿主機的命令行

總結
對於配置KVM虛擬機的控制台登陸,有四種方式可取:

  • 等kvm虛擬機創建之后手動修改
  • 等kvm虛擬機啟動之后,批量分發配置文件
  • kvm虛擬機安裝時,若是--location安裝方式,通過傳入內核參數進行配置
  • kvm虛擬機安裝時,若是--pxe安裝方式,通過定義ks.cfg文件中的內核參數

4. 克隆虛擬機

進行完node99的配置之后,對node99執行poweroff操作。這樣node99只需要保持關機狀態,即可以其為模板,創建其他虛擬機。
因為在console的DHCP配置中,配置了客戶機的MAC綁定IP,DNS服務,網關信息,主機名等,因此克隆虛擬機時,只需要指定虛擬機的MAC即可。

注:假如配置了kvm虛擬機的VNC,則還需要在啟動克隆的虛擬機之前,對克隆的虛擬機進行配置修改。virsh edit nodexx,修改VNC配置段即可。

執行命令virsh clone -o node99 -n node11 -f /mnt/data/vhost/node11.img -m 00:00:00:80:00:11 -m 00:00:00:10:00:11,即可從node99克隆node11。
編輯腳本如下:

#!/bin/bash
if [ "$#" != "2" ];then
    echo "usage:$0 [moudle] [nodenum]" && exit 0
fi
SRCNODE=$1
DESNODE=$2
IMGFILE=/mnt/data/vhost/node${DESNODE}.img
virt-clone -o node${SRCNODE} -n node${DESNODE} -f ${IMGFILE} -m 00:00:00:80:00:${DESNODE} -m 00:00:00:10:00:${DESNODE}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM