Red Hat Training

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

13.3. 在客户机中添加存储设备

本节介绍在客户机中添加存储设备。可以根据需要添加额外的存储。

13.3.1. 在 客户机中添加基于文件的存储

基于文件的存储是保存在主机物理机器文件系统中的文件集合,充当客户机的虚拟化硬盘驱动器。要添加基于文件的存储,请执行以下步骤:

过程 13.1. 添加基于文件的存储

  1. 创建存储文件或使用现有文件(如 IMG 文件)。请注意,以下两个命令都创建一个 4GB 文件,该文件可用作客户机的额外存储:
    • 建议为基于文件的存储镜像使用预分配文件。使用以下 dd 命令创建预分配文件:
      # dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
    • 或者,创建稀疏文件,而不是预分配的文件。稀疏文件创建速度更快,并可用于测试,但由于数据完整性和性能问题,不建议在生产环境中使用。
      # dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
  2. 通过在新文件中写入 < disk&gt; 元素来创建额外的存储。在本例中,该文件将被称为 NewStorage.xml
    < disk > 元素描述了磁盘源,以及虚拟块设备的设备名称。设备名称应该在客户机中所有设备间唯一,并确定客户机将在其上查找虚拟块设备的总线。以下示例定义了 virtio 块设备,其源是一个基于文件的存储容器,名为 FileName.img
    <disk type='file' device='disk'>
       <driver name='qemu' type='raw' cache='none'/>
       <source file='/var/lib/libvirt/images/FileName.img'/>
       <target dev='vdb'/>
    </disk>
    
    设备名称也以"hd"或"sd"开头,分别标识 IDE 和 SCSI 磁盘。配置文件也可以包含 < address& gt; 子元素,用于指定新设备的总线上的位置。如果是 virtio 块设备,则应该是 PCI 地址。省略 & lt;address > 子元素可让 libvirt 查找并分配下一个可用的 PCI 插槽。
  3. 按如下方式附加 CD-ROM:
    <disk type='file' device='cdrom'>
       <driver name='qemu' type='raw' cache='none'/>
       <source file='/var/lib/libvirt/images/FileName.img'/>
       <readonly/>
       <target dev='hdc'/>
    </disk >
    
  4. 使用您的 guest(Guest1)添加 NewStorage.xml 中定义的设备:
    # virsh attach-device --config Guest1 ~/NewStorage.xml
    注意
    这个更改只有在客户机被销毁并重启后才会应用。另外,永久性设备只能添加到持久域中,这是使用 virsh define 命令保存的配置的域。
    如果客户机正在运行,并且您希望临时添加新设备,直到销毁客户端为止,省略 --config 选项:
    # virsh attach-device Guest1 ~/NewStorage.xml
    注意
    virsh 命令允许 attach-disk 命令使用更简单的语法来设置有限数量的参数,而无需创建 XML 文件。attach-disk 命令使用与前面提到的 attach-device 命令类似的方法,如下所示:
    # virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none --driver qemu --subdriver raw
    
    请注意,virsh attach-disk 命令也接受 --config 选项。
  5. 启动 guest 机器(如果当前尚未运行):
    # virsh start Guest1
    注意
    以下步骤特定于 Linux 客户机。其他操作系统以不同的方式处理新存储设备。有关其他系统,请参考该操作系统的文档。
  6. 对磁盘驱动器进行分区

    现在,客户机具有名为 /dev/vdb 的硬盘设备。如果需要,对这个磁盘驱动器进行分区并格式化分区。如果没有看到添加的设备,这表示您的客户端操作系统中存在磁盘热插问题。
    1. 为新设备启动 fdisk
      # fdisk /dev/vdb
      Command (m for help):
      
    2. 为新分区输入 n
    3. 此时会出现以下内容:
      Command action
      e   extended
      p   primary partition (1-4)
      
      为主分区输入 p
    4. 选择可用分区号。在这个示例中,通过输入 1 来选择第一个分区。
      Partition number (1-4): 1
    5. Enter 输入默认柱面。
      First cylinder (1-400, default 1):
    6. 选择分区的大小。在本例中,通过按 Enter 来分配整个磁盘。
      Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
    7. 输入 t 来配置分区类型。
      Command (m for help): t
    8. 选择您在前面的步骤中创建的分区。在这个示例中,分区号是 1,因为只有一个分区创建,fdisk 会自动选择分区 1。
      Partition number (1-4): 1
    9. 为 Linux 分区输入 83
      Hex code (type L to list codes): 83
    10. 输入 w 写入更改并退出。
      Command (m for help): w
      
    11. 将新分区格式化为 ext3 文件系统。
      # mke2fs -j /dev/vdb1
  7. 创建挂载目录,并在客户端上挂载磁盘。在本例中,目录位于 myfiles
    # mkdir /myfiles
    # mount /dev/vdb1 /myfiles
    
    客户机现在有一个额外的基于文件的虚拟化存储设备。但请注意,除非在 guest 的 /etc/fstab 文件中定义,否则此存储不会在系统重启后持久挂载:
    /dev/vdb1    /myfiles    ext3     defaults    0 0