首页 > 代码库 > 烂泥:KVM与kickstart集成

烂泥:KVM与kickstart集成

本文首发于烂泥行天下

KVM与kickstart集成在这里我要说明下,因为在前面有关CentOS无人值守安装的文章中,我提到过如果要使用网卡PXE功能的话,内网中必须有DHCP服务器。

也就是说内部网络中必须有一台DHCP服务器,用来获取TFTP服务器的地址,否则无法进行无人值守安装,CentOS也就无法通过网络安装。

如果我们是物理机通过网络进行安装CentOS的话,那么上述条件必须符合,也就是说。内网中必须存在DHCP服务器,否则客户端的网卡不能获取到相关的IP地址。

但是如果我们是通过KVM进行安装虚拟机的话,我们的网络就不一定需要DHCP服务器。我们只需要在KVM安装的脚本中配置相关IP地址,以及在kickstart的配置文件ks.cfg中配置相关IP地址即可。

为什么会是这样的呢?

其实在《烂泥:kickstart无人值守安装CentOS6.5》文章中,我们已经介绍过了PXE的原理。PXE的网络安装CentOS过程其实有是两个阶段需要IP地址的支持,第一个阶段是通过TFTP下载系统安装内核、第二个阶段是在系统安装时获取安装源的地址。如果是内网有DHCP服务器的话,这两个阶段获取的IP地址直接是从DHCP服务器上得到的。如果我们给网卡配置固定IP地址的话,那么就不需要DHCP服务器了。即第一阶段的所使用的IP地址由KVM安装虚拟机的脚本中配置,第二阶段使用的IP地址由ks.cfg文件中配置。

在这再补充一点有关网络的知识,同一个网络中即使没有路由器,只要两台机器配置的IP地址为同一个网段即可正常通信。

在下面的文章中,我会分两部分来介绍KVM与kickstart的集成:网络中存在DHCP服务器和网络不存在DHCP服务器。

一、网络中存在DHCP服务器

因为是与KVM集成相关,所以有关KVM的搭建与配置可以参照我之前的文章《烂泥:虚拟化KVM安装与配置》,在这里我们也使用到了有关LVM和裸设备相关的知识,也可以参考这两篇文章《烂泥:LVM学习之LVM基础》、《烂泥:KVM使用裸设备配置虚拟机》。

既然这一部分是和DHCP服务器相关的,那么我们来开启DHCP服务器,有关DHCP服务器的配置,可以参考这篇文章《烂泥:CentOS安装及配置DHCP服务器》。

开启DHCP服务器,如下:

/etc/init.d/dhcpd start

clip_image001

DHCP服务开启完毕后,我们开始创建一个LV逻辑卷作为虚拟机的硬盘。如下:

lvcreate -L 20G -n kickstart vg1

lvs

clip_image002

虚拟机硬盘创建后,我们现在开始创建虚拟机,使用如下命令:

virt-install -n kickstart -r 2048 --vcpus=1 --os-type=linux -l nfs:192.168.1.11:/iso -f /dev/vg1/kickstart --bridge=br0 -m 52:54:00:12:D7:5D --nographics -x "console=ttyS0 ks=nfs:192.168.1.11:/ks/ks.cfg"

这条命令的意思是:创建一个名叫kickstart的虚拟机,该虚拟机分配的内存为2G,使用一颗CPU,虚拟机为linux OS,该虚拟机的硬盘是/dev/vg1/kickstart,该虚拟机网卡桥接的物理网卡br0,同时为该网卡指定MAC地址为52:54:00:12:D7:5D。安装该虚拟机使用的镜像源为nfs:192.168.1.11:/iso,KVM在给该虚拟机安装过程中不使用图形界面。同时安装该虚拟机时,使用ks配置文件位于nfs:192.168.1.11:/ks/ks.cfg,并且在该虚拟机安装完毕后,可以通过串口进行来连接该虚拟机。

在这里介绍下,有关这条命令的主要参数:

1、安装源与KS源的位置

在这我们使用的是NFS方式,当然我们也可以使用FTP、HTTP方式。有关NFS在KVM的使用,可以通过查看virt-install的帮助文档来了解。如下:

virt-install --help

clip_image003

clip_image004

也可以通过man virt-install来了解,如下:

clip_image005

clip_image006

2、虚拟机硬盘

虚拟硬盘我们在此使用裸设备/dev/vg1/kickstart,有关虚拟机硬盘的我们也可以通过查看帮助文档来了解。

virt-install --help

clip_image007

man virt-install

clip_image008

3、MAC地址

我们为该虚拟机指定了MAC地址,MAC地址一定要为大写。否则KVM会报错。而且有关指定MAC地址,我们只能通过man virt-install来查看。如下:

man virt-install

clip_image009

4、ks源配置

该虚拟机的ks源,我们是通过nfs方式来连接的。这个我们也可以通过查看man virt-install,如下:

clip_image010

以上就是该条命令创建虚拟机的相关参数,为什么要这么清楚的介绍这些参数?是因为这些参数都是在安装虚拟机时,是必须的而且我们通过这种方式也能更好的理解KVM的参数以及如何查看KVM的帮助文档。

以上是介绍KVM创建虚拟机,记住此时我们还没有正式创建虚拟机。现在还需要我们来配置ks的配置文件ks.cfg。如下:

more ks.cfg

clip_image011

在此我们主要配置ks.cfg中的网络部分。设置虚拟机安装时,使用DHCP方式获取IP地址。

好了这个配置完毕后,我们就来正式安装KVM虚拟机,如下:

clip_image012

clip_image013

系统安装完毕后,我们来查看该虚拟机的IP地址以及MAC地址。如下:

ifconfig

clip_image014

可以看到虚拟机确实获取到了IP地址,并且MAC地址也确实是我们指定的。

以上讲解的是在网络有DHCP服务器的情况,下面我们来讲解没有DHCP服务器的情况。

二、网络中不存在DHCP服务器

首先关闭DHCP服务器,如下:

/etc/init.d/dhcpd stop

clip_image015

修改kickstart配置ks.cfg有关网络的配置如下:

clip_image016

在ks.cfg文件中,我们定义虚拟机的IP地址、子网掩码、默认网关、DNS服务器以及主机名。如下:

IP:192.168.1.220 DNS:192.168.1.1 hostname:ilanni

修改完毕后,我们来通过KVM创建虚拟机,使用如下命令:

virt-install -n kickstart -r 2048 --vcpus=1 --os-type=linux -l nfs:192.168.1.11:/iso -f /dev/vg1/kickstart --bridge=br0 -m 52:54:00:12:D7:5D --nographics -x "console=ttyS0 --device=eth0 ip=192.168.1.220 netmask=255.255.255.0 gateway=192.168.1.1 ks=nfs:192.168.1.11:/ks/ks.cfg ksdevice=eth0"

注意:KVM中定义的IP地址和ks.cfg文件定义的IP可以相同也可以不相同,但是两个IP地址必须为同一个网段。并且最后虚拟机的IP地址以ks.cfg文件中配置的为准。

clip_image017clip_image017[1]clip_image018

通过上述两张截图,我们可以看出在没有DHCP服务器时,我们通过为KVM安装虚拟机时配置IP地址和ks.cfg配置IP地址,也可以通网络安装CentOS系统。

系统安装完毕后,我们重启进入虚拟机,查看我们定义的相关网络配置及主机名。如下:

ifconfig

more /etc/resolv.conf

clip_image019

通过上图,我们完全看出虚拟机的网络配置和主机名就是我们通过ks.cfg文件配置的。

到此我们的实验就已经结束了,在此我重申下。

在KVM中网络CentOS系统不一定需要DHCP服务器,但是如果是物理机网络安装CentOS系统,必须要有DHCP的支持。而无论是KVM还是物理机安装CentOS系统,都是需要TFTP服务器的支持。

本文出自 “烂泥行天下” 博客,请务必保留此出处http://ilanni.blog.51cto.com/526870/1549023

烂泥:KVM与kickstart集成