libvirt入门并创建第一个虚拟机
在第3章,设置独立的KVM虚拟化,您安装并启动的libvirtd服务。还向您介绍了libvirt工具virt-manager和virsh,它们可以帮助您管理虚拟机。
新用户总是喜欢GUI而不是基于文本的命令。因此,我们从virt-manager开始。我们还认为,了解virt-manager可以快速推进使用libvirt和后来的virsh管理虚拟机的学习过程。只要有可能,我们都会为您提供等效的virsh命令,以便您可以尝试学习virt-manager和virsh。
在本章中,我们将介绍以下主题:
• 关于virt-manager的全部信息
• 默认虚拟存储和网络配置
• 各种客户机安装方法(PXE/ISO/NETWORK/IMPORT)
• 使用virt-builder和oz实用程序快速创建多个VM
介绍virt-manager
virt-manager应用程序是基于Python的桌面用户界面,用于通过libvirt管理虚拟机。它主要针对KVM VM,但还管理Xen和LXC(Linux容器)。virt-manager显示正在运行的VM的摘要视图,提供其性能和资源利用率统计信息。使用virt-manager图形界面,可以轻松创建新的VM,对其进行监视并在需要时进行配置更改。嵌入式VNC和SPICE客户端查看器为VM提供了完整的图形控制台。
正如我们在提到第3章,设置独立的KVM虚拟化,虚拟机需要的CPU,内存,存储和网络资源,从主机。在本章中,我们将解释KVM主机的基本配置以及使用virt-manager创建虚拟机。
让我们通过执行virt-manager命令或按Alt + F2来启动Virtual Machine Manager,然后将显示virt-manager对话框。
如果您不是root用户,将在继续操作之前提示您输入root密码。此处,密码验证由polkit框架处理。polkit是一种授权API,旨在供特权程序(例如,系统守护程序)使用,该程序为非特权程序提供服务。
如果您希望允许某些组或用户在不提供root凭据的情况下访问virt-manager,则需要创建polkit规则。规则文件必须 在/etc/polkit-1/rules.d目录中创建。
例如,如果您希望wheel组中的所有用户无需输入root密码即可直接访问virt-manager,请创建/etc/polkit-1/rules.d/70-libvirtd.rules文件,然后编写:
polkit.addRule(function(action, subject) {
if (action.id == "org.libvirt.unix.manage" && subject.local && subject.active && subject.isInGroup("wheel")) { return polkit.Result.YES;
}
});
保存并关闭文件。libvirtd守护程序监视polikit的rules.d目录中是否有更改的内容,并在检测到更改时自动重新加载规则,因此您无需使用systemctl重新加载该过程。如果操作正确,您应该看到现在可以以轮组用户身份启动virt-manager,而无需输入密码。要在wheel组中添加用户,请运行:
#usermod -G wheel <用户名>
如果仔细检查polkit规则,您会注意到它会检查用户是否在wheel组中,是否在本地,是否有活动会话。如果是这样,则org.libvirt.unix.manage操作上的结果为是,以允许该操作。也可以将其配置为:
• NO:拒绝访问请求(返回polkit.Result.No;)
• AUTH_SELF:请求用户自己的密码(返回polkit.Result.AUTH_ SELF;)
• AUTH_ADMIN:请求系统上管理员的密码(返回polkit.Result.AUTH_ADMIN
打开virt-manager后,请转到“ 编辑” |“管理”。连接详细信息以访问用于配置网络和存储的选项:
该概述标签将给libvirt的连接上基本信息的主机系统的URI,CPU和存储器使用模式。虚拟网络和存储 将显示虚拟机可以使用的网络和存储池的详细信息。“ 网络接口”选项卡将提供主机网络的详细信息,并提供配置它们的选项。我们将在更详细的覆盖这个第5章,网络和存储。
虚拟网络选项卡
通过“ 虚拟网络”选项卡,我们可以配置各种类型的虚拟网络并监视其状态:
使用“ 虚拟网络”选项卡,您将能够配置以下类型的虚拟网络:
• NAT
• 路由
• 隔离
NAT虚拟网络
基于NAT的虚拟网络提供了到虚拟机的出站网络连接。这意味着VM可以基于主机上可用的网络连接性与外部网络进行通信,但是任何外部实体都将无法与VM进行通信。在此设置中,虚拟机和主机应该能够通过主机上配置的桥接接口相互通信。
路由虚拟网络
路由虚拟网络允许虚拟机直接连接到物理网络。虚拟机将根据管理程序上设置的路由规则将数据包发送到外部网络。
隔离虚拟网络
顾名思义,这在虚拟机管理程序和虚拟机之间提供了专用网络。
在下一章中,我们将通过实际示例详细介绍每种网络配置(以及生产环境中使用的其他网络实现)。在本章中,我们将集中讨论使用NAT 的默认虚拟网络。一旦了解了默认网络的工作原理,就很容易了解其他网络拓扑。
使用virsh net list --all列出虚拟网络。--all用于列出活动和非活动虚拟网络。如果未指定--all,则仅列出活动的虚拟网络:
# virsh net-list --all
默认网络
如前所述,默认网络是基于NAT的虚拟网络。它允许虚拟机与虚拟机管理程序上可用的活动网络接口(以太网,无线,v*n等)无关地与外部网络进行通信。它还提供了具有IP和DHCP服务器的专用网络,因此VM将自动获得其IP地址。
检查上一个屏幕快照中提供的有关默认网络的详细信息:
• 默认为虚拟网络的名称。创建虚拟网络时将提供此功能。
• 设备代表在主机上创建的网桥的名称。桥接接口是创建虚拟网络的主要组件。 在下一章中,我们将更深入地介绍桥梁。
• 状态代表虚拟网络的状态。它可以是活动的或不活动的。
• 自动启动显示在**libvirtd服务时是否应启动虚拟网络。
•“ IPv4配置”提供了专用网络,将提供给VM的DHCP范围以及转发模式的详细信息。转发模式可以是NAT,也可以是隔离模式。
您可以使用红色的“停止标志”按钮停止默认网络, 然后使用“ 播放 ”按钮重新开始。该+按钮用于创建新的虚拟网络,我们将在下一章覆盖。的X按钮用于 删除虚拟网络。
您可以使用virsh命令查看相同的详细信息:
# virsh net-info default
Name: default
UUID: ba551355-0556-4d32-87b4-653f4a74e09f
Active: yes
Persistent: yes
Autostart: yes
Bridge: virbr0
-----
# virsh net-dumpxml default
<network>
<name>default</name>
<uuid>ba551355-0556-4d32-87b4-653f4a74e09f</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:d1:56:2e'/>
<ip address='192.168.124.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.124.2' end='192.168.124.254'/>
</dhcp>
</ip>
</network>
一些使您开始使用默认网络的基本命令 如下:
• 虚拟网络配置文件作为XML文件存储在/etc/libvirt/qemu/networks /中。对于默认网络,它是/etc/libvirt/qemu/networks/default.xml。
• 此virsh命令net-destroy将停止虚拟网络,而netstart将启动虚拟网络。当虚拟机使用虚拟网络处于活动状态时,请勿发出这些命令。它将断开虚拟机的网络连接。
• #virsh net-destroy default:破坏了默认网络。
• #virsh net-start default:默认网络已启动。
储存标签
该选项卡允许您配置各种类型的存储池并监视其状态。以下屏幕截图显示了“ 存储” 选项卡:
“ 存储” 选项卡提供了可用存储池的详细信息。存储池只是用于保存虚拟机磁盘映像的存储。
在撰写本文时,libvirt支持从 以下屏幕快照所示的不同类型的源创建存储池;目录和LVM是 最常用的。我们将在下一章中对此进行更详细的研究:
默认存储池:默认是libvirt创建的基于文件的存储池的名称,该存储池用于存储其虚拟机映像文件。该存储池的位置 在/var/lib/libvirt/images中。
使用虚拟机管理器创建虚拟机
virt-manager可以使用以下方法来安装Guest OS:
• 本地安装介质(ISO映像或CD-ROM)
• 网络安装(HTTP,FTP或NFS)
• 网络启动(PXE)
• 导入现有的磁盘映像
在本节中,我们将创建一个运行不同操作系统的新虚拟机,每个虚拟机都使用上述安装方法之一,因此,到 本章结束时,您将熟悉 创建虚拟机的所有可用方法,并全面了解其中的内容。创建一个新的 虚拟机向导。
我们将创建以下客户机操作系统:
• Windows 7
• CentOS 6
要使用图形界面创建VM,请 通过执行virt-manager命令启动Virtual Machine Manager,或从“ 应用程序” | “ 应用程序”中将其打开。系统工具菜单。
创建一个新的虚拟机向导
在Virtual Machine Manager中,单击工具栏上的Create a new virtual machine按钮或选择File | New Virtual Machine 打开向导,该向导允许从virt-manager创建新的虚拟机。
该向导将虚拟机的创建过程分为五个步骤:
1. 选择安装方法。
2. 配置安装媒体。
3. 内存和CPU配置。
4. 虚拟机存储配置。
5. 命名客户机操作系统和网络配置。
让我们创建一个虚拟机,并使用“本地安装”介质(ISO映像或CD-ROM)方法安装CentOS 6.5操作系统。
此安装方法要求将操作系统安装介质插入系统的CD-ROM托盘中,以本地ISO形式或通过网络获得。保留ISO文件的理想位置是/var/lib/libvirt/images,它是virt-manager的默认存储池,并正确设置了所有SELinux和其他权限。如果ISO文件存储在系统的其他位置,请在继续之前确保virt-manager可以访问它。
1. 一旦确保virt-manager可以访问安装介质,向导将要求您选择要如何安装操作系统。选择本地安装介质(ISO映像或CDROM) ,然后单击“ 前进”按钮:
2. 单击“ 前进”按钮将带您进入步骤2,在此必须指定ISO映像位置。如果您使用的是物理DVD或CD,请 选择:
virt-manager会基于安装介质自动检测操作系统。它使用libosinfo提供的OS信息数据库。在撰写本文时,libosinfo数据库包含有关近302个操作系统的信息,包括Windows,Linux,Unix和所有最重要的Linux发行版。您可以通过运行osinfo-query os命令从libosinfo数据库中提取操作系统列表。
选择正确的操作系统名称很重要,因为虚拟机的模拟硬件选择与操作系统类型集紧密映射。例如,默认情况下,对于Windows OS,虚拟磁盘格式被选择为IDE,而对于Linux操作系统,它是virtio磁盘。
3. 在下一个屏幕上,指定要分配给虚拟机的内存和CPU:
4. 向导显示您可以分配的最大CPU和内存量。配置以下设置,然后单击“ 转发”为虚拟机配置存储:
5. 确保为虚拟机分配足够的空间。默认情况下,它在/var/lib/libvirt/qemu位置(默认池)创建一个虚拟磁盘。如果系统上定义了其他自定义存储池,请选择“ 托管”或其他现有存储,然后直接输入磁盘路径或单击“ 浏览”按钮,这将打开“ 定位或创建存储卷” 对话框,您可以在其中选择现有卷或从定义的存储池中创建一个新卷(如果有)。在下一章中,您将学习有关存储池以及如何创建它们的信息。
还有一个单选按钮,“立即分配整个磁盘”,以选择磁盘分配方法。取消选择此按钮将生成精简配置的磁盘,而选择该按钮将生成精简配置的磁盘(也称为预分配磁盘)。
6. 下一步也是最后一步,就是命名客户机和网络配置。默认计算机名称基于所选的操作系统(例如,对于CentOS 6.5 VM ,为centos6.5)。您可以将其更改为您想要的任何名称,但请注意,仅支持下划线(_),句点(。)和连字符(-):
展开高级选项将显示虚拟网络配置设置。默认情况下,KVM提供类似于NAT的桥接网络。连接到该NAT的虚拟机不会作为自己的设备出现在网络上,而是可以通过主机操作系统设置进行网络访问。如果您打算在虚拟机上运行服务器软件或Web服务器,并希望可以从网络上的其他设备访问它们,则必须使用其他虚拟网络配置,例如Linux网桥或macvtap。
设置固定的MAC地址使您可以为虚拟机定义自定义MAC地址。libvirt使用的默认MAC地址范围是52:54:00。
7. 如果您希望首先进一步配置虚拟机的硬件,请先单击“ 安装前自定义配置”框,然后再单击“ 完成”。这样做将打开另一个向导,该向导将允许您添加,删除和配置虚拟机的硬件设置。
8. 如果一切顺利,将显示新创建的VM的虚拟控制台。新域名将显示在“ 虚拟机管理器”窗口的域列表中。安装从boot:提示符开始,就像在本机硬件上开始安装一样:
9. 安装向导中的最后一步是单击“ 重新启动” 按钮以重新启动系统并完成安装。VM重新引导后,您将看到操作系统登录屏幕。
网络安装(HTTP,FTP或NFS)方法
此方法涉及使用镜像的Red Hat Enterprise Linux,CentOS或Fedora安装树来安装客户机。使用此方法创建虚拟机和支持的客户机操作系统安装还涉及五个步骤,从安装方法部分开始,然后继续命名 客户机和网络配置。
除了步骤2(配置安装介质)外,这些步骤与ISO安装过程相同。代替ISO映像,这里我们需要 传递RHEL/CentOS安装树的URL:
(可选)您还可以使用Kickstart URL指向您的kickstart文件以进行无人参与的客户机安装,并且可以使用Kernel选项来传递自定义内核启动参数(如果需要)。
网络启动(PXE)
此方法使用Preboot eXecution Environment(PXE)服务器安装客户机虚拟机。PXE Guest安装需要在要创建虚拟机的同一子网上运行的PXE服务器,并且主机系统必须与PXE服务器具有网络连接。
virt-manager创建的默认NATed网络与PXE安装不兼容,因为连接到NAT的虚拟机不会 作为自己的设备出现在网络上,因此PXE服务器看不到它,也无法发送执行安装所需的数据。要使用PXE Guest OS安装, 主机系统上需要软件网桥或基于macvtap的网络。例如,在这里,我们将使用基于macvtap的网络并启动安装。
1. 在“ 创建新的虚拟机”向导中选择PXE作为安装方法,并按照其余步骤配置ISO安装过程,步骤5(其中已配置网络)除外:
2. 在高级选项中,从下拉列表中使用主机设备eth0:macvtap并将源模式设置为Bridge。如果需要,请设置自定义MAC地址,然后单击“ 完成”按钮开始安装。
导入现有的磁盘映像
顾名思义,这使您可以导入预安装和配置的磁盘映像,而无需手动安装。磁盘映像必须包含可引导的操作系统。这通常用于分发预构建的设备映像,也用于将虚拟机以脱机模式从一台主机移动到另一台主机。
导入磁盘比准备虚拟机的其他选项要快得多。
许多Linux发行版都可以作为预配置的可引导磁盘映像使用。
您可以在此处下载预配置的磁盘Fedora 22映像:https : //getfedora.org/en/cloud/download/。
1. 从virt-manager GUI 启动“ 创建新虚拟机”向导,然后选择“ 导入现有磁盘映像”作为OS安装方法。
2. 提供现有的图像路径。确保将其存储在已定义的存储池之一或virt-manager可以访问的位置。单击“ 前进”按钮,然后执行其余步骤,与ISO安装过程相同(除了需要准备好虚拟机的步骤之外):
介绍virt-install
virt-install是一个交互式命令行工具,可用于设置guest 虚拟机,然后启动安装过程。
以root身份执行virt-install命令以开始。virt-install提供了许多选项,这些选项可以作为参数传递,以配置安装以满足您的虚拟机创建要求。virt-install是脚本友好的命令。它可以轻松地嵌入到脚本中以自动创建虚拟机。
使用 virt-install命令安装Windows 7 Guest
在使用virt-install命令启动操作系统安装之前,必须创建一个虚拟磁盘。要创建虚拟磁盘,请使用qemuimg命令:
1. 创建所需大小的虚拟磁盘。例如,在这里,我们将 使用原始磁盘格式创建一个20 GB磁盘:qemu-img create -f raw -o size = 10G /var/lib/libvirt/qemu/win7.img
2. 然后通过运行以下命令启动virt-install:
virt-install \ --name Win7 \
--ram 1024 \
--disk path =。/var/lib/libvirt/qemu/win7.img \
--vcpus 1 \
--os-type Windows \
--os-variant Windows7 \
--network bridge = virbr0 \
--graphics vnc,port = 5999 \
--console pty,target_type =序列\
--cdrom ./win7.iso \
同样,您可以使用virt-install –promot命令进行交互式安装。它将要求您依次和交互地输入上述信息。
3.就像使用Virtual Machine Manager一样,在创建虚拟机之后,您必须使用VM的控制台并继续 实际的客户机安装。要使用虚拟机控制台,请使用 virt-viewer实用程序:virt-viewer <虚拟机>名称
自动化虚拟机部署
虚拟机创建和客户机操作系统安装是两个不同的任务。创建VM就像配置新的PC硬件一样,但是您需要单独安装OS
如使用virt-manager或virt-install所见,首先为VM配置了所需的硬件资源,然后使用一种支持安装方法来安装OS。安装实际的操作系统(在虚拟化术语中也称为Guest)的安装方式与在物理系统上完全相同。操作系统的安装程序会要求提供配置详细信息并相应地配置系统。
如果将这两项任务结合在一起并且一次性创建虚拟机(以及完整的操作系统安装),该怎么办?显然,这将有助于更快,更自动化地部署虚拟机。
可以使用诸如virt-builder和oz之类的工具来组合这两个任务,并通过消除手动安装操作系统的需要来加快新VM映像的安装。让我们首先通过示例了解什么是virt-builder及其工作原理。
介绍virt-builder
virt-builder是一个命令行工具,它使用干净准备的,经过数字签名的OS模板创建磁盘映像,并对其进行自定义以快速构建新的虚拟机。virt-builder可以为Fedora,Ubuntu,CentOS,Debian和其他一些版本构建映像。
该实用程序由libguestfs-tools-c软件包提供,可以通过运行yum install libguestfs-tools-c -y命令来安装。
请注意,默认情况下,virt-builder从http://libguestfs.org/download/builder/ 存储库下载OS模板;访问
此存储库Internet连接是必需的。否则,除非有可用的本地存储库,否则该工具将无法工作。virt-builder的本地存储库创建超出了本书的范围。但是,该步骤在virt-builder手册页中有详细记录。
例如,如果要使用50 GB的磁盘创建CentOS 7.1 Guest,使用 virt-builder就像运行以下命令一样简单:
#cd/var/lib/libvirt/qemu /;/usr/bin/virt-builder centos-7.1 --format raw --size 50G
[ 1.0]下载:http://libguestfs.org/download/builder/centos-
7.1.xz
[ 2.0]规划如何构建此图像
[ 2.0]解压缩
[ 14.0]调整大小(使用virt-resize)以将磁盘扩展到50.0G
[149.0]打开新磁盘
[179.0]设置随机种子[180.0]设置密码virt-builder:将root的随机密码设置为Arw83LnDi66eMcmh [198.0]完成
输出文件:centos-7.1.img
输出大小:50.0G
输出格式:原始
总可用空间:48.1G
可用空间:47.3G(98%)
现在输入第二个命令:
#virt-install --name centos --ram 1028 --vcpus = 2 --disk path =/var/lib/libvirt/qemu/centos-7.1.img --import
如您所见,它首先下载了模板,将其解压缩,调整磁盘映像的大小以适合给定的大小,将模板中的数据播种到映像中,对其进行了自定义(设置随机根密码),然后完成。生成的VM没有用户帐户,具有随机的root密码,并且仅使用OS本身所需的最小磁盘空间,但是如果需要,它将增长到50 GB。
映像以centos7.1.img为名称存储在/var/lib/libvirt/qemu /目录中。
第二个命令virt-install只是导入了映像并从中创建了虚拟机。
运行virsh list --all将列出新创建的虚拟机,并 #virsh start <vmname>将启动它。要以root用户身份登录,请使用 输出中显示的随机root密码。您的虚拟机现已准备就绪。
在此示例中,只有唯一的自定义密码是root密码,但是还可以执行许多其他自定义操作,例如,安装软件,设置主机名,编辑任意文件,创建用户等等。要了解有关可对客户机进行的定制的更多信息,请参见virt-builder和#virt-builder --note <guest>的手册页, 因为它们列出了用于该特定客户机的kickstart和安装脚本。
virt-builder将下载的模板缓存在当前用户的主目录中。缓存的位置为$ XDG_CACHE_HOME/virt-builder /或$ HOME/.cache/virt-builder。
您可以通过运行virt-builder --print-cache命令来打印出有关缓存目录的信息,包括当前正在缓存的客户机:
#virt-builder --print-cache缓存目录:/root/.cache/virt-builder centos-6 x86_64 否centos-7.0 x86_64 否centos-7.1 x86_64 缓存的cirros-0.3.1 x86_64 否debian-6 x86_64 否debian- 7 x86_64 no debian-8 x86_64 no fedora-18 x86_64 no fedora-19 x86_64 no fedora-20 x86_64 no fedora-21 x86_64 no fedora-21 aarch64 no fedora-21 armv7l no fedora-21 ppc64 no fedora-21 ppc64le no fedora- 22 x86_64 没有fedora-22 aarch64 没有fedora-22 armv7l 否Scientificlinux -6 x86_64 否ubuntu-10.04 x86_64 否ubuntu-12.04 x86_64 否ubuntu-14.04 x86_64 否
在这里,您可以看到centos-7.1模板已缓存。下次创建 centos-7.1 guest虚拟机时,它将使用缓存的模板并 更快地创建虚拟机。
可以通过运行以下命令以释放空间来删除缓存:
#virt-builder-删除缓存
您甚至可以通过执行virt-builder --cache-all-templates 命令将所有(当前)模板下载到本地缓存中。
如果在virt-builder 生成详细输出时遇到任何问题,请使用--verbose开关。
虽然virt-builder速度非常快,但仅适用于Linux guest虚拟机。但是,该实用程序仅适用于Linux guest虚拟机,并且缺少Windows guest虚拟机支持。这是oz实用程序出现的地方。如果您想要更灵活的东西,请使用oz。
OZ介绍
oz是另一个用于创建“足够操作系统(JEOS)”客户机的实用程序。它使最终用户仅需很少的前期输入就可以自动安装操作系统。盎司的输入是模板(TDL格式),描述了创建图像的说明:
• 图像所基于的ISO或URI
• 磁盘大小
• 要安装的额外软件包
• 创建图像后要执行的命令
• 创建图像后要注入的文件
它可以自动安装各种操作系统,包括Windows。在幕后,它使用了一组预定义的kickstart文件(用于基于Red Hat的系统),预置的文件(用于基于Debian的系统)以及XML文件,这些文件允许无人值守的Windows安装自动执行安装。
当前,它支持i386和x86_64体系结构。以下是它支持的操作系统的列表:
- Debian: 5, 6, 7
- Fedora Core: 1, 2, 3, 4, 5, 6
- Fedora: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21
- FreeBSD: 10
- Mageia: 4
- Mandrake: 8.2, 9.1, 9.2, 10.0, 10.1
- Mandriva: 2005, 2006.0, 2007.0, 2008.0
- OpenSUSE: 10.3, 11.0, 11.1, 11.2, 11.3, 11.4, 12.1, 12.2, 12.3, 13.1
- RHEL 2.1: GOLD, U2, U3, U4, U5, U6
- RHEL 7: Beta, 0
- RHEL/CentOS 3: GOLD, U1, U2, U3, U4, U5, U6, U7, U8, U9
- RHEL/CentOS/Scientific Linux 4: GOLD, U1, U2, U3, U4, U5, U6, U7, U8, U9
- RHEL/OL/CentOS/Scientific Linux{,CERN} 5: GOLD, U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11
- RHEL/OL/CentOS/Scientific Linux{,CERN} 6: 0, 1, 2, 3, 4, 5
- RHL: 7.0, 7.1, 7.2, 7.3, 8, 9
- Ubuntu: 5.04, 5.10, 6.06[.1,.2], 6.10, 7.04, 7.10, 8.04[.1,.2,.3,.4], 8.10, 9.04,
9.10, 10.04[.1,.2,.3], 10.10, 11.04, 11.10, 12.04[.1,.2,.3,.4,.5], 12.10, 13.04, 13.10,
14.04[.1], 14.10
- Windows: 2000, XP, 2003, 7, 2008, 2012, 8, 8.1
使用oz创建虚拟机的过程如下:
1. 使用以下命令安装oz和libguestfs-tools软件包 :
#yum install -y oz libguestfs-tools
2. 使用oz获取要安装的所需操作系统的ISO介质。对于Linux guest虚拟机,也可以使用通过HTTP公开的基于网络的安装树。例如:
° 对于Fedora 22:http : //dl.fedoraproject.org/pub/fedora/linux/releases/22/Server/x86_64/os /
° 对于CentOS 7:http : //mirrors.dcarsat.com.ar/centos/7/os/x86_64 /
3. 创建一个简单的TDL(模板定义语言)文件。可以在以下位置找到TDL文件的所有受支持的属性:https : //github.com/clalancette/oz/wiki/Oz-template-description-language
4. 运行oz-install命令来构建映像:
#oz-install -u -d3 TDL_FILE_PATH
句法:
• u:安装后,执行自定义
• d:调高日志记录级别。级别是:
° 0:仅错误(这是默认值)
° 1:错误和警告
° 2:错误,警告和信息
° 3:所有消息
° 4:所有消息,在级别和类名之前
这将生成一个libvirt XML文件(包含映像路径和其他参数),您可以使用该文件立即引导客户机:
virsh定义 <xml_fike> virsh start <vm_name>
OZ配置文件
/etc/oz/oz.cfg是用于VM配置的oz文件。它采用标准INI格式,分为四个部分:path,libvirt,cache和icicle。让我们看一下文件的内容:
------------
[路径]
output_dir =/var/lib/libvirt/images data_dir =/var/lib/oz
screenshot_dir =/var/lib/oz/screenshots#sshprivkey =/etc/oz/id_rsa-icicle-gen
[libvirt] uri = qemu:///system image_type =原始
#类型= kvm
#bridge_name = virbr0
#cpus = 1
#内存= 1024
[缓存] original_media =是modified_media =否jeos =否
[icicle] safe_generation =否
以下是您应该 注意的一些重要配置指令:
• output_dir:这描述了在构建图像后存储图像的位置。默认位置是/var/lib/libvirt/images /。如果希望将结果图像存储在其他位置,则可以在此处进行更改。
• bridge_name:VM应该连接到的网桥。默认情况下,它使用 virbr0。
• memory:使用配置指令,您可以定义虚拟机内部应使用的内存量。
• cpus:这定义虚拟机应使用多少个CPU。
所有其他配置指令的用法在https://github.com/clalancette/oz/wiki/oz-customize中记录。
使用oz创建虚拟机
出于演示目的,让我们使用以下配置创建Windows 7虚拟机:
• 结果虚拟机应分配有2048个内存
• 虚拟机所连接的网桥应为vswitch
• 磁盘大小应为50G
• 安装介质应该是存储在系统本地的ISO文件
要使用oz工具创建具有先前配置的虚拟机,请执行以下步骤:
1. 首先编辑/etc/oz/oz.cfg文件,相应地设置内存和桥配置指令,然后保存文件并退出:
内存= 2048 bridge_name = vswitch
2. 创建一个名为win7.tdl的TDL文件,其中包含以下元素 并将其保存在/root /位置(您可以使用vi或 您选择的任何其他编辑器):
<模板>
<name> win7jeos </name>
<os>
<name> Windows </name>
<version> 7 </version>
<arch> i386 </arch>
<install type ='iso'>
<iso>文件:///path/to/isos/win2k.iso </iso>
</install>
<key> MY_KEY_HERE </key>
</os>
<磁盘>
<size> 50 </size>
</disk>
<description>最低Windows7 </description>
</template>
° 用ISO文件的实际路径替换file:///path/to/isos/win2k.iso
° 用有效**替换MY_KEY_HERE
Windows需要**,因此如果 缺少<key>元素,oz将会失败。
3. 现在运行oz-install:
#oz-install -u -d3 /root/win7.tdl
4. 成功完成oz-install应该看起来像这样:
[。。。]
INFO:oz.Guest.windows7:安装后清理
Libvirt XML已写入win7jeos_feb_11-2016
5. 使用virsh命令定义虚拟机并启动它:
#virsh define win7jeos_feb_11-2016
#virsh启动win7jeos
摘要
在本章中,您首先了解了libvirt设置的默认网络和存储配置,以便利于创建虚拟机所需的基础结构,然后学习了不同的客户机安装方法,包括PXE,网络,ISO以及导入预配置的可启动OS。图片。我们还看到了virt-builder和oz如何帮助快速创建虚拟机。
在下一章中,我们将提供有关虚拟存储和网络的更多详细信息。