vmguest.iso linux,闲玩Xen

简述理论

虚拟化的实现

模拟技术:模拟计算机的主要硬件硬件并协调工作,但是效率很低下,所以不常用

完全虚拟化:针对cpu的虚拟来分为,基于BT技术(Guset的特权指令在ring1,Host的特权指令在ring0,Guest的特权指令由Host的ring0来参与边翻译边执行)的完全虚拟化,基于HVM(硬件辅助,Guest的特权指令在ring0,Host的特权指令在ring-1,Guest意识不到自己处于虚拟化环境Intel-VT,AMD-V)的完全虚拟化

半虚拟化:Guest的内核知道自己处于虚拟化环境中,自己的特权指令会变成system call来调用Hpervisor执行

Xen

Dom0:能够管理控制VMguest,I/O,驱动,结合qemu来虚拟化磁盘,网卡等I/O设备

DomU:运行在Hpervisor上的各个虚机(VMguest)

Hpervisor:运行在物理机上,管理负责CPU和内存的虚拟化

Hardware:物理机

管理工具:xm/xend,xl(轻量级),xe/xapi(提供了管理Xen的api用于cloud环境),virsh(libvirt库)

实验过程

实验目的是利用xen来安装centos虚机

https://wiki.xen.org/wiki/Xen4CentOS

http://xenbits.xen.org/docs/unstable-staging/

在使用xen4centos时,yum源安装的Dom0的linux内核版本在配置设置桥ip时,会内核恐慌崩溃,因而转向参考Xen made easy

[root@centos ~]# yum install http://au1.mirror.crc.id.au/repo/kernel-xen-release-latest.noarch.rpm 自动产生Xen yum源配置文件

[root@centos ~]# yum install xen45 -y   安装Xen Hpervisor和依赖的包

[root@centos ~]# yum install kernel-xen -y 安装Dom0 使用的内核

[root@centos ~]# cat /boot/grub/grub.conf

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (4.4.21-1.el6xen.x86_64)   自动添加Dom0内核引导title

root (hd0,0)

kernel /xen.gz dom0_mem=1024M,max:1024M cpuinfo com1=115200,8n1 console=com1,

tty loglvl=all guest_loglvl=all

module /vmlinuz-4.4.21-1.el6xen.x86_64 ro root=/dev/mapper/vg_centos-lv_root

rd_NO_LUKS.UTF-8 rd_LVM_LV=vg_centos/lv_swap rd_NO_MD

SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_centos/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

module /initramfs-4.4.21-1.el6xen.x86_64.img

title CentOS 6 (2.6.32-504.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_centos-lv_root

rd_NO_LUKS.UTF-8 rd_LVM_LV=vg_centos/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16

crashkernel=auto rd_LVM_LV=vg_centos/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb

quiet

initrd /initramfs-2.6.32-504.el6.x86_64.img

[root@centos ~]# reboot 选择刚添加grub.conf Dom0的title,此时本机已为Hpervisor+Dom0

[root@centos ~]# xl list

Name                                        ID   Mem VCPUs State Time(s)

Domain-0                                     0  1024     1     r-----      19.8

[root@centos ~]# xl info

host                   : centos.localdomain

release                : 4.4.21-1.el6xen.x86_64

[root@centos ~]# brctl addbr br0    创建桥设备

[root@centos ~]# ifconfig eth0 0

[root@centos ~]# brctl addif br0 eth0

[root@centos ~]# cat /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-br0} 永久生效

DEVICE=eth0

TYPE=Ethernet       在做实验时桥设备的名字改为了xenbr0,用br0时 VMguest 无法启动

BRIDGE=br0

ONBOOT=yes

NM_CONTROLLED=no

DEVICE=br0

IPADDR=192.168.40.128

TYPE=Bridge

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=static

在192.168.30.140准备安装操作系统文件相当于PXE+DHCP+KICKSTART无人职守安装

利用system-config-kickstart 工具制作ks文件

[root@centos ~]# cat /ks/ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# Install OS instead of upgrade

install

# Use network installation

url --url=  http://192.168.40.130/    安装源 挂载到网站根目录

# Root password

rootpw --iscrypted $1$.bmjihWZ$ZpJnzWFzzEPsR5.cZgq2..

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinux configuration

selinux --enforcing

# Installation logging level

logging --level=info

# System timezone

timezone  Asia/Shanghai

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel           最小化安装

把ks文件放在 /ks目录下,在httpd主配置添加目录别名访问,请测试能否访问,如下

Alias /kss/ "/ks/"

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

将welcome.conf重命名避免其生效,必须关闭selinux

[root@centos ~]# cd /etc/httpd/conf.d/

[root@centos conf.d]# ls

mod_dnssd.conf  README  welcome.conf.bak

挂在光盘到/var/www/html/下,请测试访问网站根目录是否为光盘内容

配置DHCP服务

subnet 192.168.40.0 netmask 255.255.255.0 {

range 192.168.40.10 192.168.40.20;

option subnet-mask 255.255.255.0;

next-server 192.168.40.130; tftp服务器ip

filename "pxelinux.0"; pxe引导程序文件

}

[root@centos ~]# vim /etc/dhcp/dhcpd.conf

[root@centos ~]# service dhcpd restart

Starting dhcpd:                                            [  OK  ]

[root@centos ~]# yum install tftp-server

[root@centos xinetd.d]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@centos xinetd.d]# mount /dev/cdrom /mnt

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@centos xinetd.d]# cd /mnt/

[root@centos mnt]# cp images/pxeboot/vmlinuz /var/lib/tftpboot/

[root@centos mnt]# cp images/pxeboot/initrd.img /var/lib/tftpboot/

[root@centos mnt]# cp isolinux/* /var/lib/tftpboot/

cp: overwrite `/var/lib/tftpboot/initrd.img'? n

cp: overwrite `/var/lib/tftpboot/vmlinuz'? n

[root@centos mnt]# mkdir /var/lib/tftpboot/pxelinux.cfg

[root@centos ~]# cp isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

[root@centos ~]# chmod +wx /var/lib/tftpboot/pxelinux.cfg/default

label linux

menu label ^Install or upgrade an existing system

menu default

kernel vmlinuz  ks= "http://192.168.40.130/kss/ks.cfg" 指定ks文件位置

append initrd=initrd.img

[root@centos ~]# grep "disable" /etc/xinetd.d/tftp  更改disable项为no

disable= no

[root@centos ~]# service xinetd start   启动xinetd服务

回到192.168.40.128

[root@centos ~]# man xl.cfg

xl.cfg(5)                             Xen                            xl.cfg(5)

NAME

xl.cfg - XL Domain Configuration File Syntax 关于VMguest配置文件中各个指令的帮助

[root@centos ~]# cat /etc/xen/xlexample.pvlinux

# =====================================================================

# Example PV Linux guest configuration

# =====================================================================

#

# This is a fairly minimal example of what is required for a

# Paravirtualised Linux guest. For a more complete guide see xl.cfg(5)

# Guest name

name = "example.pvlinux"

# 128-bit UUID for the domain as a hexadecimal number.

# Use "uuidgen" to generate one if required.

# The default behavior is to generate a new UUID each time the guest is started.

#uuid = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

# Kernel image to boot

kernel = "/boot/vmlinuz"

# Ramdisk (optional)

#ramdisk = "/boot/initrd.gz"

# Kernel command line options

extra = "root=/dev/xvda1"

# Initial memory allocation (MB)

memory = 128

# Maximum memory (MB)

# If this is greater than `memory' then the slack will start ballooned

# (this assumes guest kernel support for ballooning)

#maxmem = 512

# Number of VCPUS

vcpus = 2

# Network devices

# A list of 'vifspec' entries as described in

# docs/misc/xl-network-configuration.markdown

vif = [ '' ]

# Disk Devices

# A list of `diskspec' entries as described in

# docs/misc/xl-disk-configuration.txt

disk = [ '/dev/vg/guest-volume,raw,xvda,rw' ]

[root@centos xen]# cp xlexample.pvlinux centos

[root@centos xen]# mkdir -p /images/xen

[root@centos xen]# qemu-img create -o size=100G /images/xen/centos.img 创建VMguest磁盘文件

Formatting '/images/xen/centos.img', fmt=raw size=107374182400

[root@centos xen]# mkdir /images/kernel

[root@centos xen]# cd /mnt/

[root@centos mnt]# cd isolinux/

[root@centos isolinux]# cp vmlinuz initrd.img /images/kernel/

[root@centos xen]# grep -v "^#" centos | grep -v "^$"

name = "centos6.6"

kernel = "/images/kernel/vmlinuz"  临时内核引导

ramdisk = "/images/kernel/initrd.img"

extra = "ks=http://192.168.40.130/kss/ks.cfg" 指定ks文件位置

memory = 512

vcpus = 2

vif = [ 'xenbr0' ]

disk = [ '/images/xen/centos.img,raw,xvda,rw' ]

on_boot="shutdown"

[root@centos xen]# xl create centos -c 根据VMguest的配置文件启动VM并连接登录

Parsing config from centos

[root@centos xen]# xl list

Name                                        ID   Mem VCPUsStateTime(s)

Domain-0                                     0  1022     1     r-----      54.4

centos6.6                                    5   512     2     -b----      10.7

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

安装完成后更改centos配置文件注释掉kernel,initrd, 指明disk文件,extra为空,

加bootloader=pygrub即可,笔记本做实验很吃力,无法验证结果了,,,,

总结

Xen支持PV(front-backend I/O分段虚拟化)和HVM的虚拟化,VMguest磁盘也可以是Dom0的物理分区,内核也可以使用Dom0的内核,实验关于VMguest的管理管理命令xl,网卡vif,磁盘disk的配置参数涉及的比较少,需要多xl help ,参考相关文档来进一步熟悉记忆,在Xen虚拟化平台上安装操作系统也可以使用virt-manager 图形化来管理配置VMguest.

原创文章,作者:Snoo,如若转载,请注明出处:http://www.178linux.com/48079

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值