爛泥:KVM與kickstart整合

來源:互聯網
上載者:User

標籤:爛泥   kvm   整合   kickstart   dhcp   pxe   

本文首發於爛泥行天下。

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

650) this.width=650;" title="clip_image001" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image001" src="http://img1.51cto.com/attachment/201409/5/526870_14098840888Qlh.png" width="759" height="227" />

DHCP服務開啟完畢後,我們開始建立一個LV邏輯卷作為虛擬機器的硬碟。如下:

lvcreate -L 20G -n kickstart vg1

lvs

650) this.width=650;" title="clip_image002" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image002" src="http://img1.51cto.com/attachment/201409/5/526870_14098840890LKn.png" width="774" height="228" />

虛擬機器硬碟建立後,我們現在開始建立虛擬機器,使用如下命令:

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

650) this.width=650;" title="clip_image003" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image003" src="http://img1.51cto.com/attachment/201409/5/526870_1409884089pn5l.png" width="545" height="165" />

650) this.width=650;" title="clip_image004" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image004" src="http://img1.51cto.com/attachment/201409/5/526870_1409884090lzFi.png" width="655" height="378" />

也可以通過man virt-install來瞭解,如下:

650) this.width=650;" title="clip_image005" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image005" src="http://img1.51cto.com/attachment/201409/5/526870_1409884090yuxo.png" width="463" height="182" />

650) this.width=650;" title="clip_image006" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image006" src="http://img1.51cto.com/attachment/201409/5/526870_14098840902M9Z.png" width="721" height="461" />

2、虛擬機器硬碟

虛擬硬碟我們在此使用裸裝置/dev/vg1/kickstart,有關虛擬機器硬碟的我們也可以通過查看協助文檔來瞭解。

virt-install --help

650) this.width=650;" title="clip_image007" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image007" src="http://img1.51cto.com/attachment/201409/5/526870_1409884091Si5P.png" width="698" height="229" />

man virt-install

650) this.width=650;" title="clip_image008" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image008" src="http://img1.51cto.com/attachment/201409/5/526870_1409884091YzHv.png" width="645" height="74" />

3、MAC地址

我們為該虛擬機器指定了MAC地址,MAC地址一定要為大寫。否則KVM會報錯。而且有關指定MAC地址,我們只能通過man virt-install來查看。如下:

man virt-install

650) this.width=650;" title="clip_image009" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image009" src="http://img1.51cto.com/attachment/201409/5/526870_1409884092EnMh.png" width="701" height="336" />

4、ks源配置

該虛擬機器的ks源,我們是通過nfs方式來串連的。這個我們也可以通過查看man virt-install,如下:

650) this.width=650;" title="clip_image010" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image010" src="http://img1.51cto.com/attachment/201409/5/526870_1409884092S9Kb.png" width="677" height="123" />

以上就是該條命令建立虛擬機器的相關參數,為什麼要這麼清楚的介紹這些參數?是因為這些參數都是在安裝虛擬機器時,是必須的而且我們通過這種方式也能更好的理解KVM的參數以及如何查看KVM的協助文檔。

以上是介紹KVM建立虛擬機器,記住此時我們還沒有正式建立虛擬機器。現在還需要我們來配置ks的設定檔ks.cfg。如下:

more ks.cfg

650) this.width=650;" title="clip_image011" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image011" src="http://img1.51cto.com/attachment/201409/5/526870_1409884092NeDz.png" width="419" height="678" />

在此我們主要配置ks.cfg中的網路部分。設定虛擬機器安裝時,使用DHCP方式擷取IP地址。

好了這個配置完畢後,我們就來正式安裝KVM虛擬機器,如下:

650) this.width=650;" title="clip_image012" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image012" src="http://img1.51cto.com/attachment/201409/5/526870_1409884093OsvV.png" width="1200" height="192" />

650) this.width=650;" title="clip_image013" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image013" src="http://img1.51cto.com/attachment/201409/5/526870_1409884093tJZj.png" width="721" height="470" />

系統安裝完畢後,我們來查看該虛擬機器的IP地址以及MAC地址。如下:

ifconfig

650) this.width=650;" title="clip_image014" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image014" src="http://img1.51cto.com/attachment/201409/5/526870_1409884094hXHr.png" width="729" height="467" />

可以看到虛擬機器確實擷取到了IP地址,並且MAC地址也確實是我們指定的。

以上講解的是在網路有DHCP伺服器的情況,下面我們來講解沒有DHCP伺服器的情況。

二、網路中不存在DHCP伺服器

首先關閉DHCP伺服器,如下:

/etc/init.d/dhcpd stop

650) this.width=650;" title="clip_image015" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image015" src="http://img1.51cto.com/attachment/201409/5/526870_1409884094GqGC.png" width="673" height="138" />

修改kickstart配置ks.cfg有關網路的配置如下:

650) this.width=650;" title="clip_image016" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image016" src="http://img1.51cto.com/attachment/201409/5/526870_1409884095wDOt.png" width="1200" height="660" />

在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檔案中配置的為準。

650) this.width=650;" title="clip_image017" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image017" src="http://img1.51cto.com/attachment/201409/5/526870_1409884095zuxF.png" width="719" height="275" />650) this.width=650;" title="clip_image017[1]" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image017[1]" src="http://img1.51cto.com/attachment/201409/5/526870_1409884095F4qP.png" width="719" height="275" />650) this.width=650;" title="clip_image018" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image018" src="http://img1.51cto.com/attachment/201409/5/526870_1409884096tyAz.png" width="721" height="468" />

通過上述兩張,我們可以看出在沒有DHCP伺服器時,我們通過為KVM安裝虛擬機器時配置IP地址和ks.cfg配置IP地址,也可以通網路安裝CentOS系統。

系統安裝完畢後,我們重啟進入虛擬機器,查看我們定義的相關網路設定及主機名稱。如下:

ifconfig

more /etc/resolv.conf

650) this.width=650;" title="clip_image019" style="border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;padding-right:0px;border-top-width:0px;" border="0" alt="clip_image019" src="http://img1.51cto.com/attachment/201409/5/526870_1409884096N6OZ.png" width="716" height="465" />

通過,我們完全看出虛擬機器的網路設定和主機名稱就是我們通過ks.cfg檔案配置的。

到此我們的實驗就已經結束了,在此我重申下。

在KVM中網路CentOS系統不一定需要DHCP伺服器,但是如果是物理機網路安裝CentOS系統,必須要有DHCP的支援。而無論是KVM還是物理機安裝CentOS系統,都是需要TFTP伺服器的支援。

本文出自 “爛泥行天下” 部落格,請務必保留此出處http://ilanni.blog.51cto.com/526870/1549023

爛泥:KVM與kickstart整合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.