第1章部署VDO
作为系统管理员,您可以使用VDO创建重复数据删除和压缩的存储池。
1.1。VDO简介
虚拟数据优化器(VDO)以重复数据删除,压缩和精简配置的形式为Linux提供了内联数据缩减。设置VDO卷时,可以指定要在其上构造VDO卷的块设备以及计划提供的逻辑存储量。
- 当托管活动的虚拟机或容器时,红帽建议以10:1的逻辑与物理比率配置存储:即,如果您使用1 TB的物理存储,则将其表示为10 TB的逻辑存储。
- 对于对象存储(例如Ceph提供的类型),Red Hat建议使用3:1的逻辑与物理比率:也就是说,将1 TB的物理存储表示为3 TB的逻辑存储。
无论哪种情况,您都可以将文件系统放在VDO提供的逻辑设备之上,然后直接使用它或将其用作分布式云存储体系结构的一部分。
因为VDO是精简配置的,所以文件系统和应用程序只能看到正在使用的逻辑空间,而无法知道可用的实际物理空间。应该使用脚本来监视实际的可用空间并在使用超过阈值时发出警报:例如,当VDO卷已满80%时。有关详细信息,请参见第2.2节“管理VDO卷上的可用空间”。
1.2。VDO部署方案
您可以通过多种方式部署VDO,以为以下项目提供重复数据删除存储:
- 阻止和文件访问
- 本地和远程存储
由于VDO将其重复数据删除存储作为标准Linux块设备公开,因此您可以将其与标准文件系统,iSCSI和FC目标驱动程序一起使用,或作为统一存储使用。
注意
当前不支持通过Ceph Storage进行VDO部署。
虚拟机
您可以在配置了Direct Attached Storage的KVM服务器上部署VDO。
文件系统
您可以在VDO之上创建文件系统,并使用NFS服务器或Samba将它们公开给NFS或CIFS用户。
iSCSI目标
您可以将整个VDO存储目标作为iSCSI目标导出到远程iSCSI启动器。
LVM
在功能更丰富的系统上,您可以使用LVM提供多个逻辑单元号(LUN),这些逻辑单元号均由相同的重复数据删除存储池支持。
在下图中,VDO目标已注册为物理卷,以便可以由LVM管理。从已删除重复数据的存储池中创建多个逻辑卷(LV1至LV4)。这样,VDO可以支持对底层重复数据删除存储池的多协议统一块或文件访问。
重复数据删除统一存储设计使多个文件系统可以通过LVM工具共同使用同一重复数据删除域。此外,文件系统可以利用LVM快照,写时复制以及缩小或增长功能,而这一切都是在VDO之上。
加密
诸如DM Crypt之类的设备映射器(DM)机制与VDO兼容。加密VDO卷有助于确保数据安全性,并且VDO之上的任何文件系统仍将进行重复数据删除。
重要
在VDO之上应用加密层几乎不会导致重复数据删除。加密会使重复的块有所不同,然后VDO才能对它们进行重复数据删除。
始终将加密层放在VDO之下。
1.3。VDO要求
VDO对它的位置和您的系统资源有某些要求。
1.3.1。VDO在存储堆栈中的放置
您应将某些存储层放置在VDO下,并将其他存储层放置在VDO之上。
VDO卷是精简配置的块设备。为防止物理空间用完,请将卷放在存储的顶部,以后可以扩展。此类可扩展存储的示例是LVM卷或MD RAID阵列。
您可以在VDO之上放置厚置备层,但是在这种情况下,您不能依赖厚置备的保证。由于VDO层是精简配置的,因此精简配置的效果适用于其上方的所有层。如果不监视VDO设备,则可能会耗尽VDO上方的密集配置卷上的物理空间。
红帽推荐以下配置:
仅在VDO下放置
- DM多路径
- DM地穴
- 软件RAID(LVM或MD RAID)
仅放置在VDO上方
- LVM缓存
- LVM快照
- LVM精简配置
不支持 以下配置:
- VDO卷之上的VDO:存储→VDO→LVM→VDO
- LVM快照之上的VDO
- LVM缓存上的VDO
- 环回设备顶部的VDO
- LVM精简配置之上的VDO
- VDO之上的加密卷:存储→VDO→DM-Crypt
- VDO卷上的分区
- VDO卷顶部的RAID(LVM RAID,MD RAID或任何其他类型)
额外资源
- 有关使用LVM堆栈VDO的更多信息,请参见“堆栈LVM卷”文章。
1.3.2。VDO内存要求
每个VDO卷都有两个不同的内存要求:
VDO模块
VDO需要370 MB的DRAM,此外,该卷管理的每1 TB物理存储还需要268 MB的内存。
通用重复数据删除服务(UDS)索引
UDS至少需要250 MB的DRAM,这也是重复数据删除使用的默认数量。
UDS索引所需的内存由索引类型和重复数据删除窗口的所需大小确定:
索引类型 |
重复数据删除窗口 |
注意 |
稠密 |
每1 GB RAM 1 TB |
1 GB的密集索引通常足以支持4 TB的物理存储。 |
疏 |
每1 GB RAM 10 TB |
1 GB的稀疏索引通常足以存储多达40 TB的物理存储。 |
对于VDO,建议使用UDS稀疏索引功能。它依赖于数据的时间局部性,并尝试仅将最相关的索引条目保留在内存中。使用稀疏索引,UDS可以在使用相同数量的内存的同时,保持重复数据删除窗口比使用密集型数据删除窗口大十倍。
尽管稀疏索引提供了最大的覆盖范围,但密集索引提供了更多的重复数据删除建议。对于大多数工作负载,给定相同的内存量,密集索引和稀疏索引之间的重复数据删除率差异可以忽略不计。
额外资源
- 有关UDS索引存储器要求的具体示例,请参见第1.3.4节“按物理卷大小的VDO要求示例”。
1.3.3。VDO存储空间要求
您可以将VDO卷配置为使用最多256 TB的物理存储。物理存储中只有一部分可用于存储数据。本节提供确定VDO管理卷的可用大小的计算。
VDO要求存储两种类型的VDO元数据和UDS索引:
- 第一种VDO元数据每4 GB 物理存储使用大约1 MB的空间,另外每个平板额外使用1 MB的空间。
- 第二种VDO元数据对于每1 GB 逻辑存储消耗约1.25 MB ,四舍五入到最接近的平板。
- UDS索引所需的存储量取决于索引的类型和分配给该索引的RAM的数量。对于每1 GB的RAM,密集的UDS索引将使用17 GB的存储,而稀疏的UDS索引将使用170 GB的存储。
额外资源
- 有关VDO存储要求的具体示例,请参见第1.3.4节“按物理卷大小的VDO要求示例”。
1.3.4。物理卷大小对VDO要求的示例
下表根据基础物理卷的大小提供了VDO的近似系统要求。每个表列出了适合于预期部署的要求,例如主存储或备份存储。
确切的数字取决于您对VDO卷的配置。
主存储部署
在主存储情况下,UDS索引介于物理卷大小的0.01%到25%之间。
表1.1。主存储的存储和内存要求
物理体积大小 |
RAM使用 |
磁盘使用情况 |
索引类型 |
10GB–1TB |
250MB |
2.5 GB |
稠密 |
2–10TB |
1GB |
10GB |
稠密 |
250MB |
22GB |
疏 |
|
11–50TB |
2GB |
170GB |
疏 |
51–100TB |
3GB |
255GB |
疏 |
101–256TB |
12GB |
1020GB |
疏 |
备份存储部署
在备份存储的情况下,UDS索引覆盖了备份集的大小,但不大于物理卷。如果您希望备份集或物理大小将来会增加,请将其作为索引大小。
表1.2。备份存储的存储和内存要求
物理体积大小 |
RAM使用 |
磁盘使用情况 |
索引类型 |
10GB–1TB |
250MB |
2.5 GB |
稠密 |
2–10TB |
2GB |
170GB |
疏 |
11–50TB |
10GB |
850GB |
疏 |
51–100TB |
20GB |
1700GB |
疏 |
101–256TB |
26GB |
3400GB |
疏 |
1.4。安装VDO
此过程将安装创建,安装和管理VDO卷所必需的软件。
程序
- 安装vdo和kmod-kvdo软件包:
#yum install vdo kmod-kvdo
1.5。创建一个VDO卷
此过程在块设备上创建VDO卷。
先决条件
- 安装VDO软件。请参见第1.4节“安装VDO”。
- 使用可扩展存储作为支持块设备。有关更多信息,请参见第1.3.1节“ VDO在存储堆栈中的放置”。
程序
在以下所有步骤中,将vdo-name替换为要用于VDO卷的标识符;例如,vdo1。您必须为系统上的每个VDO实例使用不同的名称和设备。
- 在要创建VDO卷的块设备中找到一个永久名称。有关持久名称的更多信息,请参见第4章,持久命名属性概述。
如果使用非永久性设备名称,则如果设备名称发生更改,则VDO将来可能无法正常启动。
- 创建VDO卷:
- #vdo创建\
- --name = vdo-name \
- --device = 块设备 \
--vdoLogicalSize = 逻辑大小
-
- 将块设备替换为要在其中创建VDO卷的块设备的永久名称。例如,/dev/disk/by-id/scsi-3600508b1001c264ad2af21e903ad031f。
-
用VDO卷应提供的逻辑存储量替换逻辑大小:
- 对于主动VM或容器存放,使用逻辑大小是10的块设备的物理尺寸倍。例如,如果您的块设备大小为1TB,请在10T此处使用。
- 对于对象存储,使用逻辑大小是3的块设备的物理尺寸倍。例如,如果您的块设备大小为1TB,请在3T此处使用。
- 如果物理块设备大于16TiB,则添加--vdoSlabSize=32G选项以将卷上的平板尺寸增加到32GiB。
在大于16TiB的块设备上使用默认平板大小2GiB会导致vdo create命令失败,并显示以下错误:
vdo:错误-vdoformat:formatVDO在'/ dev / device ' 上失败:VDO状态:超出了支持的最大平板数
范例1.1 创建用于容器存储的VDO
例如,要为1TB块设备上的容器存储创建VDO卷,可以使用:
#vdo创建\
--name = vdo1 \
--device = / dev / disk / by-id / scsi-3600508b1001c264ad2af21e903ad031f \
--vdoLogicalSize = 10T
重要
如果在创建VDO卷时发生故障,请删除该卷以进行清理。有关详细信息,请参见第2.11.2节“删除未成功创建的VDO卷”。
-
在VDO卷上创建一个文件系统:
- 对于XFS文件系统:
#mkfs.xfs -K / dev / mapper / vdo-name
-
- 对于ext4文件系统:
#mkfs.ext4 -E nodiscard / dev / mapper / vdo-name
- 使用以下命令等待系统注册新设备节点:
#udevadm解决
下一步
- 挂载文件系统。有关详细信息,请参见第1.6节“安装VDO音量”。
- discard在VDO设备上为文件系统 启用该功能。有关详细信息,请参见第1.7节“启用周期性块丢弃”。
额外资源
- 该vdo(8)手册页
1.6。挂载VDO卷
此过程可以手动或持久地在VDO卷上安装文件系统。
先决条件
- VDO卷已在您的系统上创建。有关说明,请参见第1.5节“创建VDO卷”。
程序
- 要在VDO卷上手动挂载文件系统,请使用:
#mount / dev / mapper / vdo-name 挂载点
-
要将文件系统配置为在引导时自动挂载,请在/etc/fstab文件中添加一行:
- 对于XFS文件系统:
/ dev / mapper / vdo-name 挂载点 xfs默认值,_netdev,x-systemd.device-timeout = 0,x-systemd.requires = vdo.service 0 0
-
- 对于ext4文件系统:
/ dev / mapper / vdo-name 挂载点 ext4默认值,_netdev,x-systemd.device-timeout = 0,x-systemd.requires = vdo.service 0 0
1.7。启用定期块丢弃
此过程使systemd计时器能够定期丢弃所有受支持的文件系统上未使用的块。
程序
- 启用并启动systemd计时器:
#systemctl enable --now fstrim.timer
1.8。监控VDO
此过程描述了如何从VDO卷获取使用情况和效率信息。
先决条件
- 安装VDO软件。请参见第1.4节“安装VDO”。
程序
- 使用该vdostats实用工具获取有关VDO卷的信息:
- #vdostats-人类可读
- 设备1K块已使用可用使用%节省空间%
- / dev / mapper / node1osd1 926.5G 21.0G 905.5G 2%73%
/ dev / mapper / node1osd2 926.5G 28.2G 898.3G 3%64%
额外资源
- 该vdostats(8)手册页。