RHEL 8 VDO重复数据删除和压缩存储-第2章维护VDO

2章维护VDO

部署VDO卷后,您可以执行某些任务来维护或优化它。VDO卷的正确运行需要执行以下某些任务。

2.1。先决条件

  • VDO已安装并部署。请参见第1章,部署VDO

2.2。管理VDO卷上的可用空间

VDO是精简配置的块存储目标。因此,您必须主动监视和管理VDO卷上的空间使用情况。

2.2.1。VDO中的精简配置

VDO是精简配置的块存储目标。VDO卷使用的物理空间量可能与提供给存储用户的卷大小不同。

您可以利用这种差异来节省存储成本。如果写入的数据未达到预期的优化速度,请小心避免意外耗尽存储空间。

只要逻辑块(虚拟存储)的数量超过物理块(实际存储)的数量,文件系统和应用程序就有可能意外用完空间。因此,使用VDO的存储系统必须为您提供一种监视VDO卷上空闲池大小的方法。

您可以使用该vdostats实用程序确定此空闲池的大小。该实用程序的默认输出以类似于Linux df实用程序的格式列出所有正在运行的VDO卷的信息。例如:

设备1K块已使用可用使用%

/ dev / mapper / my-vdo 211812352 105906176 105906176 50%

当VDO卷的物理存储容量几乎已满时,VDO在系统日志中报告警告,类似于以下内容:

10月2日17:13:39系统lvm [13863]:监视VDO池my-vdo。

10月2日17:27:39系统lvm [13863]:警告:VDO池my-vdo现在已满80.69%。

10月2日17:28:19系统lvm [13863]:警告:VDO池my-vdo现在已满85.25%。

10月2日17:29:39系统lvm [13863]:警告:VDO池my-vdo现在已满90.64%。

10月2日17:30:29系统lvm [13863]:警告:VDO池my-vdo现在已满96.07%。

注意

这些警告消息仅在lvm2-monitor服务运行时出现。默认情况下启用。

如果空闲池的大小降到一定水平以下,则可以通过以下方式采取措施:

  • 删除数据。只要不复制已删除的数据,就可以回收空间。删除数据仅在发出丢弃后才释放空间。
  • 添加物理存储
  • 在VDO上删除LUN

重要

监视VDO卷上的物理空间,以防止空间不足的情况。物理块用完可能会导致丢失VDO卷上最近写入的,未经确认的数据。

2.2.2。监控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)手册页。

2.2.3。回收文件系统上VDO的空间

此过程将回收托管文件系统的VDO卷上的存储空间。

除非文件系统进行通信,阻止使用是免费VDO不能回收空间DISCARD,TRIM或UNMAP命令。

程序

  • 如果VDO卷上的文件系统支持丢弃操作,请启用它们。请参见第3章,丢弃未使用的块
  • 对于不使用DISCARD,TRIM或的文件系统UNMAP,您可以手动回收可用空间。存储包含二进制零的文件,然后删除该文件。

2.2.4。在没有文件系统的情况下为VDO回收空间

此过程回收了VDO卷上的存储空间,该VDO卷用作没有文件系统的块存储目标。

程序

  • 使用该blkdiscard实用程序。

例如,可以通过在单个VDO卷的顶部部署LVM将其划分为多个子卷。在取消预配置逻辑卷之前,请使用blkdiscard实用程序释放该逻辑卷先前使用的空间。

LVM支持该REQ_DISCARD命令,并在适当的逻辑块地址处将请求转发到VDO,以释放空间。如果使用其他卷管理器,则它们还需要支持SCSI设备或ATA设备REQ_DISCARD(或同等支持)。 UNMAPTRIM

额外资源

  • 该blkdiscard(8)手册页

2.2.5。回收光纤通道或以太网网络上VDO的空间

此过程将回收VDO卷(或卷的一部分)上的存储空间,这些VDO卷使用SIO目标框架(如LIO或SCST)被提供给光纤通道存储结构或以太网上的主机。

程序

  • SCSI启动器可以使用该UNMAP命令释放精简配置的存储目标上的空间,但是需要将SCSI目标框架配置为公布对该命令的支持。通常,通过在这些卷上启用精简配置来完成此操作。

UNMAP通过运行以下命令, 验证对基于Linux的SCSI启动器的支持:

#sg_vpd --page = 0xb0 / dev / 设备

在输出中,验证最大未映射LBA数值大于零。

2.3。启动或停止VDO

您可以启动或停止给定的VDO卷或所有VDO卷及其关联的UDS索引。

2.3.1。启动和激活的VDO卷

在系统启动时,vdo systemd单元自动启动为被配置的所有设备VDO 激活

vdo systemd安装vdo软件包时,默认情况下已安装并启用 该设备。本机vdo start --all在系统启动时自动运行命令以调出所有激活的VDO卷。

您还可以通过将--activate=disabled选项添加到vdo create命令来创建不会自动启动的VDO卷。

起始顺序

某些系统可能会将LVM卷置于VDO卷之上和之下。在这些系统上,必须以正确的顺序启动服务:

  1. LVM的下层必须首先启动。在大多数系统中,安装LVM软件包后会自动配置启动此层。
  2. vdo systemd然后 该单元必须启动。
  3. 最后,必须运行其他脚本才能在正在运行的VDO卷之上启动LVM卷或其他服务。

停止音量需要多长时间

停止VDO卷需要花费时间,具体取决于存储设备的速度和该卷需要写入的数据量:

  • 对于UDS索引的每1GiB,该卷始终写入1GiB左右。
  • 对于稀疏的UDS索引,该卷还写入等于块映射缓存大小加上每个slab最多8MiB的数据量。

2.3.2。启动VDO卷

此过程将启动给定的VDO卷或系统上的所有VDO卷。

程序

  • 要启动给定的VDO卷,请使用:

#vdo start --name = my-vdo

  • 要启动所有VDO卷,请使用:

#vdo start --all

额外资源

  • 该vdo(8)手册页

2.3.3。停止VDO卷

此过程将停止系统上给定的VDO卷或所有VDO卷。

程序

  1. 停止音量。
    • 要停止给定的VDO音量,请使用:

#vdo stop --name = 我的vdo

    • 要停止所有VDO卷,请使用:

#vdo stop-全部

  1. 等待该卷完成将数据写入磁盘。

额外资源

  • 该vdo(8)手册页

2.3.4。相关信息

  • 如果在异常关闭后重新启动,VDO将执行重建以验证其元数据的一致性并在必要时对其进行修复。有关重建过程的更多信息,请参见第2.6节“在异常关闭后恢复VDO卷”

2.4。系统启动时自动启动VDO

您可以配置VDO卷,以便它们在系统启动时自动启动。您也可以禁用自动启动。

2.4.1。启动和激活的VDO卷

在系统启动时,vdo systemd单元自动启动为被配置的所有设备VDO 激活

vdo systemd安装vdo软件包时,默认情况下已安装并启用 该设备。本机vdo start --all在系统启动时自动运行命令以调出所有激活的VDO卷。

您还可以通过将--activate=disabled选项添加到vdo create命令来创建不会自动启动的VDO卷。

起始顺序

某些系统可能会将LVM卷置于VDO卷之上和之下。在这些系统上,必须以正确的顺序启动服务:

  1. LVM的下层必须首先启动。在大多数系统中,安装LVM软件包后会自动配置启动此层。
  2. vdo systemd然后 该单元必须启动。
  3. 最后,必须运行其他脚本才能在正在运行的VDO卷之上启动LVM卷或其他服务。

停止音量需要多长时间

停止VDO卷需要花费时间,具体取决于存储设备的速度和该卷需要写入的数据量:

  • 对于UDS索引的每1GiB,该卷始终写入1GiB左右。
  • 对于稀疏的UDS索引,该卷还写入等于块映射缓存大小加上每个slab最多8MiB的数据量。

2.4.2。激活VDO卷

此过程将激活VDO卷以使其能够自动启动。

程序

  • 要激活特定音量:

#vdo activate --name = my-vdo

  • 要激活所有卷:

#vdo激活--all

额外资源

  • 该vdo(8)手册页

2.4.3。停用VDO音量

此过程将禁用VDO卷以防止其自动启动。

程序

  • 要停用特定音量:

#vdo停用--name = my-vdo

  • 要停用所有卷:

#vdo停用--all

额外资源

  • 该vdo(8)手册页

2.5。选择VDO写入模式

您可以根据基础块设备的要求为VDO卷配置写模式。默认情况下,VDO自动选择写入模式。

2.5.1。VDO写入模式

VDO支持以下写入模式:

sync

当VDO处于sync模式时,其上方的各层均假定写入命令将数据写入持久性存储。结果,例如,文件系统或应用程序不必发出FLUSH或强制执行单元访问(FUA)请求以使数据在关键点变得持久。

sync仅当基础存储保证写入命令完成后将数据写入持久性存储时,才 必须将VDO设置为mode。也就是说,该存储设备必须没有易失性写高速缓存,或者必须具有直写高速缓存。

async

当VDO处于async模式下时,VDO不保证在确认写入命令后将数据写入持久性存储。文件系统或应用程序必须发出FLUSH或FUA请求,以确保每个事务中关键点的数据持久性。

async如果在写命令完成后基础存储不能保证将数据写入持久性存储,则 必须将VDO设置为mode;否则,必须将VDO设置为mode。也就是说,当存储具有易失性回写缓存时。

警告

当VDO在async模式下运行时,它不符合原子性,一致性,隔离性,耐久性(ACID)。当某个应用程序或文件系统在VDO卷之上假定ACID符合性时,async模式可能会导致意外的数据丢失。

auto

该auto模式自动选择sync或async基于每个设备的特性。这是默认选项。

2.5.2。VDO写入模式的内部处理

本节详细介绍sync和和asyncVDO写入模式的工作方式。

如果kvdo模块以同步模式运行:

  1. 它将请求中的数据临时写入分配的块,然后确认该请求。
  2. 确认完成后,将尝试通过计算块数据的MurmurHash-3签名对块进行重复数据删除,然后将其发送到VDO索引。
  3. 如果VDO索引包含具有相同签名的块的条目,则kvdo读取指示的块并对两个块进行逐字节比较,以验证它们是否相同。
  4. 如果它们确实相同,则kvdo更新其块映射,以使逻辑块指向相应的物理块并释放分配的物理块。
  5. 如果VDO索引不包含正在写入的块的签名的条目,或者指示的块实际上不包含相同的数据,请kvdo更新其块映射以使临时物理块永久化。

如果kvdo以异步模式运行:

  1. 它会立即确认该请求,而不是写入数据。
  2. 然后,它将尝试以与上述相同的方式对数据块进行重复数据删除。
  3. 如果该块证明是重复kvdo块,则更新其块映射并释放分配的块。否则,它将请求中的数据写入分配的块,并更新块映射以使物理块永久化。

2.5.3。检查VDO卷上的写入模式

此过程列出了所选VDO卷上的活动写入模式。

程序

  • 使用以下命令查看VDO卷使用的写入模式:

#vdo status --name = my-vdo

输出清单:

    • 配置的写策略,其是从所选择的选项sync,async或auto
    • 写入策略,这是VDO施加的特定写入模式,即要么sync或async

2.5.4。检查易失性缓存

此过程确定块设备是否具有易失性缓存。您可以使用该信息在sync和asyncVDO写入模式之间进行选择。

程序

  1. 使用以下两种方法之一确定设备是否具有回写缓存:
    • 读取文件。例如: /sys/block/block-device/device/scsi_disk/identifier/cache_type sysfs
    • $ cat'/ sys / block / sda / device / scsi_disk / 7:0:0:0 / cache_type'
    •  

写回

$ cat'/ sys / block / sdb / device / scsi_disk / 1:2:0:0 / cache_type'

 

没有

    • 或者,您可以在内核启动日志中找到上述设备是否具有写缓存:
    • sd 7:0:0:0:[sda]写入缓存:已启用,读取缓存:已启用,不支持DPO或FUA

sd 1:2:0:0:[sdb]写入缓存:已禁用,读取缓存:已禁用,支持DPO和FUA

  1. 在前面的示例中:
    • 设备sda指示它具有写回缓存。使用async模式。
    • 设备sdb指示它没有写回缓存。使用sync模式。

sync如果cache_type值为None或, 则应将VDO配置为使用写入模式write through。

2.5.5。设置VDO写入模式

此过程可为现有VDO卷或创建新卷时为VDO卷设置写模式。

重要

使用错误的写入模式可能会导致断电,系统崩溃或与磁盘失去任何意外联系后丢失数据。

先决条件

  • 确定哪种写入模式适合您的设备。请参见第2.5.4节“检查易失性缓存”

程序

  • 您可以在现有VDO卷上或在创建新卷时设置写模式:
    • 要修改现有的VDO卷,请使用:
    • #vdo changeWritePolicy --writePolicy = sync | async | auto \

                        --name = vdo名称

    • 要在创建VDO卷时指定写模式,请将该选项添加到命令中。 --writePolicy=sync|async|autovdo create

2.6。不正常关机后恢复VDO

您可以在不正常关机后恢复VDO卷,以使其继续运行。该任务大部分是自动化的。此外,由于该过程失败而未能成功创建VDO卷后,您可以进行清理。

2.6.1。VDO写入模式

VDO支持以下写入模式:

sync

当VDO处于sync模式时,其上方的各层均假定写入命令将数据写入持久性存储。结果,例如,文件系统或应用程序不必发出FLUSH或强制执行单元访问(FUA)请求以使数据在关键点变得持久。

sync仅当基础存储保证写入命令完成后将数据写入持久性存储时,才 必须将VDO设置为mode。也就是说,该存储设备必须没有易失性写高速缓存,或者必须具有直写高速缓存。

async

当VDO处于async模式下时,VDO不保证在确认写入命令后将数据写入持久性存储。文件系统或应用程序必须发出FLUSH或FUA请求,以确保每个事务中关键点的数据持久性。

async如果在写命令完成后基础存储不能保证将数据写入持久性存储,则 必须将VDO设置为mode;否则,必须将VDO设置为mode。也就是说,当存储具有易失性回写缓存时。

警告

当VDO在async模式下运行时,它不符合原子性,一致性,隔离性,耐久性(ACID)。当某个应用程序或文件系统在VDO卷之上假定ACID符合性时,async模式可能会导致意外的数据丢失。

auto

该auto模式自动选择sync或async基于每个设备的特性。这是默认选项。

2.6.2。VDO卷恢复

当VDO卷在异常关闭后重新启动时,VDO将执行以下操作:

  • 验证卷上元数据的一致性。
  • 必要时重建一部分元数据以对其进行修复。

重建是自动的,不需要用户干预。

VDO可能会根据活动写入模式来重建不同的写入:

sync

如果VDO在同步存储上运行,并且将写入策略设置为sync,则将完全恢复写入该卷的所有数据。

async

如果写策略为async,则如果某些写操作不能持久,则可能无法恢复。这是通过向VDO发送FLUSH命令或带有FUA(强制单元访问)标记的写入I / O 来完成的。您可以从用户模式通过调用数据的完整性操作一样做到这一点fsync,fdatasync,sync,或umount。

在这两种模式下,一些未确认或未刷新的写入操作也可能会重建。

自动和手动恢复

当VDO卷进入recovering操作模式时,VDO重新联机后会自动重建不干净的VDO卷。这称为在线恢复

如果VDO无法成功恢复VDO卷,则会将卷置于read-only操作模式,该模式在卷重新启动后会持续存在。您需要通过强制重建来手动解决问题。

额外资源

  • 有关自动和手动恢复以及VDO操作模式的更多信息,请参见第2.6.3节“ VDO操作模式”

2.6.3。VDO工作模式

本节介绍了指示VDO卷是正常运行还是正在从错误中恢复的模式。

您可以使用以下命令显示VDO卷的当前操作模式。请参阅输出中的“ 操作模式属性。 vdostats --verbose device

normal

这是默认的操作模式。VDO卷始终处于normal模式,除非以下任一状态强制采用其他模式。新创建的VDO卷以normal模式启动。

recovering

当VDO卷在关闭之前未保存其所有元数据时,recovering下次启动时它将自动进入模式。进入此模式的典型原因是突然断电或底层存储设备出现问题。

在recovering模式下,VDO将固定设备上每个物理数据块的引用计数。恢复通常不会花费很长时间。时间取决于VDO的大小,底层存储设备的速度以及VDO同时处理的其他请求数量。VDO卷正常运行,但以下情况除外:

  • 最初,该卷上可用于写请求的空间可能会受到限制。随着更多元数据的恢复,更多的可用空间变得可用。
  • 如果VDO卷恢复时写入的数据位于尚未恢复的卷的一部分中,则该数据可能无法与崩溃前写入的数据进行重复数据删除。VDO可以在恢复卷的同时压缩数据。您仍然可以读取或覆盖压缩块。
  • 联机恢复期间,某些统计信息不可用:例如,正在使用的块可用的块。重建完成后,这些统计信息将变为可用。
  • 由于正在进行恢复工作,因此读写响应时间可能会比平时慢

您可以在recovering模式下安全关闭VDO音量。如果恢复在关闭前未完成,则设备recovering下次启动时将再次进入模式。

VDO卷已固定所有参考计数后recovering,将自动退出模式并进入normal模式。无需管理员操作。有关详细信息,请参见第2.6.4节“在线恢复VDO卷”

read-only

当VDO卷遇到致命的内部错误时,它将进入read-only模式。可能导致read-only模式的事件包括元数据损坏或后备存储设备变为只读。此模式是错误状态。

在read-only模式下,数据读取正常工作,但数据写入始终失败。VDO卷将保持read-only模式,直到管理员解决该问题。

您可以在read-only模式下安全关闭VDO卷。VDO卷重新启动后,该模式通常仍然存在。在极少数情况下,VDO卷无法将read-only状态记录到后备存储设备。在这些情况下,VDO会尝试进行恢复。

一旦卷处于只读模式,就不能保证该卷上的数据没有丢失或损坏。在这种情况下,Red Hat建议从只读卷中复制数据,并可能从备份中恢复该卷。

如果可以接受数据损坏的风险,则可以强制脱机重建VDO卷元数据,以便可以使该卷恢复联机并可用。无法保证重建数据的完整性。有关详细信息,请参见第2.6.5节“强制离线重建VDO卷元数据”

2.6.4。在线恢复VDO卷

此过程对VDO卷执行联机恢复,以在异常关闭后恢复元数据。

程序

  1. 如果尚未启动VDO卷,请启动它:

#vdo start --name = my-vdo

无需其他步骤。恢复在后台运行。

  1. 如果您依赖于使用中的块free块之类的数量统计信息,请等待它们可用。

2.6.5。强制离线重建VDO卷元数据

此过程对VDO卷元数据执行强制脱机重建,以在异常关闭后恢复。

警告

此过程可能会导致卷上的数据丢失。

先决条件

  • VDO卷已启动。

程序

  1. 检查该卷是否处于只读模式。请在命令输出中查看操作模式属性:

#vdo status --name = my-vdo

如果该卷不是处于只读模式,则不必强制进行脱机重建。按照第2.6.4节“在线恢复VDO卷”中所述执行在线恢复。

  1. 如果正在运行,请停止该卷:

#vdo stop --name = 我的vdo

  1. 使用以下--forceRebuild选项重新启动卷:

#vdo start --name = my- vdo --forceRebuild

2.6.6。删除创建失败的VDO卷

此过程将清除处于中间状态的VDO卷。如果在创建卷时发生故障,则该卷将处于中间状态。例如,在以下情况下可能会发生这种情况:

  • 系统崩溃
  • 停电
  • 管理员中断正在运行的vdo create命令

程序

  • 要清理,请使用以下--force选项删除未成功创建的卷:

#vdo remove --force --name = my-vdo

该--force选项是必需的,因为由于未成功创建卷,因此管理员可能通过更改系统配置而引起了冲突。

如果没有该--force选项,该vdo remove命令将失败并显示以下消息:

[...]

先前的操作失败。

从故障中恢复失败或被中断。

将“ --force”添加到“删除”以执行以下清理。

清理VDO my-vdo的步骤

umount -f / dev / mapper / my-vdo

udevadm解决

dmsetup删除my- vdo vdo

:错误-VDO 卷my-vdo先前的操作(创建)不完整

2.7。优化UDS索引

您可以配置UDS索引的某些设置以在系统上对其进行优化。

重要

创建VDO卷 ,将无法更改UDS索引的属性。

2.7.1。UDS索引

VDO使用称为UDS的高性能重复数据删除索引在存储重复的数据块时对其进行检测。

UDS索引提供了VDO产品的基础。对于每个新数据,它可以快速确定该数据是否与以前存储的任何数据相同。如果索引找到匹配项,则存储系统可以在内部引用现有项,以避免多次存储相同的信息。

UDS索引作为uds内核模块在内核内部运行。

重复数据删除窗口是索引记住先前写入的块的数目。重复数据删除窗口的大小是可配置的。对于给定的窗口大小,索引需要特定数量的RAM和特定数量的磁盘空间。通常通过使用该--indexMem=size选项指定索引存储器的大小来确定窗口的大小。然后,VDO确定自动使用的磁盘空间量。

UDS索引由两部分组成:

  • 内存中使用一种紧凑的表示形式,每个唯一块最多包含一个条目。
  • 磁盘上的组件,用于按顺序记录出现在索引中的关联块名称。

UDS在内存(包括缓存)中的每个条目平均使用4个字节。

磁盘上的组件维护传递到UDS的数据的有限历史记录。UDS为该重复数据删除窗口内的数据提供重复数据删除建议,其中包含最近看到的块的名称。重复数据删除窗口允许UDS尽可能高效地索引数据,同时限制了索引大型数据存储库所需的内存量。尽管重复数据删除窗口具有有限的性质,但大多数具有高度重复数据删除功能的数据集也显示出高度的时间局部性-换句话说,大多数重复数据删除发生在大约同时写入的块组之间。此外,一般而言,正在写入的数据比很久以前写入的数据更有可能复制最近写入的数据。因此,对于给定时间间隔内的给定工作负载,

由于重复数据倾向于表现出时间局部性,因此几乎不需要对存储系统中的每个块进行索引。如果不是这样,那么索引内存的成本将超过重复数据删除所节省的存储成本。索引大小要求与数据摄取速率更紧密相关。例如,考虑一个存储系统,其总容量为100 TB,但每周的摄取速率为1 TB。通过4 TB的重复数据删除窗口,UDS可以检测上个月写入的数据中的大多数冗余。

2.7.2。推荐的UDS索引配置

本节根据您的预期使用情况,介绍了建议与UDS索引一起使用的选项。

通常,红帽建议对所有生产用例使用稀疏的 UDS索引。这是一种极其高效的索引数据结构,在其重复数据删除窗口中每个块大约需要DRAM的十分之一字节。在磁盘上,每个块大约需要72字节的磁盘空间。该索引的最低配置使用256 MB的DRAM和大约25 GB的磁盘空间。

要使用此配置,请指定命令的--sparseIndex=enabled --indexMem=0.25选项vdo create。此配置导致2.5 TB的重复数据删除窗口(意味着它将记住2.5 TB的历史记录)。对于大多数使用情况,2.5 TB的重复数据删除窗口适用于对最大10 TB大小的存储池进行重复数据删除。

但是,索引的默认配置是使用密集索引。该索引在DRAM中的效率明显较低(约为10倍),但最低磁盘空间要求也较低(约为10倍),因此在受限环境中进行评估更方便。

通常,建议使用重复数据删除窗口,该窗口应为VDO卷物理大小的四分之一。但是,这不是实际要求。在许多用例中,即使是很小的重复数据删除窗口(与物理存储量相比)也可以找到大量重复数据。也可以使用更大的窗口,但是在大多数情况下,这样做几乎没有其他好处。

额外资源

  • 与您的Red Hat技术客户经理代表联系,以获取有关调整此重要系统参数的其他准则。

2.8。在VDO中启用或禁用重复数据删除

在某些情况下,您可能要暂时禁用正在写入VDO卷的数据的重复数据删除,同时仍保留对该卷进行读写的功能。禁用重复数据删除可以防止后续的写入重复数据删除,但是已经进行重复数据删除的数据仍然如此。

2.8.1。VDO中的重复数据删除

重复数据删除是一种通过消除重复块的多个副本来减少存储资源消耗的技术。

VDO不会重复写入同一数据,而是检测每个重复的块并将其记录为对原始块的引用。VDO维护从VDO之上的存储层使用的逻辑块地址到VDO之下的存储层使用的物理块地址的映射。

重复数据删除后,可以将多个逻辑块地址映射到同一物理块地址。这些称为共享块。块用户对于存储用户是不可见的,就像不使用VDO一样,他们可以读写块。

覆盖共享块时,VDO会分配一个新的物理块以存储新的块数据,以确保映射到共享物理块的其他逻辑块地址不会被修改。

2.8.2。在VDO卷上启用重复数据删除

此过程将重新启动关联的UDS索引,并通知VDO卷重复数据删除再次处于活动状态。

注意

默认情况下,重复数据删除处于启用状态。

程序

  • 要在VDO卷上重新启动重复数据删除,请使用以下命令:

#vdo enableDeduplication --name = my- vdo

2.8.3。在VDO卷上禁用重复数据删除

此过程将停止关联的UDS索引,并通知VDO卷重复数据删除不再活动。

程序

  • 要在VDO卷上停止重复数据删除,请使用以下命令:

#vdo disableDeduplication --name = my- vdo

  • 您还可以通过--deduplication=disabled在vdo create命令中添加选项来在创建新的VDO卷时禁用重复数据删除。

2.9。在VDO中启用或禁用压缩

VDO提供数据压缩。您可以禁用它以最大化性能或加速不太可能压缩的数据的处理,或重新启用它以节省空间。

2.9.1。VDO中的压缩

除了块级重复数据删除外,VDO还使用HIOPS Compression™技术提供了内联块级压缩。

默认情况下,VDO卷压缩处于启用状态。

尽管重复数据删除是虚拟机环境和备份应用程序的最佳解决方案,但是压缩对于通常不表现出块级冗余的结构化和非结构化文件格式(例如日志文件和数据库)的压缩效果很好。

压缩对尚未识别为重复的块进行操作。当VDO第一次看到唯一数据时,它将压缩数据。已存储的后续数据副本将进行重复数据删除,而无需其他压缩步骤。

压缩功能基于并行打包算法,使它能够一次处理许多压缩操作。在首先存储块并响应请求者之后,最佳拟合打包算法会找到多个块,这些块在压缩后可以放入单个物理块中。在确定特定的物理块不太可能容纳其他压缩块之后,将其写入存储,然后释放未压缩的块并重新使用。

通过在已经响应请求者之后执行压缩和打包操作,使用压缩会带来最小的延迟损失。

2.9.2。在VDO卷上启用压缩

此过程可对VDO卷进行压缩以增加空间节省。

注意

默认情况下启用压缩。

程序

  • 要重新启动它,请使用以下命令:

#vdo enableCompression --name = my-vdo

2.9.3。在VDO卷上禁用压缩

此过程将停止VDO卷上的压缩,以最大化性能或加快不太可能压缩的数据的处理。

程序

  • 要在现有VDO卷上停止压缩,请使用以下命令:

#vdo disableCompression --name = my-vdo

  • 或者,可以通过在创建新卷时--compression=disabled在vdo create命令中添加选项来禁用压缩。

2.10。增加VDO卷的大小

您可以增加VDO卷的物理大小以利用更多的基础存储容量,或者增加逻辑大小以在该卷上提供更多容量。

2.10.1。VDO中的精简配置

VDO是精简配置的块存储目标。VDO卷使用的物理空间量可能与提供给存储用户的卷大小不同。

您可以利用这种差异来节省存储成本。如果写入的数据未达到预期的优化速度,请小心避免意外耗尽存储空间。

只要逻辑块(虚拟存储)的数量超过物理块(实际存储)的数量,文件系统和应用程序就有可能意外用完空间。因此,使用VDO的存储系统必须为您提供一种监视VDO卷上空闲池大小的方法。

您可以使用该vdostats实用程序确定此空闲池的大小。该实用程序的默认输出以类似于Linux df实用程序的格式列出所有正在运行的VDO卷的信息。例如:

设备1K块已使用可用使用%

/ dev / mapper / my-vdo 211812352 105906176 105906176 50%

当VDO卷的物理存储容量几乎已满时,VDO在系统日志中报告警告,类似于以下内容:

10月2日17:13:39系统lvm [13863]:监视VDO池my-vdo。

10月2日17:27:39系统lvm [13863]:警告:VDO池my-vdo现在已满80.69%。

10月2日17:28:19系统lvm [13863]:警告:VDO池my-vdo现在已满85.25%。

10月2日17:29:39系统lvm [13863]:警告:VDO池my-vdo现在已满90.64%。

10月2日17:30:29系统lvm [13863]:警告:VDO池my-vdo现在已满96.07%。

注意

这些警告消息仅在lvm2-monitor服务运行时出现。默认情况下启用。

如果空闲池的大小降到一定水平以下,则可以通过以下方式采取措施:

  • 删除数据。只要不复制已删除的数据,就可以回收空间。删除数据仅在发出丢弃后才释放空间。
  • 添加物理存储
  • 在VDO上删除LUN

重要

监视VDO卷上的物理空间,以防止空间不足的情况。物理块用完可能会导致丢失VDO卷上最近写入的,未经确认的数据。

2.10.2。增加VDO卷的逻辑大小

此过程增加了给定VDO卷的逻辑大小。它使您能够初始创建逻辑大小足够小的VDO卷,以防空间不足。一段时间后,您可以评估实际的数据减少率,如果足够,还可以增大VDO卷的逻辑大小以利用节省的空间。

无法减小VDO卷的逻辑大小。

程序

  • 要增加逻辑大小,请使用:
  • #vdo growLogical --name = my- vdo \

                  --vdoLogicalSize = 新逻辑大小

当逻辑大小增加时,VDO会在新大小的卷上方通知所有设备或文件系统。

2.10.3。增加VDO卷的物理大小

此过程增加了VDO卷可用的物理存储量。

无法以这种方式缩小VDO体积。

先决条件

  • 基础块设备具有比VDO卷的当前物理大小更大的容量。

如果不是,则可以尝试增加设备的尺寸。确切的过程取决于设备的类型。例如,要调整MBR或GPT分区的大小,请参阅“ 管理存储设备指南中的“ 调整分区大小”部分。

程序

  • 将新的物理存储空间添加到VDO卷中:

#vdo growPhysical --name = 我的 vdo

2.11。删除VDO

您可以在系统上删除现有的VDO卷。

2.11.1。卸下有效的VDO卷

此过程将删除VDO卷及其关联的UDS索引。

程序

  1. 卸载文件系统,并停止使用VDO卷上的存储的应用程序。
  2. 要从系统中删除VDO卷,请使用:

#vdo remove --name = my-vdo

2.11.2。删除创建失败的VDO卷

此过程将清除处于中间状态的VDO卷。如果在创建卷时发生故障,则该卷将处于中间状态。例如,在以下情况下可能会发生这种情况:

  • 系统崩溃
  • 停电
  • 管理员中断正在运行的vdo create命令

程序

  • 要清理,请使用以下--force选项删除未成功创建的卷:

#vdo remove --force --name = my-vdo

该--force选项是必需的,因为由于未成功创建卷,因此管理员可能通过更改系统配置而引起了冲突。

如果没有该--force选项,该vdo remove命令将失败并显示以下消息:

[...]

先前的操作失败。

从故障中恢复失败或被中断。

将“ --force”添加到“删除”以执行以下清理。

清理VDO my-vdo的步骤

umount -f / dev / mapper / my-vdo

udevadm解决

dmsetup删除my- vdo vdo

:错误-VDO 卷my-vdo先前的操作(创建)不完整

2.12。相关信息

  • 您可以使用Ansible工具自动执行VDO部署和管理。有关详细信息,请参阅:
    • Ansible文档:https://docs.ansible.com/
    • VDO Ansible模块文档:https ://docs.ansible.com/ansible/latest/modules/vdo_module.html

你可能感兴趣的:(RHEL 8 VDO重复数据删除和压缩存储-第2章维护VDO)