虚拟化
概念: 宿主机器(真实机器) 客户机器(虚拟机,guest os)优势:
节约资源:空间,电力。 方便测试环境的搭建。 方便服务在线迁移。虚拟化技术:
半虚拟化: 客户机器操作系统必须是修改过的,才能使用半虚拟化。 不需要cpu支持硬件虚拟化技术。典型代表: Xen
全虚拟化: 必须cpu支持硬件虚拟化。 客户机器不需要修改内核,原则上可以安装任何的操作系统。 Intel # cat /proc/cpuinfo | grep vmx AMD : svm典型代表: kvm , VMware ESXi
==========================================使用Xen
# yum install xen kernel-xen -y
# yum install libvirt libvirt-python python-virtinst virt-manager virt-viewer -y重启,选择进入kernel-xen内核
还需要启动:xend ,libvirtd 服务概念:
客户机的名字(domain),与客户机上跑的操作系统里的主机名是两回事。domain名字是用于管理与区别客户机器用的。 肯定会存在第一个客户机,它是保留的,其实它代表宿主机器,不能对他进行任何管理操作,习惯称为Dom0. 其他手工建立的客户机,称为DomU
例子1:使用图形界面安装客户机
# virt-manager
安装源 nfs:10.1.1.22:/soft/rhel5_sourceFile: 磁盘镜像的存放路径
默认:/var/lib/xen/p_w_picpaths/node1.img 可以自己修改一个路径: /vmware/xen/p_w_picpaths/node1.img
例子2:基于命令行安装客户机器
# virt-install -n node2 -r 512 --vcpus=1 -p -l nfs:10.1.1.22:/soft/rhel5_source -x "ks=nfs:10.1.1.22:/soft/rhel5_source/xen-ks.cfg" -f /vmware/xen/p_w_picpaths/node2.img -s 15 -b xenbr0
安装过程中,可以把客户机窗口关闭,之后可以通过:
# virt-viewer node2 《--再次查看
xen的相关配置文件
xen主配置目录:/etc/xen/ 主配置文件 # vim /etc/xen/xend-config.sxp(network-script 'network-bridge netdev=eth0') 《--xenbr0是桥接到物理网卡eth0
注意''号 修改了之后: # service libvirtd restart # service network restart 如果还不行: /etc/xen/scripts/network-bridge stop /etc/xen/scripts/network-bridge netdev=eth0 start 查看桥接网络信息: # brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes xenbr0 8000.feffffffffff no peth0 <--peth0说明桥接到eth0 vif0.0备注: virtbr0 相当于vmware的host only ,该网络只允许客户机之间通讯,客户机与宿主机通信
xenbr0 相当于vmware的桥接,允许客户机和宿主机器以外的机器通讯。 删除桥接网络 # ifconfig virbr0 down # brctl delbr virbr0# brctl help
xen网卡设备的说明: 假设原有的物理网卡是eth0,当启用了xend和libvirtd之后: 原有物理网卡eth0被改名为peth0 新建立一个虚拟网卡设备叫eth0 virbr0 ,默认的虚拟网络,相当于host only,由libvirtd服务生成 配置文件/etc/libvirt/qemu/networks/default.xml xenbr0 ,由xend和libvirtd功能生成的真正意义的桥接网络,默认是桥接物理网卡eth0 vif0.0,vif0.1 分别对应运行时候客户机的ID号,是客户机里的网卡在宿主主机器上的抽象。 例如vif4.0 代表运行ID为4的客户机ID为4的客户机 绑定的IP 10.1.1.28
命令行管理客户机:
# xm --help
# xm list
Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1500 2 r----- 3843.0 node1 4 511 1 -b---- 23.5 ^客户机domain# xm list -l
直接关客户机 # xm destroy "domain name" shutdown reboot启动客户机:
# xm create node1 或者 # xm create node1 -c 把客户机的画面输出到终端如果把终端输出结束
logout ctrl + ]把已经启动的客户机的画面输出到终端,前提:客户机必须是3级别模式启动
# xm console node1 每个客户机都有对应配置文件,存放在/etc/xen/ 如: /etc/xen/node1name = "node1"
uuid = "dda031a3-9bb6-7af9-dff1-bd49ca0a9e2d" maxmem = 512 memory = 512 vcpus = 1 bootloader = "/usr/bin/pygrub" on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" vfb = [ "type=vnc,vncunused=1,keymap=en-us" ] disk = [ "tap:aio:/vmware/xen/p_w_picpaths/node1.img,xvda,w" ] vif = [ "mac=00:16:36:71:fc:f4,bridge=xenbr0,script=vif-bridge" ]思考:如何手工克隆客户机
关闭被克隆的客户机 1、拷贝并且重命名配置文件 2、修改name和uuid 3、拷贝镜像文件并且重命名,修改配置文件指定正确的路径 4、修改网卡的MAC地址 建议:一般修改了配置文件或者新增了配置,建议重启xend,或者关闭vm管理器图形界面 ================================================= ACTION=="add", SUBSYSTEM=="net",SYSFS{address}=="00:d0:b7:d3:10:a2",KERNEL=="eth*",NAME="eth0"==================================================================
客户机迁移:
迁移:就是把客户机器移动到另外一个宿主机器上运行。 必须满足以下条件: 1、原宿主机器和新宿主机器要有相同的体系结构:cpu 2、必须是同一个子网 3、所桥接的网络必须一样。例如:被迁移客户机是使用xenbr0,那么新的宿主机器必须也有相同类型xenbr0设备,名字必须一样。 4、足够的磁盘空间 ,并且磁盘镜像文件的路径必须保持一致。/vmware/xen/p_w_picpaths/
静态迁移: 客户机在关闭的情况下进行的。导致服务出现短期的暂停。也能够在迁移之后保持迁移之前的运行状态。暂停所需要的时间依赖于磁盘镜像远程拷贝的时间。原理是什么?存储还原法。 1、保存当前处于运行状态客户机的内存数据到文件 # xm save node4 /vmware/xen/p_w_picpaths/node4_mem.save 2、关闭客户机器 <---在保存内存数据的时候被自动关闭3、移动相关配置文件和镜像文件到新的宿主机器上。
# rsync -alvR /etc/xen/node4 10.1.1.100:/ # rsync -alvR /vmware/xen/p_w_picpaths/node4.img 10.1.1.100:/ # rsync -alvR /vmware/xen/p_w_picpaths/node4_mem.save 10.1.1.100:/ 4、进行还原内存数据 在新的宿主机器上进行还原: # xm restore /vmware/xen/p_w_picpaths/node4_mem.save 动态迁移(在线迁移) 客户机在保持运行的状态下进行,不会导致或者只会导致非常短期的暂时,察觉不到。 除了上面的基本条件之外,还必须保证被迁移客户机的磁盘镜像必须是存放在共享存储。Dom0 Dom0
| DomU ---在线迁移----> DomU | | -------------------------- 共享存储:磁盘镜像文件 《---独立存储设备理由:不需要在迁移过程中,拷贝镜像文件。
共享存储: iscsi,gnbd,nfs,nas,san测试环境:使用nfs作为共享存储。
由于实验环境中的所有客户机当初并没有考虑到在线迁移,都是安装本地存储。所以为了做在线迁移实验,只能模拟共享存储环境。
把原本的镜像文件通过nfs导出。 /vmware/xen/p_w_picpaths *(rw,sync,no_root_squash)内存数据是如何同步?
1、需要修改原宿主机器和新宿主机器的配置文件,让起支持在线迁移
# vim /etc/xen/xend-config.sxp (xend-unix-server yes) (xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '') (xend-relocation-hosts-allow '') #(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')重启xend
# service xend restart2、需要手工把配置文件迁移过去
# rsync -alvR /etc/xen/node2 10.1.1.100:/3、在线迁移内存数据。
# xm migrate -l node2 10.1.1.100 把本机的node2客户机进行在线迁移到10.1.1.100