全部博文(80)
分类: 虚拟化
2012-05-19 16:34:22
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