搜索

2.22. 上传本地磁盘镜像至块存储 DataVolume

download PDF

您可使用 virtctl 命令行实用程序上传本地磁盘镜像至块 DataVolume 中。

在此工作流中,您会创建一个本地块设备用作 PersistentVolume,将此块卷与 upload DataVolume 关联,并使用 virtctl 将本地磁盘镜像上传至 DataVolume 中。

先决条件

2.22.1. 关于 DataVolume

DataVolume 对象是 Containerized Data Importer (CDI) 项目提供的自定义资源。DataVolume 编配与底层 PersistentVolumeClaim (PVC) 关联的导入、克隆和上传操作。DataVolume 与 KubeVirt 集成,它们可在 PVC 准备好前阻止虚拟机启动。

2.22.2. 关于块 PersistentVolume

块 PersistentVolume (PV) 是一个受原始块设备支持的 PV。这些卷没有文件系统。对于可以直接写入磁盘或者实现其自己的存储服务的虚拟机来说,使用它可以获得性能优势。

原始块卷可以通过在 PV 和 PersistentVolumeClaim (PVC) 规格中指定 volumeMode: Block 来置备。

2.22.3. 创建本地块 PersistentVolume

通过填充文件并将其挂载为循环设备,在节点上创建本地块 PersistentVolume (PV)。然后您可以在 PV 配置中将该循环设备引用为 Block 卷,并将其用作虚拟机镜像的块设备。

流程

  1. root 身份登录节点,在其上创建本地 PV。本流程以 node01 为例。
  2. 创建一个文件并用空字符填充,以便可将其用作块设备。以下示例创建 loop10 文件,大小为 2Gb(20,100 Mb 块):

    $ dd if=/dev/zero of=<loop10> bs=100M count=20
  3. loop10 文件挂载为 loop 设备。

    $ losetup </dev/loop10>d3 <loop10> 1 2
    1
    挂载 loop 设备的文件路径。
    2
    上一步中创建的文件,挂载为 loop 设备。
  4. 创建引用所挂载 loop 设备的 PersistentVolume 配置。

    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: <local-block-pv10>
      annotations:
    spec:
      local:
        path: </dev/loop10> 1
      capacity:
        storage: <2Gi>
      volumeMode: Block 2
      storageClassName: local 3
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <node01> 4
    1
    节点上的 loop 设备路径。
    2
    将其指定为块 PV。
    3
    可选:为 PV 设置一个 StorageClass。如果省略此项,将使用默认集群。
    4
    挂载块设备的节点。
  5. 创建块 PV。

    # oc create -f <local-block-pv10.yaml>1
    1
    上一步中创建的 PersistentVolume 的文件名。

2.22.4. 创建上传 DataVolume

使用 upload 数据源创建 DataVolume,用于上传本地磁盘镜像。

流程

  1. 创建 DataVolume 配置,用于指定 spec: source: upload{}

    apiVersion: cdi.kubevirt.io/v1alpha1
    kind: DataVolume
    metadata:
      name: <upload-datavolume> 1
    spec:
      source:
          upload: {}
      pvc:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <2Gi> 2
    1
    DataVolume 的名称
    2
    DataVolume 的大小
  2. 创建 DataVolume:

    $ oc create -f <upload-datavolume>.yaml

2.22.5. 上传本地磁盘镜像至新 DataVolume

您可使用 virtctl CLI 实用程序将虚拟机磁盘镜像从客户端机器上传至集群中的 DataVolume (DV)。上传镜像后,您可将其添加到虚拟机中。

先决条件

  • 具有 RAW、ISO 或 QCOW2 格式的虚拟机磁盘镜像,可选择使用 xzgz 进行压缩。
  • kubevirt-virtctl 软件包必须安装在客户端机器上。
  • 客户端机器必须配置为信任 OpenShift Container Platform 路由器的证书。
  • 具有一个大小不低于您要上传的磁盘的备用 DataVolume。

流程

  1. 确定以下各项:

    • 要上传的虚拟机磁盘镜像的文件位置
    • DataVolume 的名称
  2. 运行 virtctl image-upload 命令以上传您的磁盘镜像。您必须指定 DV 名称以及文件位置。例如:

    $ virtctl image-upload --dv-name=<upload-datavolume> --image-path=</images/fedora.qcow2> 1 2
    1
    正在创建的 DataVolume 的名称。
    2
    正在上传的虚拟机磁盘镜像的文件路径。
    小心

    若要在使用 HTTPS 时允许不安全的服务器连接,请使用 --insecure 参数。注意,在使用 --insecure 标志时,不会验证上传端点的真实性。

  3. 要验证 DV 是否已创建,请查看所有 DV 对象:

    $ oc get dvs

2.22.6. CDI 支持的操作列表

此列表针对端点显示内容类型支持的 CDI 操作,以及哪些操作需要涂销空间(scratch space)。

内容类型HTTPHTTPSHTTP 基本身份验证Registry上传

KubeVirt(QCOW2)

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2**
✓ GZ*
✓ XZ*

✓ QCOW2
✓ GZ*
✓ XZ*

✓ QCOW2*
□ GZ
□ XZ

✓ QCOW2*
✓ GZ*
✓ XZ*

KubeVirt (RAW)

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW
✓ GZ
✓ XZ

✓ RAW*
□ GZ
□ XZ

✓ RAW*
✓ GZ*
✓ XZ*

Archive+

✓ TAR

✓ TAR

✓ TAR

□ TAR

□ TAR

✓ 支持的操作

□ 不支持的操作

* 需要涂销空间

** 如果需要自定义证书颁发机构,则需要涂销空间

+ 存档不支持块模式 DV

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.