Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 13 章 为虚拟机管理存储

本章提供有关虚拟机存储的信息。虚拟存储从分配给虚拟机连接的物理存储抽象化。存储使用半虚拟化或模拟块设备驱动程序附加到虚拟机。

13.1. 存储概念

存储池是 客户端虚拟机供客户机使用而设置的存储数量。存储池被分成一个 存储卷。每个存储卷都以客户机总线上的块设备形式分配给客户机虚拟机。
存储池和卷使用 libvirt 管理。使用 libvirt 的远程协议,可以管理客户机虚拟机生命周期的所有方面,以及客户机虚拟机所需的资源的配置。这些操作可以在远程主机上执行。因此,使用 libvirt 等管理应用程序可以允许用户执行为客户机虚拟机配置主机物理机器所需的所有任务。这包括分配资源、运行客户机虚拟机、将其关闭和取消分配资源,而无需 shell 访问或任何其他控制频道。
libvirt API 可用于查询存储池中的卷列表,或者获取存储池中容量、分配和可用存储的信息。可能会查询存储池中的存储卷以获取分配和容量等信息,稀疏卷可能会有所不同。
注意
有关稀疏卷的更多信息,请参阅 虚拟化入门指南
对于支持它的存储池,可以使用 libvirt API 来创建、克隆、调整大小和删除存储卷。API 也可用于将数据上传到存储卷,从存储卷下载数据,或者从存储卷擦除数据。
启动存储池后,可以使用存储池名称和存储卷名称而非域 XML 中卷的主机路径,将存储卷分配给客户机。
注意
有关域 XML 的详情,请参考 第 23 章 操作域 XML
存储池可以被停止(销毁)。这会删除数据的抽象,但保持数据不受影响。
例如,使用 mount -t nfs nfs.example.com:/path/to/share /path/to/data 的 NFS 服务器。负责管理存储管理员在虚拟化主机上定义 NFS 存储池,以描述导出的服务器路径和客户端目标路径。这将允许 libvirt 在启动 libvirt 时或者根据需要在 libvirt 运行时自动执行挂载。NFS 服务器导出目录的文件在 NFS 存储池中被列为存储卷。
当存储卷添加到客户端时,管理员不需要为卷添加目标路径。他只需要根据名称添加存储池和存储卷。因此,如果目标客户端路径改变,它不会影响虚拟机。
启动存储池时,libvirt 将共享挂载到指定目录中,就像系统管理员登录并执行 nfs.example.com:/path/to/share /vmdata 一样。如果存储池被配置为 autostart,则 libvirt 可确保将 NFS 共享磁盘挂载到 libvirt 启动时指定的目录中。
启动存储池后,NFS 共享磁盘中的文件报告为存储卷,且可以使用 libvirt API 查询存储卷的路径。然后可将存储卷的路径复制到客户机虚拟机 XML 定义的部分,该部分描述了客户机虚拟机块设备的源存储。对于 NFS,使用 libvirt API 的应用程序可以在存储池中创建和删除存储卷(NFS 共享中的文件)到池大小的限制(共享的存储容量)。
并非所有存储池类型都支持创建和删除卷。停止存储池(pool-destroy)会撤销启动操作,在这种情况下,卸载 NFS 共享。销毁操作不会修改共享中的数据,即使该命令的名称看似象要删除。详情请查看 man virsh

过程 13.1. 创建并分配存储

此流程提供了对为虚拟机创建和分配存储所需的步骤的高级了解。
  1. 创建存储池

    从可用存储介质创建一个或多个存储池。如需更多信息,请参阅 第 13.2 节 “使用存储池”
  2. 创建存储卷

    从可用存储池创建一个或多个存储卷。如需更多信息,请参阅 第 13.3 节 “使用存储卷”
  3. 为虚拟机分配存储设备。

    将从存储卷中提取的一个或多个存储设备分配给客户机虚拟机。如需更多信息,请参阅 第 13.3.6 节 “在客户机中添加存储设备”