在安装访客虚拟机之前,您需要准备 VM 主机服务器,以便为访客提供它们运行所需资源。具体来说,您需要配置
网络,以便客户机可以使用宿主机提供的网络连接。
一个存储池,可被宿主机访问,以便客户机可以存储其磁盘镜像。
有两种常见的网络配置,可以为虚拟机客户机提供网络连接
一个网络桥接。这是默认且推荐的为客户机提供网络连接的方式。
一个虚拟网络,并启用转发。
网络桥接配置为虚拟机客户机提供了一个二层交换机,根据与端口关联的 MAC 地址在桥接端口之间交换二层以太网数据包。这使得虚拟机客户机可以访问虚拟机宿主服务器的网络的二层。该配置类似于将虚拟机客户机的虚拟以太网电缆连接到与宿主机和其他在宿主机上运行的虚拟机客户机共享的集线器。该配置通常被称为共享物理设备。
当配置为 KVM 或 Xen 虚拟机管理程序时,openSUSE Leap 的网络桥接配置是默认配置。当您只想将虚拟机客户机连接到虚拟机宿主服务器的局域网时,它是首选配置。
用于创建网络桥接的工具取决于用于管理虚拟机宿主机上网络连接的服务
如果网络连接由 wicked 管理,请使用 YaST 或命令行创建网络桥接。wicked 是服务器宿主机的默认配置。
如果网络连接由 NetworkManager 管理,请使用 NetworkManager 命令行工具 nmcli 创建网络桥接。NetworkManager 是桌面和笔记本电脑的默认配置。
本节包含使用 YaST 添加或删除网络桥接的步骤。
要在虚拟机宿主机上添加网络桥接,请按照以下步骤操作
启动 › › 。
激活 选项卡,然后单击 。
从 列表中选择 ,并在 条目中输入桥接设备接口名称。单击 继续。
在 选项卡中,指定网络详细信息,例如 DHCP/静态 IP 地址、子网掩码或主机名。
仅当也为连接到 DHCP 服务器的桥接分配设备时,使用 才有用。
如果您打算创建一个没有连接到真实网络设备的虚拟桥接,请使用 。在这种情况下,最好使用来自私有 IP 地址范围的地址,例如 192.168.0.0/16、172.16.0.0/12 或 10.0.0.0/8。
要创建一个仅用作不同客户机之间连接的桥接,而无需连接到宿主机系统,请将 IP 地址设置为 0.0.0.0,将子网掩码设置为 255.255.255.255。网络脚本将此特殊地址视为未设置的 IP 地址。
激活 选项卡,并激活您想要包含在网络桥接中的网络设备。
单击 返回 选项卡,并使用 确认。新的网络桥接现在应该在虚拟机宿主机上处于活动状态。
本节包含使用命令行添加或删除网络桥接的步骤。
要在虚拟机宿主机上添加新的网络桥接设备,请按照以下步骤操作
以 root 用户身份登录到您想要创建新网络桥接的虚拟机宿主机。
为新的桥接选择一个名称——在我们的示例中为 virbr_test——并运行
# ip link add name VIRBR_TEST type bridge检查桥接是否在虚拟机宿主机上创建
# bridge vlan
[...]
virbr_test 1 PVID Egress Untagged
virbr_test 存在,但未与任何物理网络接口关联。
启动网络桥接并将网络接口添加到桥接
#ip link set virbr_test up#ip link set eth1 master virbr_test
您只能分配尚未被另一个网络桥接使用的网络接口。
可选地,启用 STP(请参阅 生成树协议)
# bridge link set dev virbr_test cost 4本节包含使用 NetworkManager 的命令行工具 nmcli 添加网络桥接的步骤。
列出活动的网络连接
>sudonmcli connection show --active NAME UUID TYPE DEVICE Ethernet connection 1 84ba4c22-0cfe-46b6-87bb-909be6cb1214 ethernet eth0
添加名为 br0 的新桥接设备并验证其创建
>sudonmcli connection add type bridge ifname br0 Connection 'bridge-br0' (36e11b95-8d5d-4a8f-9ca3-ff4180eb89f7) \ successfully added.>sudonmcli connection show --active NAME UUID TYPE DEVICE bridge-br0 36e11b95-8d5d-4a8f-9ca3-ff4180eb89f7 bridge br0 Ethernet connection 1 84ba4c22-0cfe-46b6-87bb-909be6cb1214 ethernet eth0
可选地,您可以查看桥接设置
>sudonmcli -f bridge connection show bridge-br0 bridge.mac-address: -- bridge.stp: yes bridge.priority: 32768 bridge.forward-delay: 15 bridge.hello-time: 2 bridge.max-age: 20 bridge.ageing-time: 300 bridge.group-forward-mask: 0 bridge.multicast-snooping: yes bridge.vlan-filtering: no bridge.vlan-default-pvid: 1 bridge.vlans: --
将桥接设备链接到物理以太网设备 eth0
>sudonmcli connection add type bridge-slave ifname eth0 master br0
禁用 eth0 接口并启用新的桥接
>sudonmcli connection down "Ethernet connection 1">sudonmcli connection up bridge-br0 Connection successfully activated (master waiting for slaves) \ (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
有时有必要在两个虚拟机宿主机之间或在虚拟机客户机之间创建私有连接。例如,为了将虚拟机客户机迁移到不同网络段的主机。或者,为了创建一个只有虚拟机客户机才能连接的私有桥接(即使它们在不同的虚拟机宿主机系统上运行)。设置 VLAN 网络是一种简单的方法来构建此类连接。
VLAN 接口通常在虚拟机宿主机上设置。它们要么互连不同的虚拟机宿主机系统,要么可以设置为连接到物理接口的虚拟桥接。甚至可以创建一个带有 VLAN 作为物理接口的桥接,该接口在虚拟机宿主机中没有 IP 地址。这样,客户机系统将无法通过此网络访问宿主机。
运行 YaST 模块 › 。按照以下步骤设置 VLAN 设备
单击 以创建新的网络接口。
在 中,选择 。
将 的值更改为您的 VLAN 的 ID。请注意,VLAN ID 1 通常用于管理目的。
单击 。
在 下方选择 VLAN 设备应连接到的接口。如果所需的接口未出现在列表中,请先设置此接口,而无需 IP 地址。
选择将 IP 地址分配给 VLAN 设备的所需方法。
单击 以完成配置。
也可以将 VLAN 接口用作桥接的物理接口。这样可以连接多个仅限虚拟机宿主机的网络,并允许连接到此类网络的虚拟机客户机的实时迁移。
YaST 并不总是允许设置无 IP 地址。但是,这可能是期望的特性,特别是当应连接仅限虚拟机宿主机的网络时。在这种情况下,使用特殊地址 0.0.0.0 和子网掩码 255.255.255.255。系统脚本将此地址视为未设置的 IP 地址。
libvirt 管理的虚拟网络类似于桥接网络,但通常没有与虚拟机宿主机网络的二层连接。通过三层转发实现与虚拟机宿主机物理网络的连接,与二层桥接网络相比,这会在虚拟机宿主机上引入额外的包处理。虚拟网络还为虚拟机客户机提供 DHCP 和 DNS 服务。有关 libvirt 虚拟网络的更多信息,请参阅 https://libvirt.org/formatnetwork.html 处的 网络 XML 格式 文档。
在 openSUSE Leap 上安装的标准 libvirt 已经预配置了一个名为 default 的预定义虚拟网络。它为网络提供 DHCP 和 DNS 服务,以及使用网络地址转换 (NAT) 转发模式与虚拟机宿主机物理网络的连接。虽然它是预定义的,但 default 虚拟网络需要由管理员显式启用。有关 libvirt 支持的转发模式的更多信息,请参阅 https://libvirt.org/formatnetwork.html#elementsConnect 处的 网络 XML 格式 文档的 连接性 部分。
libvirt管理的虚拟网络可以满足各种各样的使用场景,但通常用于具有无线连接或动态/间歇性网络连接的虚拟机宿主机,例如笔记本电脑。当虚拟机宿主机的网络具有有限的IP地址时,虚拟网络也很有用,允许在虚拟网络和虚拟机宿主机网络之间转发数据包。但是,大多数服务器用例更适合网络桥接配置,在这种配置中,虚拟机客户机连接到虚拟机宿主机的局域网。
在libvirt虚拟网络中启用转发模式,会通过将/proc/sys/net/ipv4/ip_forward和/proc/sys/net/ipv6/conf/all/forwarding设置为1来启用虚拟机宿主机上的转发,从而将虚拟机宿主机变成路由器。重启虚拟机宿主机的网络可能会重置这些值并禁用转发。为了避免此行为,请通过编辑/etc/sysctl.conf文件并添加来显式启用虚拟机宿主机上的转发
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
您可以使用虚拟机管理器定义、配置和操作虚拟网络。
启动虚拟机管理器。在可用连接列表中,右键单击需要配置虚拟网络的连接的名称,然后选择。
在窗口中,单击选项卡。您可以查看当前连接可用的所有虚拟网络的列表。在右侧,有选中虚拟网络的详细信息。
要添加新的虚拟网络,请单击。
为新的虚拟网络指定一个名称。
指定网络模式。对于和类型,您可以指定将网络通信转发到哪个设备。虽然(网络地址转换)重新映射虚拟网络地址空间并允许共享单个IP地址,但会将虚拟网络的数据包转发到虚拟机宿主机的物理网络,而无需进行转换。
如果您需要IPv4网络,请激活并指定IPv4网络地址。如果您需要DHCP服务器,请激活并指定可分配的IP地址范围。
如果您需要IPv6网络,请激活并指定IPv6网络地址。如果您需要DHCP服务器,请激活并指定可分配的IP地址范围。
要指定与虚拟网络名称不同的域名,请在下选择并在此处输入它。
单击以创建新的虚拟网络。在虚拟机宿主机上,将提供一个新的虚拟网络桥接virbrX,它对应于新创建的虚拟网络。您可以使用bridge link进行检查。libvirt会自动添加iptables规则以允许进出连接到新virbrX设备的流量。
要启动一个暂时停止的虚拟网络,请执行以下步骤
启动虚拟机管理器。在可用连接列表中,右键单击需要配置虚拟网络的连接的名称,然后选择。
在窗口中,单击选项卡。您可以查看当前连接可用的所有虚拟网络的列表。
要启动虚拟网络,请单击。
要停止一个活动的虚拟网络,请执行以下步骤
启动虚拟机管理器。在可用连接列表中,右键单击需要配置虚拟网络的连接的名称,然后选择。
在窗口中,单击选项卡。您可以查看当前连接可用的所有虚拟网络的列表。
选择要停止的虚拟网络,然后单击。
要从虚拟机宿主机删除虚拟网络,请执行以下步骤
启动虚拟机管理器。在可用连接列表中,右键单击需要配置虚拟网络的连接的名称,然后选择。
在窗口中,单击选项卡。您可以查看当前连接可用的所有虚拟网络的列表。
选择要删除的虚拟网络,然后单击。
在虚拟机宿主机上,安装libvirt-nss,它为libvirt提供NSS支持
>sudozypper in libvirt-nss
将libvirt添加到/etc/nsswitch.conf
... hosts: files libvirt mdns_minimal [NOTFOUND=return] dns ...
如果NSCD正在运行,请重新启动它
>sudosystemctl restart nscd
现在您可以从主机按名称访问客户机系统。
NSS模块具有有限的功能。它读取/var/lib/libvirt/dnsmasq/*.status文件以查找主机名和相应的IP地址,这些地址记录在JSON记录中,描述了dnsmasq提供的每个租约。主机名转换只能在那些使用由dnsmasq支持的桥接网络作为后端的虚拟机宿主机上完成。
您可以使用virsh命令行工具管理libvirt提供的虚拟网络。要查看所有网络相关的virsh命令,请运行
>sudovirsh help network Networking (help keyword 'network'): net-autostart autostart a network net-create create a network from an XML file net-define define (but don't start) a network from an XML file net-destroy destroy (stop) a network net-dumpxml network information in XML net-edit edit XML configuration for a network net-event Network Events net-info network information net-list list networks net-name convert a network UUID to network name net-start start a (previously defined) inactive network net-undefine undefine an inactive network net-update update parts of an existing network's configuration net-uuid convert a network name to network UUID
要查看特定virsh命令的简要帮助信息,请运行virsh help VIRSH_COMMAND
>sudovirsh help net-create NAME net-create - create a network from an XML file SYNOPSIS net-create <file> DESCRIPTION Create a network. OPTIONS [--file] <string> file containing an XML network description
要创建一个新的正在运行的虚拟网络,请运行
>sudovirsh net-create VNET_DEFINITION.xml
VNET_DEFINITION.xml XML文件包含libvirt接受的虚拟网络的定义。
要定义一个新的虚拟网络而不激活它,请运行
>sudovirsh net-define VNET_DEFINITION.xml
以下示例说明了不同类型虚拟网络的定义。
以下配置允许虚拟机客户机在虚拟机宿主机上可用时进行传出连接。如果没有虚拟机宿主机网络,它允许客户机直接相互通信。
<network> <name>vnet_nated</name>1 <bridge name="virbr1"/>2 <forward mode="nat"/>3 <ip address="192.168.122.1" netmask="255.255.255.0">4 <dhcp> <range start="192.168.122.2" end="192.168.122.254"/>5 <host mac="52:54:00:c7:92:da" name="host1.testing.com" \ ip="192.168.1.101"/>6 <host mac="52:54:00:c7:92:db" name="host2.testing.com" \ ip="192.168.1.102"/> <host mac="52:54:00:c7:92:dc" name="host3.testing.com" \ ip="192.168.1.103"/> </dhcp> </ip> </network>
新虚拟网络的名称。 | |
用于构建虚拟网络的桥接设备的名称。在定义具有 | |
包含 | |
网络桥接的IP地址和子网掩码。 | |
启用虚拟网络的DHCP服务器,提供从指定的 | |
可选的 |
以下配置将虚拟网络上的流量路由到LAN,而无需应用任何NAT。IP地址范围必须在虚拟机宿主机网络的路由器上的路由表中预先配置。
<network>
<name>vnet_routed</name>
<bridge name="virbr1"/>
<forward mode="route" dev="eth1"/>1
<ip address="192.168.122.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.122.2" end="192.168.122.254"/>
</dhcp>
</ip>
</network>客户机流量可能只能通过虚拟机宿主机上的 |
此配置提供了一个隔离的专用网络。客户机可以相互通信,也可以与虚拟机宿主机通信,但无法访问LAN上的任何其他机器,因为XML描述中缺少
<network> <name>vnet_isolated</name> <bridge name="virbr3"/> <ip address="192.168.152.1" netmask="255.255.255.0"> <dhcp> <range start="192.168.152.2" end="192.168.152.254"/> </dhcp> </ip> </network>
此配置显示了如何使用虚拟机宿主机现有的网络桥接br0。虚拟机客户机直接连接到物理网络。它们的IP地址都在物理网络的子网上,并且没有传入或传出连接的限制。
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>要列出libvirt可用的所有虚拟网络,请运行
>sudovirsh net-list --all Name State Autostart Persistent ---------------------------------------------------------- crowbar active yes yes vnet_nated active yes yes vnet_routed active yes yes vnet_isolated inactive yes yes
要列出可用的域,请运行
>sudovirsh list Id Name State ---------------------------------------------------- 1 nated_sles12sp3 running ...
要获取运行域的接口列表,请运行domifaddr DOMAIN,或者可选地指定接口以将输出限制为此接口。默认情况下,它还会输出它们的IP和MAC地址
>sudovirsh domifaddr nated_sles12sp3 --interface vnet0 --source lease Name MAC address Protocol Address ------------------------------------------------------------------------------- vnet0 52:54:00:9e:0d:2b ipv6 fd00:dead:beef:55::140/64 - - ipv4 192.168.100.168/24
要打印与指定域关联的所有虚拟接口的简要信息,请运行
>sudovirsh domiflist nated_sles12sp3 Interface Type Source Model MAC --------------------------------------------------------- vnet0 network vnet_nated virtio 52:54:00:9e:0d:2b
要获取有关网络的详细信息,请运行
>sudovirsh net-info vnet_routed Name: vnet_routed UUID: 756b48ff-d0c6-4c0a-804c-86c4c832a498 Active: yes Persistent: yes Autostart: yes Bridge: virbr5
要启动一个已定义但处于非活动状态的虚拟网络,请使用以下命令查找其名称(或唯一标识符,UUID):
>sudovirsh net-list --inactive Name State Autostart Persistent ---------------------------------------------------------- vnet_isolated inactive yes yes
然后运行
>sudovirsh net-start vnet_isolated Network vnet_isolated started
要停止一个活动的网络,请使用以下命令查找其名称(或唯一标识符,UUID):
>sudovirsh net-list --inactive Name State Autostart Persistent ---------------------------------------------------------- vnet_isolated active yes yes
然后运行
>sudovirsh net-destroy vnet_isolated Network vnet_isolated destroyed
当在虚拟机宿主机本身上管理虚拟机客户机时,您可以访问虚拟机宿主机完整的的文件系统,以附加或创建虚拟硬盘,或将现有的镜像附加到虚拟机客户机。但是,当从远程主机管理虚拟机客户机时,这是不可能的。因此,libvirt支持所谓的““存储池””,这些存储池可以从远程机器访问。
为了能够从远程客户端访问虚拟机宿主机上的CD/DVD ISO镜像,它们也需要放置在存储池中。
libvirt知道两种不同类型的存储:卷和池。
存储卷是可以分配给客户机的存储设备——虚拟磁盘或CD/DVD/软盘镜像。从物理上讲,它可以是块设备——例如,分区或逻辑卷——或虚拟机宿主机上的文件。
存储池是虚拟机宿主机上的存储资源,可用于存储卷,类似于桌面机器的网络存储。从物理上讲,它可以是以下类型之一:
用于托管镜像文件的目录。这些文件可以是受支持的磁盘格式之一(raw或qcow2),或ISO镜像。
将整个物理磁盘用作存储。为添加到池的每个卷创建一个分区。
指定要以与文件系统目录池(用于托管镜像文件的目录)相同的方式使用的分区。使用文件系统目录与使用文件系统目录的唯一区别在于,libvirt负责挂载设备。
在 iSCSI 目标上设置一个池。在使用 libvirt 之前,您需要先登录到卷一次。使用 YaST 检测并登录到卷。不支持在 iSCSI 池上创建卷;相反,每个现有的逻辑单元号 (LUN) 代表一个卷。每个卷/LUN 也需要一个有效的(空的)分区表或磁盘标签,才能使用它。如果缺少,请使用 fdisk 添加它
>sudofdisk -cu /dev/disk/by-path/ip-192.168.2.100:3260-iscsi-iqn.2010-10.com.example:[...]-lun-2 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xc15cdc4e. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
使用 LVM 卷组作为池。您可以选择使用预定义的卷组,或者通过指定要使用的设备来创建组。存储卷作为卷上的分区创建。
在存储管理器中删除基于 LVM 的池时,卷组也会被删除。这将导致池上存储的所有数据无法恢复地丢失。
目前,多路径支持仅限于将现有设备分配给客户机。不支持从 libvirt 内部创建卷或配置多路径。
指定一个网络目录,其使用方式与文件系统目录池(用于托管镜像文件的目录)相同。与使用文件系统目录的唯一区别在于,libvirt 会负责挂载该目录。支持的协议是 NFS。
以与 iSCSI 目标几乎相同的方式使用 SCSI 主机适配器。我们建议使用来自 /dev/disk/by-* 的设备名称,而不是 /dev/sdX。后者可能会更改(例如,在添加或删除硬盘时)。不支持在 iSCSI 池上创建卷。相反,每个现有的 LUN(逻辑单元号)代表一个卷。
为避免数据丢失或数据损坏,请勿尝试使用也用于构建 VM 主服务器上存储池的资源,例如 LVM 卷组、iSCSI 目标等。无需从 VM 主服务器连接到这些资源,或将它们挂载到 VM 主服务器上——libvirt 会负责处理这些操作。
请勿按标签挂载 VM 主服务器上的分区。在某些情况下,分区可能会从 VM 客户机内部以 VM 主服务器上存在的名称进行标记。
也可以使用 virsh 从命令行管理存储。但是,SUSE 目前不支持创建存储池。因此,本节仅限于记录诸如启动、停止和删除池以及卷管理之类的功能。
可以通过运行 virsh help pool 和 virsh help volume 分别获取用于管理池和卷的所有 virsh 子命令的列表。
通过执行以下命令列出当前活动的所有池。要列出非活动池,请添加选项 --all
> virsh pool-list --details可以使用 pool-info 子命令获取有关特定池的详细信息
> virsh pool-info POOL默认情况下,卷只能按池列出。要列出池中的所有卷,请输入以下命令。
> virsh vol-list --details POOL目前 virsh 没有工具可以显示卷是否被客户机使用。以下过程描述了一种列出当前被 VM 客户机使用的所有池中卷的方法。
通过将以下内容保存到文件(例如,~/libvirt/guest_storage_list.xsl)来创建 XSLT 样式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="text()"/>
<xsl:strip-space elements="*"/>
<xsl:template match="disk">
<xsl:text> </xsl:text>
<xsl:value-of select="(source/@file|source/@dev|source/@dir)[1]"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>在 shell 中运行以下命令。假定客户机的 XML 定义都存储在默认位置 (/etc/libvirt/qemu)。xsltproc 由软件包 libxslt 提供。
SSHEET="$HOME/libvirt/guest_storage_list.xsl" cd /etc/libvirt/qemu for FILE in *.xml; do basename $FILE .xml xsltproc $SSHEET $FILE done
使用 virsh 池子命令来启动、停止或删除池。在以下示例中,将 POOL 替换为池的名称或其 UUID
> virsh pool-destroy POOL附加到 VM 客户机的池中的卷始终可用,无论池的状态如何((停止)或 (启动))。池的状态仅影响通过远程管理将卷附加到 VM 客户机的能力。
> virsh pool-delete POOL> virsh pool-start POOL> virsh pool-autostart POOL只有标记为自动启动的池才会在 VM 主服务器重新启动时自动启动。
> virsh pool-autostart POOL --disable
virsh 提供两种将卷添加到存储池的方法:使用带有 vol-create 和 vol-create-from 的 XML 定义,或使用带有 vol-create-as 的命令行参数。前两种方法目前不被 SUSE 支持,因此本节重点介绍子命令 vol-create-as。
要将卷添加到现有池,请输入以下命令
> virsh vol-create-as POOL1NAME2 12G --format3raw|qcow24 --allocation 4G5要将卷添加到的池的名称 | |
卷的名称 | |
镜像的大小,在本例中为 12 千兆字节。使用后缀 k、M、G、T 表示千字节、兆字节、千兆字节和太字节。 | |
卷的格式。SUSE 当前支持 | |
可选参数。默认情况下, 如果不指定此参数,则将生成一个没有分配的稀疏镜像文件。要创建非稀疏卷,请使用此参数指定整个镜像大小(在本例中将为 |
要永久从池中删除卷,请使用子命令 vol-delete
> virsh vol-delete NAME --pool POOL
--pool 是可选的。libvirt 尝试自动找到卷。如果失败,请指定此参数。
无论卷当前是否在活动或非活动 VM 客户机中使用,都会删除卷。无法恢复已删除的卷。
只能使用 过程 8.2,“列出 VM 主服务器上当前使用的所有存储卷” 中描述的方法检测卷是否被 VM 客户机使用。
在按照 第 8.2.1.3 节,“将卷添加到存储池” 描述的方式创建卷后,您可以将其附加到虚拟机并将其用作硬盘
> virsh attach-disk DOMAIN SOURCE_IMAGE_FILE TARGET_DISK_DEVICE例如
> virsh attach-disk sles12sp3 /virt/images/example_disk.qcow2 sda2要检查是否已附加新磁盘,请检查 virsh dumpxml 命令的结果
# virsh dumpxml sles12sp3
[...]
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/virt/images/example_disk.qcow2'/>
<backingStore/>
<target dev='sda2' bus='scsi'/>
<alias name='scsi0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
[...]要从域分离磁盘,请使用 virsh detach-disk
# virsh detach-disk DOMAIN TARGET_DISK_DEVICE例如
# virsh detach-disk sles12sp3 sda2可以使用 --live 和 --config 选项来控制附件,如 第 8.2.1.5 节,“将卷附加到 VM 客户机” 中所述。
虚拟机管理器提供了一个图形界面——存储管理器——来管理存储卷和池。要访问它,请右键单击连接并选择 ,或突出显示连接并选择 › 。选择 选项卡。
要添加存储池,请按以下步骤操作
单击左下角的 。对话框 出现。
提供池的 (仅包含字母数字字符和 _、- 或 .),并选择 。
下面指定所需详细信息。它们取决于您创建的池的类型。
不支持 ZFS 池。
:指定现有的目录。
:设备分区表的格式。使用 通常可以正常工作。如果不行,请通过在 VM 主服务器上运行命令 parted -l 获取所需的格式。
:设备的路径。建议使用来自 /dev/disk/by-* 的设备名称,而不是简单的 /dev/sdX,因为后者可能会更改(例如,在添加或删除硬盘时)。您需要指定类似于整个磁盘的路径,而不是磁盘上的分区(如果存在)。
:VM 主服务器文件系统上的挂载点。
设备的 文件系统格式。默认值 auto 应该可以工作。
: 设备文件的路径。建议使用 /dev/disk/by-* 中的设备名称,而不是 /dev/sdX,因为后者可能会改变(例如,在添加或删除硬盘时)。
在 VM 主机服务器上运行以下命令以获取必要的数据
>sudoiscsiadm --mode node
它会返回一个 iSCSI 卷的列表,格式如下。加粗文本中的元素是必需的
IP_ADDRESS:PORT,TPGT TARGET_NAME_(IQN)
: 包含设备文件的目录。使用 /dev/disk/by-path(默认)或 /dev/disk/by-id。
: iSCSI 服务器的主机名或 IP 地址。
: iSCSI 目标名称(iSCSI 认证名称)。
: iSCSI 发起者名称。
: 指定现有卷组的设备路径。
: 目前,多路径支持仅限于使所有多路径设备可用。因此,在此处指定任意字符串。路径是必需的,否则 XML 解析器将失败。
:VM 主服务器文件系统上的挂载点。
: 导出网络文件系统的服务器的 IP 地址或主机名。
: 服务器上正在导出的目录。
: 具有导出 RADOS 块设备的服务器的主机名。
: 服务器上 RADOS 块设备的名称。
: 包含设备文件的目录。使用 /dev/disk/by-path(默认)或 /dev/disk/by-id。
: SCSI 适配器的名称。
远程操作时,无法通过单击 使用文件浏览器。
单击 以添加存储池。
虚拟机器管理器存储管理器允许您在池中创建或删除卷。您还可以临时停用或永久删除现有的存储池。目前,SUSE 不支持更改池的基本配置。
存储池的目的是提供位于 VM 主机服务器上的块设备,这些设备可以在从远程管理 VM 来宾时添加到 VM 来宾。要使池暂时从远程不可访问,请单击存储管理器左下角的 。停止的池用 标记,并在列表窗格中以灰色显示。默认情况下,新创建的池会在 VM 主机服务器 时自动启动。
要启动非活动池并使其再次从远程可用,请单击存储管理器左下角的 。
附加到 VM 客户机的池中的卷始终可用,无论池的状态如何((停止)或 (启动))。池的状态仅影响通过远程管理将卷附加到 VM 客户机的能力。
要永久使池不可访问,请单击存储管理器左下角的 。只能删除非活动池。删除池不会物理擦除 VM 主机服务器上的内容,只会删除池配置。但是,在删除池时,尤其是在删除基于 LVM 卷组的工具时,需要格外小心
删除基于 本地 文件系统目录、本地分区或磁盘的存储池对当前附加到 VM 来宾的池中的卷的可用性没有影响。
位于 iSCSI、SCSI、LVM 组或网络导出目录类型的池中的卷在删除池时将从 VM 来宾中不可访问。虽然卷本身不会被删除,但 VM 主机服务器将无法再访问这些资源。
当创建适当的新池或从主机系统直接挂载/访问这些资源时,iSCSI/SCSI 目标或网络导出目录上的卷将再次可访问。
删除基于 LVM 组的存储池时,将擦除 LVM 组定义,并且 LVM 组不再存在于主机系统上。配置无法恢复,并且此池中的所有卷都将丢失。
虚拟机器管理器允许您在所有存储池中创建卷,但多路径、iSCSI 或 SCSI 类型的池除外。这些池中的卷等同于 LUN,无法从 libvirt 内部更改。
可以使用存储管理器或在将新存储设备添加到 VM 来宾时创建新卷。在任何一种情况下,从左侧面板选择一个存储池,然后单击 。
为镜像指定一个 ,并选择一个镜像格式。
SUSE 目前仅支持 raw 或 qcow2 镜像。后者选项在基于 LVM 卷组的池中不可用。
在 旁边,指定磁盘镜像允许达到的最大大小。除非您正在使用 qcow2 镜像,否则还可以为最初应分配的 设置一个量。如果这两个值不同,则会创建一个稀疏镜像文件,该文件会按需增长。
对于 qcow2 镜像,可以使用 (也称为 “备份文件”),它构成一个基本镜像。新创建的 qcow2 镜像然后仅记录对基本镜像所做的更改。
单击 以启动卷创建。