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

1. 概述

經過爲KVM虛擬機安裝操做系統只是安裝最基本的操做系統模板。這是必須的,由於每一個虛擬機都須要操做系統。實際應用過程當中,主要是基於操做系統安裝好環境以後,再做爲業務模板,方便快速部署或者遷移等。
本篇博客主要介紹該如何製做KVM模板,和克隆KVM虛擬機。node

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

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

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

3. 配置虛擬機

node99安裝好操做系統以後,須要對其內部配置進行修改,去掉一些信息ssh

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等和主機有關的信息ui

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

刪除內容url

# 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,內容以下spa

[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}
相關文章
相關標籤/搜索