ホストサーバー(CentOS 6.0を実行)にはパブリックIPアドレスが1つしかなく、多くのKVMゲストをホストするため、NATで仮想ネットワークスイッチ構成を使用する必要があります=モード。
以前、物理マシンの自動インストールにpxelinuxを使用しましたが、KVMゲストのインストールに引き続きpxelinuxを使用したいと思います。これは、pxelinux構成ファイルを生成するスクリプトをすでにいくつか作成しており、それらを再利用したいためです。
誰かがCentOS6.0 KVMゲストをCentOS6.0ホストサーバーにインストールする方法のステップバイステップの説明を提供できますか?
できるだけコマンドラインを使いたいので、virt-managerよりvirt-installを選びます。
ホストサーバーには、LVMボリュームグループが1つだけあります:vg0
[root@server ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 3 0 wz--n- 8.18t 97.90g
最初にいくつかの要件をインストールします。 (これは実際に必要以上のものかもしれません)
yum -y groupinstall "X Window System"
yum -y groupinstall "Virtualization Client"
yum -y groupinstall "Virtualization"
yum -y groupinstall "Virtualization Platform"
yum -y groupinstall "Virtualization Tools"
yum -y groupinstall "Desktop"
yum -y install xorg-x11-fonts-100dpi
yum -y install xorg-x11-fonts-75dpi
yum -y install xorg-x11-fonts-Type1 xorg-x11-font-utils
yum -y install man
yum -y install emacs
質問で述べたように、すでにLVMボリュームグループがあります
[root@server ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 3 0 wz--n- 8.18t 97.90g
まず、そのLVMボリュームグループからlibvirtストレージプールを作成して定義します
[root@server ~]# cat /tmp/foobar
<pool type='logical'>
<name>pool0</name>
<target>
<path>/dev/vg0</path>
</target>
</pool>
[root@server ~]# virsh pool-define /tmp/foobar
Pool pool0 defined from /tmp/foobar
[root@server ~]# virsh pool-start pool0
Pool pool0 started
[root@server ~]# virsh pool-autostart pool0
Pool pool0 marked as autostarted
[root@server ~]# virsh pool-list
Name State Autostart
-----------------------------------------
pool0 active yes
デフォルトでは、libvirtにはすでに仮想ネットワークが構成されています。名前はdefaultです。この例では、PXEインストールに使用できるように、その仮想ネットワークを再定義します。
[root@server ~]# virsh net-list
Name State Autostart
-----------------------------------------
default active yes
[root@server ~]# emacs /tmp/default.xml
[root@server ~]# cat /tmp/default.xml
<network>
<name>default</name>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0' />
<ip address='10.0.0.1' netmask='255.255.0.0'>
<tftp root='/var/lib/dnsmasq/tftpboot' />
<dhcp>
<range start='10.0.0.2' end='10.0.255.255' />
<Host mac='02:54:00:13:be:e4' name='virt1.example.com' ip='10.0.0.2' />
<Host mac='02:52:2c:a3:11:42' name='virt2.example.com' ip='10.0.0.3' />
<bootp file='/pxelinux.0' />
</dhcp>
</ip>
</network>
MACアドレス02:54:00:13:be:e4および02:52:2c:a3上記の:11:42は、ランダムなMACアドレスです。 (serverfaultの質問を参照してください: LinuxコマンドラインからランダムなMACアドレスを生成する方法 )
[root@server ~]# virsh net-destroy default
Network default destroyed
[root@server ~]# virsh net-undefine default
Network default has been undefined
[root@server ~]# virsh net-define /tmp/default.xml
Network default defined from /tmp/default.xml
[root@server ~]# virsh net-start default
Network default started
[root@server ~]# virsh net-autostart default
Network default marked as autostarted
[root@server ~]# mkdir /var/lib/dnsmasq/tftpboot
[root@server ~]# ls -lZd /var/lib/dnsmasq/tftpboot
drwxr-xr-x. root root unconfined_u:object_r:dnsmasq_lease_t:s0 /var/lib/dnsmasq/tftpboot
[root@server ~]# yum install syslinux
[root@server ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/dnsmasq/tftpboot/
[root@server ~]# cd /var/lib/dnsmasq/tftpboot/
[root@server tftpboot]# wget -O centos-6-vmlinuz.x86_64 http://ftp.funet.fi/pub/Linux/mirrors/centos/6.0/os/x86_64/images/pxeboot/vmlinuz
[root@server tftpboot]# wget -O centos-6-initrd.img.x86_64 http://ftp.funet.fi/pub/Linux/mirrors/centos/6.0/os/x86_64/images/pxeboot/initrd.img
[root@server tftpboot]# mkdir /var/lib/dnsmasq/tftpboot/pxelinux.cfg
[root@server tftpboot]# cd /var/lib/dnsmasq/tftpboot/pxelinux.cfg
上記で使用したMACアドレス02:54:00:13:be:e4には、構成ファイル名01-02が必要です。 -54-00-13-be-e4。つまり、01-
を先頭に追加し、:
を-
に変換します。
[root@server pxelinux.cfg]# emacs 01-02-54-00-13-be-e4
[root@server pxelinux.cfg]# cat 01-02-54-00-13-be-e4
default local
Prompt 1
timeout 50
label local
localboot 0
label install
kernel /centos-6-vmlinuz.x86_64
append initrd=/centos-6-initrd.img.x86_64 ks=http://www.example.com/kickstart-files/virt1.example.com.txt device=eth0 ramdisk_size=9216 lang= devfs=nomount
[root@server pxelinux.cfg]# cd
ここでは、virt1.example.comのキックスタートファイルは http://www.example.com/kickstart-files/virt1.example.com.txt からダウンロードできると仮定しました。
次に、service libvirtd reload
を実行します。これは、dnsmasqtftpserverを正しく実行するために必要なようです。
[root@server ~]# service libvirtd reload
Reloading libvirtd configuration: [ OK ]
次に、virt-installを実行して、20Gbのディスク容量を持つKVMゲストvirt1.example.comを作成します。
[root@server ~]# virt-install --debug --hvm --vnc --name virt1.example.com --os-type=linux --os-variant=rhel6 --pxe --network network=default,model=e1000,mac=02:54:00:13:be:e4 --disk pool=pool0,size=20 --ram 1024 --vcpus=1
これで、グラフィカルプログラムvirt-viewer
がXウィンドウをポップアップします。起動シーケンス中に「boot:」が表示されたら、install
と入力します。
Virt-installコマンドラインオプションに関する注意:model=virtio
の使用は私には機能しませんでしたが、幸いにもmodel=e1000
は問題なく機能しました。