设为首页 收藏本站
查看: 1189|回复: 0

[经验分享] CentOS6.4 X86_64 kvm+PXE备忘

[复制链接]

尚未签到

发表于 2015-4-10 12:50:13 | 显示全部楼层 |阅读模式
Install 安装

1
2
3
4
5
# yum install qemu-kvm qemu-img
# 使用kvm至少要安装的包,一个提供用户级别kvm模拟器,一个提供磁盘镜像的管理
# 安装虚拟化管理的相关工具
# yum install virt-manager libvirt \     
libvirt-python python-virtinst libvirt-client
  也可以yum groupinstall虚拟化组件,具体可参考Redhat官方文档

  • KVM 管理工具

    • kvm 内核模块   南北桥, USB, PS/2 ISA PCI
    • Para-virtualized devices  -> 时钟, 网络, 串口
    • Physically shared devices –> 光纤设备


  安装完之后就可以启动kvm了

1
# /etc/init.d/libvirtd start
桥接网络

1
# yum install bridge-utils -y
  桥接实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NAME="System eth0"
BRIDGE="br0"
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
TYPE="Bridge"  # 注意大小写
BOOTPROTO="static"
IPADDR=192.168.80.131
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
ONBOOT="yes"
DELAY=0
  具体可参考: CentOS / Redhat: KVM Bridged Network Configuration
构建无人值守,实现KVM PXE安装
安装相关软件

1
# yum install tftp-server syslinux dhcp vsftpd -y
dhcp
  dhcp example:
dhcp   
1
2
3
4
5
6
7
8
9
# cat /etc/dhcp/dhcpd.conf
subnet 192.168.80.0 netmask 255.255.255.0 {
    range 192.168.80.10 192.168.80.100;
    default-lease-time 600;
    max-lease-time 7200;
    next-server 192.168.80.131; # PXE Server地址
    filename "pxelinux.0";      # 引导文件名
}
# /etc/init.d/dhcpd restart
tftp
  tftp example:
tftp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# cat /etc/xinetd.d/tftp
service tftp
{
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot
    disable         = no # 默认yes,改为no即可
    per_source      = 11
    cps             = 100 2
    flags           = IPv4
}
# /etc/init.d/xinetd restart
vsftpd
  新建/var/ftp/centos目录,把CentOS光盘镜像挂载至/var/ftp/centos下

1
2
3
# mkdir /var/ftp/centos
# mount /dev/cdrom /var/ftp/centos # 挂载镜像使用-o loop
# /etc/init.d/vsftpd restart
无人值守

1
2
3
4
5
6
# mkdir /var/lib/tftpboot/CentOS6
# cp /var/ftp/centos/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/CentOS6
# cp /var/ftp/centos/isolinux/{boot.msg,vesamenu.c32} /var/lib/tftpboot/
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# mkdir /var/ftp/tftpboot/pxelinux.cfg
# cp /var/ftp/centos/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
tftpboot目录树结构
1
2
3
4
5
6
7
8
9
10
11
12
# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.msg
├── CentOS6
│?? ├── initrd.img
│?? └── vmlinuz
├── pxelinux.0
├── pxelinux.cfg
│?? └── default
└── vesamenu.c32

2 directories, 6 files
  pxelinux.cfg/default example:
pxe default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# cat /var/lib/tftpboot/pxelinux.cfg/default                                                                                                                     
# default CentOS6_PXE # 默认启动'default CentOS6_PXE'标记的内核
default vesamenu.c32  # 菜单选项
timeout 100 # 单位是1/10s
# prompt 1  # 为 '0' 时则不提示'boot: ',将会直接启动 'default' 参数中指定的内容

display boot.msg    # 启动时显示

# menu background splash.jpg    # 菜单背景等
menu title Welcome to CentOS 6.4!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label CentOS6_PXE
  menu label ^PXE Install CentOS KVM
  kernel /CentOS6/vmlinuz
  append ks=ftp://192.168.80.131/ks.cfg initrd=/CentOS6/initrd.img
label rescue
  menu label ^Rescue installed system
  kernel /CentOS6/vmlinuz
  append initrd=/CentOS6/initrd.img rescue
  
  关于PXE的进一步细节可以参考pxelinux官方文档
  ks.cfg example:
ks.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# cat /var/ftp/ks.cfg
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
skipx
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use network installation
url --url=ftp://192.168.80.131/centos
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $1$duSkJ1$1P5qGnqUGn3S1MTTFiPJY.

# SELinux configuration
selinux --disabled
# System timezone
timezone  Asia/Shanghai
# Install OS instead of upgrade
install

# Disk partitioning information
part /boot --asprimary --bytes-per-inode=4096 --fstype="ext3" --size=100
part / --bytes-per-inode=4096 --fstype="ext3" --size=5000
part swap --bytes-per-inode=4096 --fstype="swap" --size=512

%packages --nobase
@core
@Development tools
acpid   # 如果不安装acpid服务,virsh shutdown virtual_name 命令会失效
vim
wget
lsof
%end
  如果最小化安装则软件包选择如下:
Minimal install
1
2
%packages --nobase
@core
  关于kickstart的更进一步了解可参考红帽官档Kickstart Options Installing guest virtual machines with PXE
PXE 安装KVM虚拟机
  如果要开启–graphics vnc选项,则需要修改vnc监听端口,默认监听的是127.0.0.1,修改为0.0.0.0即可

1
2
3
# grep '^vnc_listen' /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
# /etc/init.d/libvirtd restart
  man手册关于vnc端口介绍摘录:

Address to listen on for VNC/Spice connections. Default is typically 127.0.0.1   
(localhost only), but some hypervisors allow changing this globally     
(for example, the qemu driver default can be changed   in /etc/libvirt/qemu.conf).   
Use 0.0.0.0 to allow access from other machines. This is use by ’vnc’ and ’spice.  

安装实例:
通过location方式结合Kickstart安装

  • –extra-args指定ks相关选项,并且指定console类型使得virsh console可以连接操作,也可指定客户机IP、网关、DNS等,无需DHCP:


1
2
3
4
# virt-install --name centos --ram=1024 --vcpus=1 --os-type=linux --os-variant=rhel6 \
--network bridge:br0 --disk path=/var/lib/libvirt/images/centos6-machine1.img,size=10 \
--location ftp://192.168.80.131/centos/ --extra-args "ks=ftp://192.168.80.131/ks.cfg \
ksdevice=eth0 ip=192.168.80.150  netmask=255.255.255.0 console=ttyS0"
PXE方式安装

1
2
3
4
# virt-install --connect qemu:///system --network=bridge:br0 \
--pxe --name rhel6-machine1 --ram=1024 --vcpus=1 \
--os-type=linux --os-variant=rhel6 --disk \
path=/var/lib/libvirt/images/rhel6-machine1.img,size=10
  注意: 如果需要指定console,–pxe是不支持–extra-args额外选项的,所以需要在pxe default 文件添加相关内容[SERIAL和console],如下example

1
2
3
4
5
SERIAL 0 115200
label CentOS6_PXE
    menu label ^PXE Install CentOS KVM
    kernel /CentOS6/vmlinuz
    append ks=ftp://192.168.80.131/ks.cfg initrd=/CentOS6/initrd.img console=tty0 console=ttyS0,115200
本地安装:

1
2
3
# virt-install --name centos --ram=1024 --vcpus=1 --os-type=linux \
--os-variant=rhel6 --location /mnt/ --network bridge:br0 \
--disk path=/var/lib/libvirt/images/rhel6.img,size=10 --extra-args "console=ttyS0"
  关于KVM的Guest安装方式,virt-install man手册中也有很多实例,这里不一一介绍。
  开启–graphics vnc选项可在Windows下下载vncviewer客户端,输入对应IP和端口即可[ 笔者个人还是习惯通过console连接安装,不开启vnc选项 ],如下
查看对应端口
1
2
3
# netstat -tulnp | grep kvm
tcp        0      0 0.0.0.0:5900                0.0.0.0:*                   LISTEN      55762/qemu-kvm
tcp        0      0 0.0.0.0:5901                0.0.0.0:*                   LISTEN      56656/qemu-kvm
  连接对应端口
http://kumu-Linux.github.com/images/vnc1.png
  
  连接之后,就可以正常安装了
http://kumu-Linux.github.com/images/vnc2.png
virsh 操作命令
  这里只介绍一些常用的virsh使用方法,具体的命令可以参看virsh的man手册介绍或者参考红帽官方文档Managing guests with virsh
  默认只输入virsh命令会进入virsh的终端:如下,help可以获取命令帮助

1
2
3
4
5
6
7
# virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh #
  virsh简单操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
virsh # list    # 显示运行或者暂停的Guest
Id    Name                           State
----------------------------------------------------
28    centos6_1                      running

virsh # list --all  # 显示所有的Guest,包括状态为shut off的
Id    Name                           State
----------------------------------------------------
28    centos6_1                      running
-     centos                         shut off

virsh # console centos6_1   # console方式连接Guest
Connected to domain centos6_1
Escape character is ^]      # 使用Ctrl+]即可退出

CentOS release 6.4 (Final)
Kernel 2.6.32-358.el6.x86_64 on an x86_64

localhost.localdomain login:
virsh # start centos        # 开启某个Guest
Domain centos started

virsh # list
Id    Name                           State
----------------------------------------------------
28    centos6_1                      running
32    centos                         running
virsh # shutdown centos     
# 关闭某个Guest,这里一定要注意,如果Guest没有安装运行acpid服务,
# 则此方式失效,可以kill强制关闭,或者console/ssh连接执行关闭                                                                                                                       
Domain centos is being shutdown
  删除某个Guest,一般需要两步走,对于正在运行的Guest则需要先关闭再继续两步走[也可以直接virsh destroy virtual_name], 这里就演示三步:

1
2
3
virsh destroy guest_name
virsh undefine guest_name
rm -rf guest_img  # 删除虚拟存储
  挂起主机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
virsh # list
Id    Name                           State
----------------------------------------------------
28    centos6_1                      running

virsh # suspend centos6_1   # 挂起主机
Domain centos6_1 suspended

virsh # list
Id    Name                           State
----------------------------------------------------
28    centos6_1                      paused


virsh # resume centos6_1    # 把主机从挂起状态切换至运行状态
Domain centos6_1 resumed

virsh # list
Id    Name                           State
----------------------------------------------------
28    centos6_1                      running

virsh #
virt-clone 克隆Guest

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# virt-clone --connect=qemu:///system --original=centos6_1 \
--name=centos6_2 -f /var/lib/libvirt/images/centos6_2.img
ERROR    Domain with devices to clone must be paused or shutoff.
# virsh suspend centos6_1
Domain centos6_1 suspended

# virsh list
Id    Name                           State
----------------------------------------------------
28    centos6_1                      paused

# virt-clone --connect=qemu:///system --original=centos6_1 \
--name=centos6_2 -f /var/lib/libvirt/images/centos6_2.img
Allocating 'centos6_2.img'           1% [-              ] 9.0 MB/s | 112 MB     18:44 ETA
参考和拓展资料

  • Automate RHEL Based OS Deployments with PXE Boot and Kickstart
  • Centos& and serial console login
  • kvm virsh console
  • KVM 实时迁移
  • rhel6 kvm备忘
  自己之前的两篇挫文: KVM在线迁移(动态迁移) RHEL6 KVM安装备忘
  –EOF–

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-55673-1-1.html 上篇帖子: KVM命令使用 下篇帖子: kvm命令参数记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表