xen kvm

1,查看是否支持硬件虚拟化
egrep --color=auto ‘(vmx|xvm)‘ /proc/cpuinfo

2,安装xen
 yum -y install xen kernel-xen

3,title CentOS (3.7.4-1.el6xen.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=512M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin
        module /vmlinuz-3.7.4-1.el6xen.x86_64 ro root=UUID=44a2a303-b91c-46cf-9fde-fd8119b9cb1c rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD LANG=zh_CN.UTF-8 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet
        module /initramfs-3.7.4-1.el6xen.x86_64.img

4,创建映像文件
 dd if=/dev/zero of=/data/xen/test1.img bs=1M oflag=direct seek=102399 count=1

5,创建桥设备
 cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
[[email protected] network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
#HWADDR="00:0C:29:48:E3:01"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
#UUID="8331e082-ba65-43bc-9e98-12dedf151d87"
BRIDGE=br0

[[email protected] network-scripts]# cat ifcfg-br0
DEVICE="br0"
BOOTPROTO="none"
#HWADDR="00:0C:29:48:E3:01"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR=192.168.100.202
NETMASK=255.255.255.0
TYPE="Bridge"
#UUID="8331e082-ba65-43bc-9e98-12dedf151d87"

6,创建一个配置文件
#vim /etc/xen/test1
kernel = "/tmp/vmlinuz"
ramdisk = "/tmp/initrd.img"
memory = 512
name = "test1"
vcpus = 1
vif = [ ‘bridge=br0‘ ]
disk = [ ‘file:/data/xen/test1.img,xvda,w‘ ]

7,启动虚拟机
xm create test1

安装系统

8,改配置文件重起系统
[[email protected] xen]# vim test1
memory = 512
bootloader="/usr/bin/pygrub"
vcpus=1
on_reboot = ‘restart‘
on_crash = ‘destroy‘
name = "test1"
vif = [ ‘bridge=br0‘ ]
disk = [ ‘file:/data/xen/test1.img,xvda,w‘ ]
------------
disk = [ "phy:sdc,xvda,w",‘file:/data/xen/test1.img,xvda,w‘ ]
phy表示物理磁盘

vif = [ "mac=xxxxx,bridge=br0,script=vif-bridge" ]

-----------------
xm create test1

当启动虚拟机后会有一个虚拟网卡桥到本机
vif6.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:272 (272.0 b)  TX bytes:1404 (1.3 KiB)

本机会有一个仅主机的虚拟网卡
virbr0    Link encap:Ethernet  HWaddr 52:54:00:95:6C:DE  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:272 (272.0 b)  TX bytes:0 (0.0 b)

可以拷贝以前的img文件直接启动另一个虚拟机

完成

~

io半虚拟化设备分为前端和后端,前端在个domU上
后端在dom0上,domU有一个特殊驱动能识别前端的这个特殊的设备
如:( /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/net/xen-netfront.ko ),
并且在处理数据的时候只是简单的处理,然后交给后端,这样大大提高了性能
如果io是完全虚拟化,domU看到的是一个真正的设备(虚拟的)
在发生数据时前端后端都要对数据进行处理,影响性能

区分虚拟和模拟的一个重要标准是,在模拟中虚拟机的任何cpu指令都是运行在vcpu
上的,而在虚拟中非特权指令是直接运行在物理cpu上的,只有特权指令才交给vmm
翻译执行

io的半虚拟化和cpu的半虚拟没有关系,cpu半虚拟化,io可以完全虚拟化
但是明显半虚拟化性能好

虚拟需要cpu支持硬件虚拟化,就是cpu在生产的时候有五个ring
宿主机的kernel运行在ring -1 ,

完全虚拟化的两种加速方式:BT HVM

xen的半虚拟化:
xen运行在硬件上直接管理cpu memory 另外运行一个特权域
管理io和其他的设备 各虚拟机知道自己运行在虚拟的环境中(因为kernel经过修改)
对特权指令的调用会发起:hyper call,而不是直接运行 非特权还是直接在Cpu上运行

[[email protected] tmp]# yum -y install xen-4.1.2-20.el6.x86_64.rpm  xen-runtime-4.1.2-20.el6.x86_64.rpm xen-libs-4.1.2-20.el6.x86_64.rpm xen-licenses-4.1.2-20.el6.x86_64.rpm xen-hypervisor-4.1.2-20.el6.x86_64.rpm kernel-xen-3.7.4-1.el6xen.x86_64.rpm kernel-xen-release-6-4.noarch.rpm bridge-utils-1.5-2.el6.x86_64.rpm kernel-xen-firmware-3.7.4-1.el6xen.x86_64.rpm

title CentOS (3.7.4-1.el6xen.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=512M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin
        module /vmlinuz-3.7.4-1.el6xen.x86_64 ro root=UUID=44a2a303-b91c-46cf-9fde-fd8119b9cb1c rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD LANG=zh_CN.UTF-8 rd_NO_LVM crashkernel=auto rhgb quiet rd_NO_DM rhgb quiet
        module /initramfs-3.7.4-1.el6xen.x86_64.img

service xend start

xm list
xl info
xl help
xen虚拟状态:
    r:
    b: 阻塞
    p: 暂停
    s: 停止
    c: 崩溃
    d: dying, 正在关闭的过程中

dd if=/dev/zero of=centos.img bs=1M oflag=direct seek=1023 count=1
# mount -o loop centos.img /mnt

xm的配置文件:
    kernel:内核
    ramdisk: initramfs或initrd
    name: 域名称
    memory: 内存大小
    disk: 磁盘设备文件列表,格式disk=["disk1", "disk2",], 每个disk都由三个参数进行定义:“backend-dev”,“frontend-dev”,“mode”
        backend-dev: 有两种类型,物理设备,虚拟磁盘映像文件,格式为分别为phy:device和file:/path/to/image_file;
        front-dev: 定义其在DomU中设备类型;虚拟磁盘映像文件对应的设备文件名称通常为xvd[a-z]
        mode: 访问权限模型,r, w
    vcpus: 虚拟CPU的个数;
    root: 根文件系统所在的设备;
    extra: 传递给内核的额外参数;selinux=0
    on_reboot: 执行xm reboot命令时的操作,有destroy和restart;
    on_crash: 有destroy, restart, preserve(保存崩溃时的信息以用于调试)
    vif :vif = [‘ip="172.16.100.11", bridge=br0‘]
        type: 设备类型,默认为netfront
        mac: 指定mac地址;
        bridge: 指定桥接到的物理设备
        ip: ip地址;
        script: 配置此接口的脚本文件
        vifname: 后端设备名称
    bootloader: 引导器文件的路径,一般指的PyGrub的路径;

xm console centos6

[[email protected] network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
IPV6INIT="no"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE="br0"

[[email protected] network-scripts]# cat ifcfg-br0
DEVICE="br0"
BOOTPROTO="none"
IPADDR="192.168.100.26"
IPV6INIT="no"
MTU="1500"
NETMASK="255.255.255.0"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Bridge"

# brctl stp br0 on

在配置文件/etc/xen配置kernel initrd 为安装引导的 定义好vcpu memory disk
vif = [ ‘dridge=br0‘]
disk = [ ‘file://xen/vm2/centos6.img,xvda,w‘]

然后
xm create -c centos6
xm list
xm destory centos6
安装好后 修改/etc/xen kernel........
bootloader = "/usr/bin/pugrub"

只要写了bootloader后就不需要在写kernel initrd root extra
因为bootloader会读取虚拟磁盘上的启动引导扇区,加载kernel

样例配置文件有两种xm and xl

显示采用c/s架构vfb帧缓冲,在虚拟机启动一个图形显示请求,然后发送给dom0
在dom0安装tigervnc-server
启动vcn:  vncserver :1

qemu-img -f qcow2 -o size=120G,preallocation=metadata /xen/xm1/centos6.qcow2

qemu-img info /xen/xm1/centos6.qcow2

使用了bootloader, pygrup示例:
#ramdisk="/boot/initramfs-2.6.32-358.el6.x86_64.img"
#kernel="/boot/vmlinuz-2.6.32-358.el6.x86_64"
name="linux"
vcpus=1
memory=128
disk=[‘file:/xen/vm2/dom2.img,xvda,w‘,]
bootloader="/usr/bin/pygrub"
#root="/dev/xvda2 ro"
#extra="selinux=0 init=/sbin/init"
vif=[ ‘bridge=br0‘ ]
on_crash="destroy"
on_reboot="restart"

使用Dom0中的kernel和ramdisk引导的示例:
ramdisk="/boot/initramfs-2.6.32-358.el6.x86_64.img"
kernel="/boot/vmlinuz-2.6.32-358.el6.x86_64"
name="test"
vcpus=1
memory=128
disk=[‘file:/xen/vm1/test.img,xvda,w‘,]
root="/dev/xvda ro"
extra="selinux=0 init=/sbin/init"

自定义安装,并启用了vnc功能:
#ramdisk="/xen/isolinux/initrd.img"
#kernel="/xen/isolinux/vmlinuz"
name="rhel6"
vcpus=2
memory=512
disk=[‘file:/xen/vm3/rhel6.img,xvda,w‘,]
bootloader="/usr/bin/pygrub"
#root="/dev/xvda2 ro"
#extra="selinux=0 init=/sbin/init"
#extra="ks=http://172.16.0.1/rhel6.x86_64.cfg"
vif=[ ‘bridge=br0‘ ]
on_crash="destroy"
on_reboot="destroy"
vfb=[ ‘vnc=1,vnclisten=0.0.0.0‘ ]

yum -y install libvirt
service libvirtd start
yum install virt-manager
yum -y install virt-viewer
virt-install -n "centos6.4" -r 512 --vcpu=1 -l http://172.16.0.1/centos6.4/ --disk path=/xen/vm1/centos6.4.qcow --network bridge=br0 --force

----------------------------------------
kvm
# grep -Ei --color=auto "vmx|svm" /proc/cpuinfo
1,先配置好桥

2,安装包,模块

# modprobe kvm_intel
# modprobe kvm
# lsmod | grep kvm
kvm_intel              54285  0
kvm                   333172  1 kvm_intel

yum -y install libvirt
service libvirtd start
yum install virt-manager
yum -y install virt-viewer qemu-kvm qemu-kvm-tools virt-install

3,create disk img
# qemu-img create -f qcow2 -o preallocation=metadata /images/vm2/test.qcow2 10G
# qemu-img resize /images/vm2/test.qcow2 +10G    增到10G
Image resized.
# qemu-img info /images/vm2/test.qcow2
image: /images/vm2/test.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 1.7M
cluster_size: 65536

转换格式:
# qemu-img create -f vmdk -o ? test.vmdk        #模拟查看相关的帮助信息
Supported options:
size             Virtual disk size
adapter_type     Virtual adapter type, can be one of ide (default), lsilogic, buslogic or legacyESX
backing_file     File name of a base image
compat6          VMDK version 6 image
     
# qemu-img convert -O vmdk -o adapter_type=lsilogic /images/vm2/test.qcow2 /images/vm2/test.vmdk
转换成VMware的vmdk格式
# qemu-img info /images/vm2/test.vmdk
image: /images/vm2/test.vmdk
file format: vmdk
virtual size: 20G (21474836480 bytes)
disk size: 16K

创建快照
# qemu-img snapshot -l /images/vm1/rhel6.qcow2       创建之前查看是否有快照;建议不要同名
# qemu-img snapshot -c rhel6-1.snap /images/vm1/rhel6.qcow2
# qemu-img snapshot -l /images/vm1/rhel6.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         rhel6-1.snap              0 2014-05-25 10:51:34   00:00:00.000
 
Parameters to snapshot subcommand:        #详细帮助
  ‘snapshot‘ is the name of the snapshot to create, apply or delete
  ‘-a‘ applies a snapshot (revert disk to saved state)        应用快照
  ‘-c‘ creates a snapshot                                     创建快照
  ‘-d‘ deletes a snapshot                                     ***快照
  ‘-l‘ lists all snapshots in the given image                 查看快照列表

4,安装
为了显示方便;需要安装vnc软件
# yum -y install tigervnc tigervnc-server
#ln -sv /usr/libexec/qemu-kvm /usr/bin
#qemu-img create -f qcow2 -o size=100G,preallocation=metadata /data/test3.img
qemu-kvm -name "redhat" -m 512 -smp 1 -drive file=/data/test3.img,\
> if=virtio,index=0,media=disk,format=qcow2 \
> -drive file=/root/rhel-server-6.4-i386-dvd.iso,media=cdrom,index=1 \
> -boot order=d
使用# vncviewer :5900连接查看,如果打不开安装下面的包
#yum install xorg-x11-server-Xorg

-------------
以pxe引导安装
#需要网卡支持;所以需要写一个配置网卡接口的脚本;默认在/etc/qemu-ifup
# vim /etc/qemu-ifup
#!/bin/bash
#
switch=br0
if [ -n $1 ];then
        ifconfig $1 up
        sleep 1
        brctl addif $switch $1
        exit 0
else
        echo "Error: No Specifed interface."
        exit 1
fi
# chmod +x /etc/qemu-ifup
#脚本能自动调用命令中ifname=""网卡的名称

# qemu-kvm -name "test1" -m 512 -smp 1 -drive file=/data/test1.qcow2,media=disk,if=virtio,index=0,format=qcow2 -net nic,model=virtio -net tap,ifname=vnet0,downscript=no -boot order=c
VNC server running on `::1:5900‘

# vncviewer :5900

-----pxe安装virt-install
# virt-install --name "centos6" -r 512 --vcpus 2 --disk path=/images/vm2/centos.img,size=120 --network bridge=br0,model=virtio --pxe --force

用virt-manager查看,如果有乱码安装一下包
#yum install dejavu-lgc-sans-fonts

如果键盘不一致

open-->deftails-->dispiay VNC-->keymap=en-us

xen kvm,布布扣,bubuko.com

时间: 2024-10-10 14:39:09

xen kvm的相关文章

VPS的虚拟化技术—-XEN,KVM,OPENVZ

市场上的VPS商家主要有 Xen ,KVM 和 OpenVZ 三种开源的虚拟化技术 Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达 100个满特征的操作系统.操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性).这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化. KVM(kernel-based Virtual Machine)的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版

初试集群虚拟化搭建(二)—— Xen, kvm, OpenStack, VMware ESXi, Citrix XenServer等种种选择

小伙伴们找到了一些主流方案的资料,最终选择了XenServer6.5作为平台搭建. Xen 特点: 功能强大,支持Linux的各种发行版本 通常是在现有Linux操作系统上安装,是一种半虚拟化的安装方式 架构: 资料: 1)在 CentOS 6.5 上安装和配置 Xen 2)Xen Made Easy 上个资料里提到的为了减少源码编译难度,有大牛直接编写的建议安装版本 使用感受: 1)没有使用Xen Made Easy,而是使用源码编译安装Xen,经过了将Linux内核从2.6升级到3.2的步骤

Xen KVM虚拟化ipmi错误答案

问题说明: 用DEll R720服务器安装xen,kvm服务.创建好guest并启动,进入系统,系统运行都没问题,不过开机的时候发现一个failed提示,如下 Xen DomU启动中提示 # dmesg | grep PCIPCI: Warning: Cannot find a gap in the 32bit address rangePCI: Unassigned devices with 32bit resource registers may break!Allocating PCI r

Xen、KVM和VirtualBox比拼

vbox 与 kvm 的区别: vbox 是由 qemu 改写而成,包含大量 qemu 代码.可以使用于 不支持 虚拟化的cpu.值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速.cpu控制不理想(估计是因为图形支持的缘故).操作上有独立的图形界面,易于上手. kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行).cpu 必须支持虚拟化.性能,作为服务器很好,可是图形能力十分的差.即使放电影,图像也是像刷油漆一样,一层一层的.cpu使用率控制很好. 控制上比较简洁

基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具

1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是我们选择它的原因.官方网站http://www.proxmox.com. Proxmox VE (Proxmox VirtualEnvironment) 是一个非常棒的集成OPENVZ[1]支持KVM[2]应用的环境.有方面易用的WEB界面,基于JAVA的UI和内核接口,可以登录到VM客户方便的操作

kvm虚拟化管理

虚拟化 KVM (kernel-based virtual machine) 常见的一些虚拟化的软件xen kvm vmware esx openVZ Oracle VM VirtualBox vsphere rhel5 xen rhel6 kvm rhel7 kvm 半(准)虚拟化: 客户机器操作系统内核必须是修改过的,才能使用半虚拟化. 硬件虚拟化技术. 典型代表: Xen 全虚拟化: 必须cpu支持硬件虚拟化. 客户机器不需要修改内核,原则上可以安装任何的操作系统. Intel # cat

CentOS 6.5安装Xen虚拟化

一.Xen虚拟化原理详解 查看Xen原理详解请点击 二.RHEL系统版本和Xen的关系 rhel 5.3: xen kernel-xen, xen kernel rhel 5.4: xen, kvm kernel-xen, xen = vmm kernel, kvm = vmm rhel 6.0: xen-, kvm rhel6.0+ 只支持运行为DomU中的系统 Linux: 2.6.24+: 收录进来了将Linux运行Xen DomU中的代码: Linux: 2.6.37+: 收录进来了将L

Redhat 5.4 64 安装 kvm(虚拟机一)

在 Red Hat Enterprise Linux 5.4 Release Notes 上面談到關於虛擬化將同時支援兩種平台 Xen + KVM(Kernel-based Virtual Machine),安裝完成的兩個核心將使用不同的 hypervisor (Xen / KVM) 不過預設還是使用 Xen 的核心來開機,另外只有 x86_64 的版本才有支援 KVM (Kernel-based Virtual Machine)目前的 KVM 支援 FV(Fully Virtualized)

linux kvm libvirt学习

1.什么是Libvirt,作用是什么 统一的虚拟化管理工具来管理各种各样的hypervisor,包括xen,kvm,hypervisor,lxc 管理内容:虚拟机管理.虚拟设备管理.远程控制 2.KVM的安装 前提条件,先安装kvm,再安装libvirt apt-get install qemu-kvm ubuntu-vm-builder bridge-utils 安装完后,启用kvm内核模块 modprobe kvm modprobe kvm_intel modprobe kvm_amd 安装