|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
基础镜像
SUSE Storage 原生支持基础镜像。
可以将 QCOW2 或 RAW 镜像设置为 SUSE Storage 卷的基础镜像,这允许 SUSE Storage 与虚拟化方案如 SUSE Virtualization 集成。
|
镜像大小必须是 a multiple of 512 bytes。SUSE Storage 使用直接 I/O,这要求文件大小与底层存储块大小对齐。 |
创建 V1 数据引擎基础镜像
参数
数据源
您可以使用任何支持的数据源准备 V1 基础镜像。
-
下载基础镜像文件(使用 URL)。
-
从本地计算机上传文件。此选项对 SUSE Storage UI 用户可用。
-
将现有集群内卷导出为基础镜像。
-
从备份库恢复基础镜像,更多信息请参见 基础镜像备份。
-
克隆基础镜像。
Checksum
-
基础镜像的校验和是 整个基础镜像的 SHA512 校验和,而不是实际内容的校验和。 有什么区别?当 SUSE Storage 计算 qcow2 文件的校验和时,它会将文件作为原始文件读取,而不是使用 qcow 库读取正确的内容。换句话说,用户通过执行
shasum -a 512 <the file path>始终可以获得正确的校验和,无论文件格式如何。 -
建议在创建基础镜像时提供预期的校验和。 否则,SUSE Storage 将把第一个文件的校验和视为正确的校验和。一旦第一个文件准备出现问题,导致校验和与预期值不符,则该基础镜像可能不可用。
创建基础镜像的方法
使用 YAML 创建 V1 基础镜像
您可以通过 YAML 下载文件或导出现有卷作为基础镜像。 最好不要通过 YAML "上传" 文件。否则,您需要通过 HTTP 请求手动处理数据上传。
以下是一些示例:
apiVersion: longhorn.io/v1beta2
kind: BackingImage
metadata:
name: bi-download
namespace: longhorn-system
spec:
dataEngine: v1
minNumberOfCopies: 2
nodeSelector:
- "node1"
diskSelector:
- "disk1"
sourceType: download
sourceParameters:
url: https://longhorn-backing-image.s3-us-west-1.amazonaws.com/parrot.raw
checksum: 304f3ed30ca6878e9056ee6f1b02b328239f0d0c2c1272840998212f9734b196371560b3b939037e4f4c2884ce457c2cbc9f0621f4f5d1ca983983c8cdf8cd9a
apiVersion: longhorn.io/v1beta2
kind: BackingImage
metadata:
name: bi-export
namespace: longhorn-system
spec:
dataEngine: v1
minNumberOfCopies: 2
nodeSelector:
- "node1"
diskSelector:
- "disk1"
sourceType: export-from-volume
sourceParameters:
volume-name: vol-export-src
export-type: qcow2
使用 StorageClass 和 PVC 创建基础镜像
-
在 Longhorn StorageClass 中。
-
设置参数
backingImageName意味着要求 SUSE Storage 在卷创建期间使用此基础镜像。 -
如果您想创建基础镜像,只要在 CSI 卷创建期间不存在,则应设置参数
backingImageDataSourceType和backingImageDataSourceParameters。与 YAML 类似,最好不要通过 StorageClass 中的 "上传" 创建基础镜像。请注意,如果所有这些参数都已设置并且基础镜像已存在,SUSE Storage 将在使用之前验证参数是否与现有参数匹配。-
对于`download`:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: longhorn-backing-image-example provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate parameters: numberOfReplicas: "3" staleReplicaTimeout: "2880" backingImage: "bi-download" backingImageDataSourceType: "download" backingImageDataSourceParameters: '{"url": "https://backing-image-example.s3-region.amazonaws.com/test-backing-image"}' backingImageChecksum: "SHA512 checksum of the backing image" backingImageMinNumberOfCopies: "2" backingImageNodeSelector: "node1" backingImageDiskSelector: "disk1" dataEngine: "v1" -
对于`export-from-volume`:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: longhorn-backing-image-example provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate parameters: numberOfReplicas: "3" staleReplicaTimeout: "2880" backingImage: "bi-export-from-volume" backingImageDataSourceType: "export-from-volume" backingImageDataSourceParameters: '{"volume-name": "vol-export-src", "export-type": "qcow2"}' backingImageMinNumberOfCopies: "2" backingImageNodeSelector: "node1" backingImageDiskSelector: "disk1" dataEngine: "v1"
-
-
创建一个带有 StorageClass 的 PVC。如果基础镜像不存在,则将创建基础镜像(带有 SUSE Storage 卷)。
-
当使用基础镜像的卷附加到节点时,SUSE Storage 开始将基础镜像预备到磁盘上供副本使用。
|
在卷中使用基础镜像
用户可以 直接创建然后立即通过 StorageClass 使用基础镜像 或利用下面提到的现有基础镜像。
使用现有基础镜像
在卷创建期间使用现有基础镜像
-
在 SUSE Storage UI 中点击 。
-
点击 创建基础镜像 以创建一个具有唯一名称和有效 URL 的基础镜像。
-
从列表中选择一个基础镜像。卷和基础镜像必须使用相同的数据引擎。
-
当使用基础镜像的卷附加到节点时,SUSE Storage 开始将基础镜像下载到副本的磁盘。
在卷恢复期间使用现有基础镜像
-
点击
Backup并选择一个备份卷进行恢复。 -
只要备份卷已经设置了基础镜像,SUSE Storage 将在恢复期间自动选择基础镜像。
-
SUSE Storage 允许您在恢复期间重新指定或覆盖基础镜像。
下载基础镜像文件
自 v1.3.0 起,用户可以通过用户界面将现有的基础镜像文件下载到本地机器。
|
创建 V2 数据引擎基础镜像
从 v1.8.0 开始,您可以通过在 YAML 中配置 Data Engine(通过用户界面或 StorageClass)来创建一个由 V2 数据引擎支持的基础镜像。
参数
所有参数与 V1 数据引擎基础镜像的参数相同,除了 Data Engine。
数据源
您可以使用任何受支持的数据源准备 V2 数据引擎基础镜像。
-
下载基础镜像文件(使用 URL)。
-
从本地计算机上传文件。此选项对 SUSE Storage UI 用户可用。
-
将现有的集群内 V1 数据引擎卷导出为基础镜像。
-
从备份存储中恢复基础镜像。有关更多信息,请参见 基础镜像备份。
-
克隆 V1 基础镜像。
|
清理基础镜像
清理磁盘中的基础镜像
-
SUSE Storage 自动清理磁盘上未使用的基础镜像文件,依据 设置
Backing Image Cleanup Wait Interval。但是 SUSE Storage 会在每个基础镜像的磁盘上保留至少一个文件。 -
您可以使用 SUSE Storage UI 手动去除磁盘中的基础镜像。前往 设置 > 基础镜像,然后点击特定基础镜像的名称。在打开的窗口中,选择一个或多个磁盘,然后点击 清理。
-
一旦磁盘中存在使用基础镜像的副本,无论副本当前状态如何,该磁盘中的基础镜像文件均无法清理。
删除基础镜像
-
只有在没有使用它的卷时,基础镜像才能被删除。
基础镜像恢复
-
如果某个磁盘上仍存在一个准备好的基础镜像文件,SUSE Storage 将自动清理失败的基础镜像文件,然后从该准备好的文件重新启动。
-
如果某种情况下,基础镜像的所有文件都变为失败,且第一个文件是:
-
从 URL 下载的,SUSE Storage 将重新启动下载。
-
从现有卷导出的,SUSE Storage 将(如有必要,附加卷然后)重新启动导出。
-
从用户本地环境上传的,无法恢复。用户需要删除此基础镜像,然后通过重新上传文件创建一个新的。
-
-
当节点宕机或节点上的备份镜像管理器 Pod 不可用时,节点上的所有基础镜像文件将变为
unknown。稍后,如果节点恢复且 Pod 正在运行,SUSE Storage 将检测到这一点并自动重用现有文件。
基础镜像驱逐
-
您可以通过在 SUSE Storage UI 上将
Scheduling设置为Disabled,并将Eviction Requested设置为True,手动驱逐节点或磁盘上的所有基础镜像文件。 -
如果集群中仅存在一个基础镜像文件,SUSE Storage 将首先将该文件复制到另一磁盘,然后删除该文件。
-
如果备份镜像文件无法复制到其他磁盘,SUSE Storage 不会删除该文件。您可以更新设置以解决此问题。
备份镜像工作流程
-
为了管理磁盘上的所有备份镜像文件,SUSE Storage 为每个磁盘创建一个单独的备份镜像管理器 Pod。一旦磁盘不再需要备份镜像文件,备份镜像管理器将自动被去除。
-
一旦备份镜像管理器为磁盘准备好备份镜像文件,该文件将在此磁盘上的所有卷副本之间共享。
-
当创建备份镜像时,SUSE Storage 启动一个备份镜像数据源 Pod 来准备初始文件。文件数据来自用户指定的源,例如从远程位置下载、本地文件上传或从现有卷导出。一旦准备完成,同一磁盘上的备份镜像管理器 Pod 接管该文件,SUSE Storage 停止数据源 Pod。
-
一旦新备份镜像被卷使用,卷副本所在磁盘中的备份镜像管理器 Pods 将被要求从已经包含该文件的备份镜像管理器 Pods 同步该文件。
-
如在章节 #clean_up_backing_images_in_disks 中提到的,如果一个磁盘中的所有副本都不使用一个备份镜像文件,该文件将自动被清理。
备份镜像同步的并发限制
-
Concurrent Backing Image Replenish Per Node Limit在全局设置中控制节点上可以同时补充多少个备份镜像副本。 -
当设置为 0 时,SUSE Storage 不会自动补充副本,即使它低于 minNumberOfCopies。