热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Xen虚拟机介绍和使用

虚拟化概念:宿主机器(真实机器)客户机器(虚拟机,guestos)优势:节约资源:空间,电力。方便测试环境的搭建。方便服务在线迁移。虚拟化技术:半虚拟化:客户机器操作系统必须是修改过的,才能使用半虚拟化。不需要cpu支持硬件虚拟化技术。

虚拟化
概念:
 宿主机器(真实机器)
 客户机器(虚拟机,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_source


File: 磁盘镜像的存放路径
 默认:/var/lib/xen/images/node1.img
 可以自己修改一个路径:
  /vmware/xen/images/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/images/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/node1


name = "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/images/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/images/


 静态迁移:
  客户机在关闭的情况下进行的。导致服务出现短期的暂停。也能够在迁移之后保持迁移之前的运行状态。暂停所需要的时间依赖于磁盘镜像远程拷贝的时间。原理是什么?存储还原法。
  1、保存当前处于运行状态客户机的内存数据到文件
# xm save node4 /vmware/xen/images/node4_mem.save
  2、关闭客户机器 <---在保存内存数据的时候被自动关闭


  3、移动相关配置文件和镜像文件到新的宿主机器上。
# rsync -alvR /etc/xen/node4 10.1.1.100:/
# rsync  -alvR /vmware/xen/images/node4.img 10.1.1.100:/
# rsync -alvR /vmware/xen/images/node4_mem.save 10.1.1.100:/
  4、进行还原内存数据
  在新的宿主机器上进行还原:
# xm restore  /vmware/xen/images/node4_mem.save
  


 动态迁移(在线迁移)
  客户机在保持运行的状态下进行,不会导致或者只会导致非常短期的暂时,察觉不到。
  除了上面的基本条件之外,还必须保证被迁移客户机的磁盘镜像必须是存放在共享存储。


 Dom0   Dom0
 |
 DomU  ---在线迁移---->   DomU
 |   |
 --------------------------
  共享存储:磁盘镜像文件 《---独立存储设备

  理由:不需要在迁移过程中,拷贝镜像文件。


  共享存储: iscsi,gnbd,nfs,nas,san


  测试环境:使用nfs作为共享存储。

由于实验环境中的所有客户机当初并没有考虑到在线迁移,都是安装本地存储。所以为了做在线迁移实验,只能模拟共享存储环境。
 把原本的镜像文件通过nfs导出。
/vmware/xen/images *(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 restart

2、需要手工把配置文件迁移过去
# rsync -alvR /etc/xen/node2 10.1.1.100:/

3、在线迁移内存数据。
# xm migrate -l node2 10.1.1.100
 把本机的node2客户机进行在线迁移到10.1.1.100


推荐阅读
  • 近期,考虑到在Vim内部进行GDB调试、运行Python脚本和数据库连接等多样化需求,思考是否可以通过集成终端来简化这些操作,而非逐一编写Vim脚本来实现。通过研究发现,确实存在一种高效的方法——利用特定插件实现终端功能的整合。 ... [详细]
  • 本文介绍了在MacOS上通过Homebrew安装Anaconda3,并配置环境变量以实现不同Python版本之间的快速切换。同时,提供了详细的步骤来创建和管理多个Python环境。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文介绍如何在Linux系统中卸载预装的OpenJDK,安装指定版本的JDK 1.8,并配置防火墙以确保系统安全性和软件兼容性。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 利用SSH隧道实现外网对局域网机器的安全访问
    本文探讨了一种常见的网络配置问题及其解决方案,即如何在外网环境下安全地访问位于局域网内的计算机。特别介绍了使用SSH反向隧道技术来实现这一目标的具体步骤和注意事项。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • Linux网络安装指南
    本文详细介绍了如何通过网络安装Linux操作系统,包括必要的服务配置和常见问题解决方法,旨在帮助IT专业人士提高系统部署效率。 ... [详细]
  • VMware Horizon View 5.0桌面虚拟化部署实践与心得
    在近期的研究中,我花费了大约两天时间成功部署了桌面虚拟化环境,并在此过程中积累了一些宝贵的经验。本文将分享这些经验和部署细节,希望能对同样关注桌面虚拟化的同行有所帮助。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
author-avatar
幸福欧旭旭_320
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有