搜索

12.5. 使用 CLI 管理虚拟机存储卷

download PDF

您可以使用 CLI 管理存储卷的以下方面来为虚拟机分配存储:

12.5.1. 使用 CLI 查看存储卷信息

使用命令行,您可以查看主机上所有可用存储池的列表,以及指定存储池的详情

流程

  1. 使用 virsh vol-list 命令列出指定存储池中的存储卷。

    # virsh vol-list --pool RHEL-Storage-Pool --details
     Name                Path                                               Type   Capacity  Allocation
    ---------------------------------------------------------------------------------------------
     .bash_history       /home/VirtualMachines/.bash_history       file  18.70 KiB   20.00 KiB
     .bash_logout        /home/VirtualMachines/.bash_logout        file    18.00 B    4.00 KiB
     .bash_profile       /home/VirtualMachines/.bash_profile       file   193.00 B    4.00 KiB
     .bashrc             /home/VirtualMachines/.bashrc             file   1.29 KiB    4.00 KiB
     .git-prompt.sh      /home/VirtualMachines/.git-prompt.sh      file  15.84 KiB   16.00 KiB
     .gitconfig          /home/VirtualMachines/.gitconfig          file   167.00 B    4.00 KiB
     RHEL_Volume.qcow2   /home/VirtualMachines/RHEL8_Volume.qcow2  file  60.00 GiB   13.93 GiB
  2. 使用 virsh vol-info 命令列出指定存储池中的存储卷。

    # virsh vol-info --pool RHEL-Storage-Pool --vol RHEL_Volume.qcow2
    Name:           RHEL_Volume.qcow2
    Type:           file
    Capacity:       60.00 GiB
    Allocation:     13.93 GiB

12.5.2. 使用 CLI 创建并分配存储卷

要获取磁盘镜像,并将其作为虚拟磁盘附加到虚拟机(VM),请创建一个存储卷,并将其 XML 配置分配到虚拟机。

先决条件

  • 主机上存在带有未分配空间的存储池。

    • 要验证,列出主机上的存储池:

      # virsh pool-list --details
      
      Name               State     Autostart   Persistent   Capacity     Allocation   Available
      --------------------------------------------------------------------------------------------
      default            running   yes         yes          48.97 GiB    36.34 GiB    12.63 GiB
      Downloads          running   yes         yes          175.92 GiB   121.20 GiB   54.72 GiB
      VM-disks           running   yes         yes          175.92 GiB   121.20 GiB   54.72 GiB
    • 如果您没有现有的存储池,请创建一个。如需更多信息,请参阅 管理虚拟机的存储

流程

  1. 使用 virsh vol-create-as 命令创建存储卷。例如,要基于 guest-images-fs 存储池创建一个 20 GB 的 qcow2 卷:

    # virsh vol-create-as --pool guest-images-fs --name vm-disk1 --capacity 20 --format qcow2

    重要 :特定的存储池类型不支持 virsh vol-create-as 命令,而是需要特定的进程来创建存储卷:

    • 基于 GlusterFS - 使用 qemu-img 命令来创建存储卷。
    • 基于 iSCSI - 事先在 iSCSI 服务器中准备 iSCSI LUN。
    • 基于多路径 - 使用 multipathd 命令来准备或管理多路径。
    • 基于 vHBA - 事先准备光纤通道卡。
  2. 创建一个 XML 文件,并在其中添加以下几行。此文件将用于将存储卷作为磁盘添加到虚拟机。

    <disk type='volume' device='disk'>
        <driver name='qemu' type='qcow2'/>
        <source pool='guest-images-fs' volume='vm-disk1'/>
        <target dev='hdk' bus='ide'/>
    </disk>

    本例指定一个在上一步中创建的 vm-disk1 卷的虚拟磁盘,并将卷设为 ide 总线上的磁盘 hdk。根据您的环境修改对应的参数。

    重要 :对于特定的存储池类型,您必须使用不同的 XML 格式来描述存储卷磁盘。

    • 对于 基于 GlusterFS 的池:

        <disk type='network' device='disk'>
          <driver name='qemu' type='raw'/>
          <source protocol='gluster' name='Volume1/Image'>
            <host name='example.org' port='6000'/>
          </source>
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </disk>
    • 对于 基于多路径的池:

      <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/mapper/mpatha' />
      <target dev='sda' bus='scsi'/>
      </disk>
    • 对于 基于 RBD 存储的池:

        <disk type='network' device='disk'>
          <driver name='qemu' type='raw'/>
          <source protocol='rbd' name='pool/image'>
            <host name='mon1.example.org' port='6321'/>
          </source>
          <target dev='vdc' bus='virtio'/>
        </disk>
  3. 使用 XML 文件为虚拟机分配存储卷。例如,要将 ~/vm-disk1.xml 中定义的磁盘分配给 testguest1 虚拟机,请使用以下命令:

    # virsh attach-device --config testguest1 ~/vm-disk1.xml

验证

  • 在虚拟机的客户机操作系统中,确认磁盘映像已作为未格式化和未分配的磁盘提供。

12.5.3. 使用 CLI 删除存储卷

要从主机系统中删除存储卷,您必须停止池并删除它的 XML 定义。

先决条件

  • 任何使用您要删除的存储卷的虚拟机都会被关闭。

流程

  1. 使用 virsh vol-list 命令列出指定存储池中的存储卷。

    # virsh vol-list --pool RHEL-SP
     Name                 Path
    ---------------------------------------------------------------
     .bash_history        /home/VirtualMachines/.bash_history
     .bash_logout         /home/VirtualMachines/.bash_logout
     .bash_profile        /home/VirtualMachines/.bash_profile
     .bashrc              /home/VirtualMachines/.bashrc
     .git-prompt.sh       /home/VirtualMachines/.git-prompt.sh
     .gitconfig           /home/VirtualMachines/.gitconfig
     vm-disk1             /home/VirtualMachines/vm-disk1
  2. 可选: 使用 virsh vol-wipe 命令来擦除存储卷。例如,要擦除与存储池 RHEL-SP 关联的名为 vm-disk1 的存储卷:

    # virsh vol-wipe --pool RHEL-SP vm-disk1
    Vol vm-disk1 wiped
  3. 使用 virsh vol-delete 命令来删除存储卷。例如,要删除与存储池 RHEL-SP 关联的名为 vm-disk1 的存储卷:

    # virsh vol-delete --pool RHEL-SP vm-disk1
    Vol vm-disk1 deleted

验证

  • 再次使用 virsh vol-list 命令来验证存储卷是否已被删除。

    # virsh vol-list --pool RHEL-SP
     Name                 Path
    ---------------------------------------------------------------
     .bash_history        /home/VirtualMachines/.bash_history
     .bash_logout         /home/VirtualMachines/.bash_logout
     .bash_profile        /home/VirtualMachines/.bash_profile
     .bashrc              /home/VirtualMachines/.bashrc
     .git-prompt.sh       /home/VirtualMachines/.git-prompt.sh
     .gitconfig           /home/VirtualMachines/.gitconfig
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.