Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383888
  • 博文数量: 80
  • 博客积分: 1750
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-13 11:35
文章分类
文章存档

2014年(3)

2013年(1)

2012年(54)

2011年(22)

分类: 虚拟化

2012-05-19 16:34:22

rhel6 kvm 备忘 FROM:http://blog.csdn.net/signmem/article/details/7489135

KVM
软件包
 virt-manager(vga), libvirt (提供 libvirted 服务),virt-viewer, kvm, virt-install
 libvirt-python (包含 python 程序接口), libvirt-client(virsh 命令)
 组管理


yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client

 egrep '(vmx|svm)' --color=always /proc/cpuinfo

/etc/init.d/libvirtd start

To check if KVM has successfully been installed, run

virsh -c qemu:///system list


ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
DNS1=145.253.2.75
GATEWAY=192.168.0.1
IPADDR=192.168.0.100
NETMASK=255.255.255.0
ONBOOT=yes
SEARCH="example.com"

ifcfg-eth0
DEVICE=eth0
HWADDR=00:1e:90:f3:f0:02
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0

reboot

[root@station10 qemu]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.f46d04ce75fa       no              eth0
                                                        vnet0
virbr0          8000.525400213680       yes             virbr0-nic

 

修改 /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

iptables 规则定义
iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT


service libvirtd restart

 

virt-install --hvm --connect qemu:///system \
    --network bridge=br0 --pxe\
    --name pxe10 --ram=756 \
    --vcpus=1 \
    --os-type=linux --os-variant=rhel5.4 \
    --disk path=/vmware/kvm/pxe.img,size=10


virt-install    --name=guest1-rhel5    --disk path=/vmware/kvm/rhel5.img,size=10   --vnc --vcpus=1 --ram=800 --network bridge=br0    --os-type=linux    --os-variant=rhel5.4 --location=/share/rhel5

 ks.cfg
%packages
@kvm

网络安装方法

virt-install    --name=kvm3-rhel7    --disk path=/vm/kvm3/kvm1.img,size=12,sparse=true \
 --graphics=vnc    --vcpus=1 --ram=800    --network bridge=br0    --os-type=linux  \
--os-variant=rhel6    --location=nfs:10.1.1.1:/share/rhel6.1 --extra-args "ks=ftp://cs:cs@10.1.1.10/my.cfg"


KVM 管理工具
 kvm 内核模块 <- qemu 管理工具 (可用性低)
 qemu 是开源虚拟化软件, 虚拟不同 CPU 架构, 可以 x86 虚拟 power cpu

 libvirt, virsh, virt-manager (redhat 的辅助工具)
 libvirt api 提供管理接口工具
 virt-manager 调用 libvirt 工具


libvirt 接口
 virsh 命令行工具
 virt-manager 图形工具
 RHEV-M (redhat 专用收费软件)
 
 支持三种虚拟设备
  Emulated software devices 仿真设备 ->  南北桥, USB, PS/2 ISA PCI
  Para-virtualized devices -> 时钟, 网络, 串口,
  Physically shared devices  --> 光纤设备
  

迁移
 在线
 离线 静态迁移


在线
共享存储的动态迁移

 动态迁移(Live Migration):也叫在线迁移(Online Migration)
 运行状态中进行迁移
 不影响在线用户使用, 未保证迁移过程中虚拟服务可用, 需短暂停机
 迁移前, 服务在源主机运行, 迁移后, 源主机与目标主机需进行短暂切换
 迁移对用户透明(不知情) 但对硬件要求高

 迁移需要使用共享存储, 迁移过程只在内存中进行
 共享存储动态迁移, 减少 DOWN 机时间


 迁移方法:
 由于源,目标主机都可以访问镜像, 只需要复制 xml 配置文件 
 
 使用 nfs 服务, 打开 virt-manager
  # Target Path:共享存储在本地的映射目录。本文中这个目录在源主机和目的主机上必须一致。
  # Format:选择存储类型。这里必须是 nfs。
  # Host Name:输入共享存储服务器,也就是 NFS 服务器的 IP 地址或 hostname。
  # Source Path:NFS 服务器上输出的共享目录

 点完成后, 自动进行挂载

 在目标机中激活
  virsh define /etc/libvirt/qemu/xxx.xml <- 主机镜像路径必须正确

 在源主机的 virt-manager 窗口中,右键点击等待迁移的虚拟机,选择“Migrate ”。

  * New host:选择目的主机的 hostname。
  * Address:填入目的主机的 IP 地址。
  * Port and Bandwith:指定连接目的主机的端口和传输带宽,本文中没有设定,使用默认设置。

 
块迁移 - 使用本地存储
 迁移频率低, 对迁移时间没有要求, 廉价, 稳定性不如 SAN  存储

迁移方法
 直接从源主机拷贝镜像文件和 XML 配置文件到目的主机中

保存虚拟机的运行状态
 如果希望保存目标主机状态, 需要对虚拟机以暂停方法进行关闭


离线
 也叫做常规迁移、离线迁移(Offline Migration)。
 关机或暂停 情况下迁移
 迁移虚拟机镜像和相应的配置文件到另外一台物理主机上
 主: 暂停, 复制  从: 重建配置, 恢复执行

 缺点: 需要停机

 先启动源主机
 在目标主机中 创建文件, 大小与原设备一致

 

虚拟虚拟化
 virt-v2v 工具, 支持 VMware ESX


最小需求
 6G 空间
 2G 内存
 支持虚拟化 64 位 CPU  --> grep -E 'svm|vmx' /proc/cpuinfo
 最多 64 个 CPU
  



http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm2/index.html

 

################## 动态迁移 ##########################

## rhel 6.1 中, 利用  virt-manager 进行迁移时候必须打开高级选项, 输入连接性中地址 ##


[ station10 ]     [ station20 ] <- sdb -> /vm

 |       |

 |---------------------------|

    |    
   [ station19 ]
 iscsi 存储

文件位置  /dev/sdb  -> /vm/kvm/rhel5.img
配置 /etc/libvirtd/qemu/net5.xml

 

步骤
 1. station10 利用 virt-manager 连接 /vm/kvm/rhel5.img

  建立 guest -> net5 并启动
步骤

 2. 复制 station10 /etc/libvirtd/qemu/net5.xml  --> station20 相同位置

 

 [root@station10 /]# virsh list
 Id
 名称               状态

 ----------------------------------

 2 net5                 running

 

[root@station20 ~]#  virsh list

 Id 名称               状态
 
----------------------------------

 (空)
 
 


station10 启动后安装 -> yum install -y firefox wireshark

 

步骤3 动态迁移.
 
先利用 ssh, ftp 等工具登录到 net5 主机中 (测试是否断开了链接)

  virsh migrate --live net5 qemu+ssh://10.1.1.20/system

 

同步过程中

[root@station20 ~]#  virsh list

Id 名称               状态

----------------------------------

  2 net5                 暂停

 

命令执行成功后


[root@station10 /]# virsh list

 Id 名称               状态

----------------------------------

(空)


[root@station20 ~]#  virsh list

 Id 名称               状态

----------------------------------

2 net5                 running

 

ssh, ftp 链接没有被断开
安装过的资料仍然存在

[root@localhost ~]# rpm -qa | grep -E 'wireshark|firefox'

firefox-3.0.18-1.el5_4

wireshark-1.0.8-1.el5_3.1

 如果要利用 virt-manager 进行迁移:


 (环境,  station20 中没有建立任何虚拟机)
 建立链接后,双击主界面中新增加链接 (iscsi 配置,有 bug)
 
 \-> 存储
  
   \-> + (增加)
   
    名称: net5
   
    类型: iscsi 目标
    
      \-> 目标路径: /vm
     
       格式:
     
       主机名 10.1.1.19
     
       源路径: iqn.2011-03.com.cluster.station20:kvm

       
 rm -rf /etc/livbirtd/qemu/net5.xml

 
 
 在 station10 主界面中点 add-connection
 
 
  程序管理: qemu-kvm
 
   connection to remote host: ssh
 
   user: root  <- 建立 ssh 密钥
 
   主机名: 10.1.1.20


   
   建立链接后,双击主界面中新增加链接 (iscsi 配置,有 bug)
 
    \-> 存储
  
     \-> + (增加)
   
      名称: net5
   
      类型: iscsi 目标
    
       \-> 目标路径: /vm
     
        格式:
     
        主机名 10.1.1.19
     
        源路径: iqn.2011-03.com.cluster.station20:kvm

 
  
 完成后, 自动建立 iscsi 链接

 存储池建立具有故障, 无法继续操作


建立链接后,

 双击主界面中新增加链接 (nfs配置)
 
  \-> 存储
  
   \-> + (增加)
   名称: rhel-net
   类型: netfs:网络导出的目录

    \-> 目标路径: /net/kvm  <- 必须与源主机一致 (station10=20 )
 
      格式: nfs
     
      主机名 10.1.1.19
     
      源路径: /vm/kvm

 

 

点完成后, station20 会自动挂载
存储页面增加一新标签,并能够查询使用情况
 

 新建卷
  \-> 名称 [net-rhel5].img <- 必须区别源卷
   
     格式 qcow2
   
     最大容量: 1000 mb
   
     分配 0 mb


完成后, 直接点虚拟机中迁移按钮则可以


################## 动态迁移 ##########################

para 虚拟设备

para-virtual
 1. 增强了 I/O 性能
 2. 推荐在 I/O 负载大的应用程序中使用 PARA 虚拟化
 3. 使用 PARA 虚拟化, 必须使用驱动, 默认 rhel4.7  rhel5.4, rhel6.0 都具备该功能
 4. windows 客户端必须手动装载驱动

模块由软件包 virtio  提供, 并包括
 virtio-net 网络驱动
 virtio-blk 存储驱动 (无法支持软驱)
 虚拟时钟 -> grep constant_tsc /proc/cpuinfo 检测 CPU 是否支持

rhel3.9 或其他底版本需要手动加载 para 模块, 参考官方文档
windows 也同样需要, 参考官档


增加新磁盘使用 para 虚拟设备
 设备类型选择 virtio disk


增加新网络使用 para 虚拟设备
 设备类型使用 virtio

pci 设备识别
 virsh nodedev-list --tree
 virsh nodedev-list | grep pci <- 只获得 pci 设备 (利用 lspci -n 获得对应设备信息)

如 pci_0000_00_1a_7 该设备

$ printf %x 0
0
$ printf %x 26
1a
$ printf %x 7
7

对应变量值为
bus='0x00'
slot='0x1a'
function='0x7'

#

# virsh edit win2k3

 
     


 

selinux 允许使用该 pic
setsebool -P virt_use_sysfs 1

virsh start win2k3 启动该设备

而利用 virt-manager 可以直接增加 物理硬件设备

 

如果新安装时需要使用硬件设备
virsh nodedev-list --tree
virsh nodedev-list | grep pci


irt-install \
 -n hostdev-test -r 1024 --vcpus 2 \
 --os-variant fedora11 -v \
 -l http://download.fedoraproject.org/pub/fedora/linux/development/x86_64/os \
 -x 'console=ttyS0 vnc' --nonetworks --nographics  \
 --disk pool=default,size=8 \
 --debug --host-device=pci_8086_10bd  <-  --host-device=pci_8086_10bd

阅读(1908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~