搜索

第 2 章 配置 OpenStack Compute 存储

download PDF

本节介绍了 OpenStack Compute(nova)中的镜像后端存储的架构,以及基本的配置选项。

2.1. 架构概述

在 Red Hat Enterprise Linux OpenStack Platform 中,OpenStack Compute 服务使用 KVM hypervisor 来执行计算负载。libvirt 驱动被用来处理和 KVM 间的所有交流,并启用对虚拟机的创建功能。

Compute 服务需要考虑两类 libvirt 存储:

  • 基础镜像(base image):Image 服务镜像的一个缓存的、具有特定格式的副本。
  • 实例磁盘(Instance disk):由 libvirt 创建作为虚拟机实例的后端。实例磁盘可以存储在 Compute 的临时存储(使用 libvirt),也可以存储在一个具有持久性的存储中(如使用 Block Storage)。

创建虚拟机

Compute 服务创建虚拟机实例的步骤是:

  1. 缓存 Image 服务的后端镜像作为 libvirt 的基础。
  2. 把基础镜像转换为 raw 格式(如果被配置)。
  3. 调整基础镜像的大小来匹配虚拟机 flavor 的规范。
  4. 使用基础镜像创建 libvirt 实例磁盘。

在上面的图中,#1 实例磁盘使用临时存储;#2 磁盘使用块存储卷。

2.2. 配置

用来处理 libvirt 基础镜像和实例磁盘的 Compute 配置(参数在 /etc/nova/nova.conf 文件中定义)会决定环境的性能和安全性。

表 2.1. Compute 镜像参数
参数描述默认

[DEFAULT]

force_raw_images

是否把 non-raw 缓存的基础镜像转换为 raw(布尔值)。如果 non-raw 镜像被转换为 raw,Compute 将会:

  • 不允许备份文件(可能会产生安全性的问题)。
  • 删除存在的压缩(避免 CPU 瓶颈)。

把基础镜像转换为 raw 格式会比 hypervisor 直接使用镜像(例如,一个 qcow2 镜像)需要更多空间。如果您的系统有较慢的 I/O 或空间比较小,您可以把它设置为 'false',这样可以通过提高数据压缩/解压操作对 CPU 的要求来换取对输入带宽要求最小化的目的。

raw 基础镜像需要和 libvirt_images_type=lvm 一起使用。

true

[DEFAULT]

use_cow_images

libvirt 实例磁盘是否使用 CoW(Copy on Write)(布尔值):

  • false - 使用 raw 格式。在不使用 CoW 时,磁盘镜像的公用部分会需要更多的存储空间。
  • true - 使用 cqow2 格式。在使用 CoW 时,每个虚拟机都有自己的数据副本,因此可以提高多系统共存的性能(这取决于后端的存储和主机缓存)。

true

[DEFAULT]

preallocate_images

libvirt 实例磁盘的预分配模式。它的值可以是:

  • none - 在实例启动时不分配存储。
  • space - 在实例启动时完全分配存储(使用 fallocate),这可以保证获得所需的存储空间和 I/O 性能。

即使没有使用 CoW 实例磁盘,每个虚拟机所获得的数据副本也是稀疏的,因此,虚拟机可能会在运行时出现 ENOSPC 错误。通过在实例磁盘镜像中运行 fallocate(1),Compute 会马上并高效地为它们在文件系统中分配存储空间(如果支持这个功能)。因为在运行时,文件系统不需要动态地分配数据块,所以运行时的性能也会提高。

none

[DEFAULT]

resize_fs_using_block_device

是否启用通过访问块设备上的基础镜像来直接调整基础镜像的功能(布尔值)。使用较旧版本的 cloud-init 的镜像不需要这个设置(它们无法调整自身的大小)。

因为这个参数会启用直接挂载镜像的功能,而这个功能通常会因为安全性的原因被禁用,所以它在默认情况下没有被启用。

false

[DEFAULT]

default_ephemeral_format

一个新临时卷的默认格式。它的值可能是:ext2ext3ext4。对于大的、新的磁盘,ext4 格式会比 ext3 提供更快的初始化时间。您可以使用 guest_format 配置选项单独对每个系统中的这个设置进行覆盖。

ext4

[DEFAULT]

image_cache_manager_interval

在连续两次运行镜像缓存管理器(image cache manager)间需要等待的秒数,这会影响到 libvirt compute 节点的基础缓存。在这段间隔时间内会自动删除不再使用的缓存镜像(请参阅 remove_unused_base_imagesremove_unused_original_minimum_age_seconds)。

2400

[DEFAULT]

remove_unused_base_images

是否启动自动删除不使用的基础镜像的功能(每 image_cache_manager_interval 秒检查一次)。当镜像在 remove_unused_original_minimum_age_seconds 秒的时间内没有被访问,则认为它是 unused

true

[DEFAULT]

remove_unused_original_minimum_age_seconds

在从 libvirt 缓存中删除未使用的基础镜像前,这个基础镜像存在的时间(remove_unused_base_images)。

86400

[libvirt]

images_type

libvirt 实例磁盘使用的镜像类型(替代 use_cow_images)。它的有效值是:rawqcow2lvmrbddefault。如果指定为 defaultuse_cow_images 参数的值会被使用。

default

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.