ovirt-node KVM开源系统介绍
开源社区 ovirt-node 介绍
ovirt-node 是开源社区 oVirt 的一个开源项目,它是基于 KVM 和 Linux 技术的一套最 小化的 Linux 系统,它只提供最基本的操作 系统功能以及虚拟机管理等,
在整个虚 拟化系统中充当节点主机的功能,是整个虚拟化平台的一个重要组成部分。它具有 小巧,灵活,方便定制等特点。
本 文在功能和结构上介绍了 ovirt-node,以及 ovirt-node 的获得,安装,定制化等工作。
ovirt-node 是开源虚拟化管理平台 oVirt 的客户端部分,它是一个经过定制的最小化 fedora 系统,充当虚拟机管理器(Hypervisor)host 的角色,
与管理端 overt-engine 组成一个虚拟化管理平台。ovirt-node 以其小巧,灵活的特点,可以很方便地进行开发与定制。
overt-node 项目简介
ovirt-node 简介
ovirt-node 是 Ovirt 社区的一个开源项目,它的目的是构建一个精简、健壮的操作系统镜像,该镜像可以使用最小化的资源去提供控制虚拟机的能力运行在其上面的虚拟机。
简单地说 ovirt-node 是一个小的主机镜像,该镜像提供 libvirt/vdsm(Virtual Desktop Server Manager) 和 KVM(Kernel based virtual machine) 等虚拟化服务,使用 libvirt/vdsm 管理 KVM 虚拟机。
ovirt-node 与普通的 linux 发行版的区别在于 ,ovirt-node 专注于提供虚拟化功能,它只包含了最小化的操作系统所需要的软件和虚拟机管理软件 , 大约只有 200 多个 rpm 安装包;
具备良好管理界面的 API。相比于普通的 Linux 发行版,ovirt-node 的只需要一个很小的运行环境,
其安装镜像小于 150M,安装到磁盘空间也只有不到 1G,运行时存储器仅需 500M,另外,也可以根据需求定制虚拟机管理软件,如 libvirt/VDSM。
正因为 ovirt-node 是基于 minimal fedora 系统进行定制化的,所以使得 ovirt-node 的安装镜像很小,
除了需要安装一些必要的系统管理软件,网络管理软件等,还需要包含 kvm 模块,一起管理 kvm 的 libvirt 或 VDSM 等。
因此,完全可以忽略由于运行 ovirt-node 带来的资源的开销,从而,可以将更多的资源分配给节点中的虚拟机。
图 1. 所示为整个虚拟化平台的各部分构成
Overt-node 的构成
ovirt-node 通常下以 iso 和 rpm 形式发布,其主要包含的 rpm 有两类:
ovirt-node 相关的 rpm 包 :1)一个方便用户安装和配置的 TUI 界面,用户可通过此图形化锦棉方便地进行配置;2)自动化安装和配置脚本;3)经过定制的 sysinit 脚本。
ovit-node-tools :1)一些 kickstart 文件;2)Minimal 安装包的列表和一些创建 image 的工具。
ovirt-node 的 iso 与普通 linux 发行版本的不同之处还有可以将其安装到一个本地硬盘,闪存或者 SD 卡,ovir-node 只保存一些基础配置信息,是一个无状态的系统,任何在根目录下的修改在系统重启后都会丢失。
关于 ovirt-node 的升级,我们可以选择从一个新的 image 启动或者将 image 保存到指定地方,在 boot parameter 中添加 upgrade 参数进行升级。
Overt-node 的获取
可以直接从网站获取最新的发行版 iso;或者通过下载源代码,通过手动编译的方式生成 iso。
直接下载 iso
发行版的 iso 一般是经过测试的稳定版本,但可能不包含最新的特性。下载地址如下:
ISO: http://ovirt.org/releases/stable/binary/
ISO RPM: http://ovirt.org/releases/stable/fedora/16/
从 git 仓库获取最新的源代码进行手动编译
首先获取用于 build rpm 的源代码:
$ git clone http://gerrit.ovirt.org/p/ovirt-node.git
用于 build image 的源代码:
$ git clone http://gerrit.ovirt.org/p/ovirt-node-iso.git
得到源代码后,在编译 iso 之前,需要做一些准备工作:
- 搭建编译环境
建议使用 minimal fedora15 进行编译,否则会出现系统或者编译错误
创建一个 ovirt-cache 目录(默认是~ /ovirt-cache)
创建一个 RPM 编译环境
设置 OVIRT_CACHE_DIR、OVIRT_LOCAL_REPO 环境变量
$ export OVIRT_CACHE_DIR=~/ovirt-cache $ export OVIRT_LOCAL_REPO=file://${OVIRT_CACHE_DIR}/ovirt
- 安装所需依赖
编译使用的用户需要获得 sudo 权限
livecd-tools appliance-tools-minimizer rpm-build createrepo
- 编译 ovirt-node 包
进入 ovirt-node 的根目录
$ cd ovirt-node $./autogen.sh --with-image-minimizer $ make publish
进入 iso 目录完成最后 iso 的编译:
$ cd ../ovirt-node-iso $./autogen.sh --with-recipe=/path/to/ovirt-node/recipe/directory --with-build-number=<build_number> $ make iso publish
选项 --with-recipe 默认指向 /usr/share/ovirt-node-tools
如果安装了 ovirt-node-tools,则此项可以被忽略,否则需指向 ovirt-node/recipe 目录
--with-build-number 指定 XX 后,build 文件名会形如 ovirt-node-iso-2.3.0-1.XX.fc16
可以在 make publish 的时候指定 BUILD_NUMBER=<buildnumber>。
将编译好的 iso 文件刻录到 dvd 或者制作成闪存启动盘的方式安装 ovirt-node,或者使用 live-cd-tools 将 iso 解压缩,使用 pxe 方式安装。
ovirt-node 的安装
ovirt-node 的安装方式很灵活快捷,主要有以下两种:
使用 dvd/ 闪存启动盘安装
与安装其他 Linux 发行版类似:
图 2. Ovirt Node 启动菜单
选择 Start Ovirt Node 进行 ovirt-node 安装。
图 3. 安装界面
Ovirt node 使用 KVM 作为 hypervisor ,在安装前会检测系统硬件是否支持。
图 4. 存储选择界面
选择 ovirt-node 安装分区。
图 5. 密码设置界面
设置 root 密码,该密码同时也是 admin 账户密码,在对 node 进行配置时,需提供此密码。
图 6. 安装界面
Ovirt-node 安装很快,大约持续 2-3 分钟时间。
图 7. ovirt-node 配置界面
安装完 ovirt-node 后,系统会提示重启系统,重启动后使用 admin 账户登录,对 node 进行配置。
使用 pxe 方式自动安装
在部署过程中,可能会批量部署 ovirt-node 节点机,可以使用 livecd-iso-to-pxeboot 工具将 iso 解压出文件系统,从而可以使用 pxe 方式进行批量自动化安装 ovirt-node。
# livecd-iso-to-pxeboot ovirt-node-iso-2.3.0-1.0.fc16.iso
生成的 tftpboot 目录中包含以下 4 个目录 / 文件。
# ls initrd0.img pxelinux.0 pxelinux.cfg vmlinuz0
修改 default 配置文件:
#vi pxelinux.cfg/default DEFAULT pxeboot TIMEOUT 20 PROMPT 0 LABEL pxeboot KERNEL vmlinuz0 APPEND rootflags=loop initrd=initrd0.img root=live:/ovirt-node-iso-2.3.0-1.0.fc16.iso rootfstype=auto ro liveimg nomodeset check rootflags=ro crashkernel=512M-2G:64M,2G-:128M elevator=deadline install quiet rd_NO_LVM rhgb rd.luks=0 rd.md=0 rd.dm=0 ONERROR LOCALBOOT 0
在 APPEND 后需增加内核启动参数,全自动安装需指定 storage_init,storage_vol,rootpw,adminpw 等例如 storage_init=/dev/sda storage_vol=BOOT_MB:SWAP_MB...
将 tftpboot 目录放置到 tftpserver 上,客户机使用 pxe 方式启动,可实现批量自动化安装。
安装完成后,对 ovirt-node 需进行手动配置,如网络,存储等,ovirt-node 必须注册到一个 ovirt-engine,使用 ovirt-engine 可对已经配置好的节点机进行管理,例如虚拟机的创建删除迁移等。
定制 ovirt-node
用户安装完成 ovirt-node 后,可以根据需求定制自己的 ovirt-node。
下面介绍 ovirt-node 中的几个关键目录:
/etc/ovirt-early.d/
在该目录下放置用户自定义脚本形如 pre-xxx,post-xxx。
pre-xxx 脚本会在 ovirt-early 脚本开始读取 bootparams 之后执行的脚本,所有在该目录下配置的脚本会依次被执行。
post-xxx 脚本会在 ovirt-early 脚本处理完所有的 bootparams 并将内核镜像载入到存储器中执行。
用户可以将自己的脚本程序放置在此目录下,ovirt-node 会在启动之自动检查目录中内容,在合适的时机调用。
/etc/ovirt-config-boot.d
该目录下的脚本会在 ovirt-node 安装成后进行 root 分区配置的时候被执行,该目录下脚本只被执行一次,以后每次启动不执行该目录下的脚本。
persist/unpersist 操作
ovirt-node 是 stateless 的,所以,任何在系统根"/"分区的修改重启后都会丢失,所以,使用 persist 脚本对要修改的文件进行持久化操作。
用户可通过修改以上几个目录的内容对 ovirt-node 进行简单的定制,除此之外,ovirt-node 还提供了用户自定义第三方软件的支持,具体实现方式可参考 http://www.ovirt.org/wiki/Node_plugins.
小结
ovirt-node 是 oVirt 社区的一个重要项目,在整个虚拟化平台中也是比较关键的。本文介绍了 ovirt-node 项目的基本情况以及获取安装定制方法。
目录 返回
首页