第2章维护VDO
部署VDO卷后,您可以执行某些任务来维护或优化它。VDO卷的正确运行需要执行以下某些任务。
2.1。先决条件
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卷上的物理空间,以防止空间不足的情况。物理块用完可能会导致丢失VDO卷上最近写入的,未经确认的数据。
2.2.2。监控VDO
此过程描述了如何从VDO卷获取使用情况和效率信息。
先决条件
程序
/ dev / mapper / node1osd2 926.5G 28.2G 898.3G 3%64%
额外资源
2.2.3。回收文件系统上VDO的空间
此过程将回收托管文件系统的VDO卷上的存储空间。
除非文件系统进行通信,阻止使用是免费VDO不能回收空间DISCARD,TRIM或UNMAP命令。
程序
2.2.4。在没有文件系统的情况下为VDO回收空间
此过程回收了VDO卷上的存储空间,该VDO卷用作没有文件系统的块存储目标。
程序
例如,可以通过在单个VDO卷的顶部部署LVM将其划分为多个子卷。在取消预配置逻辑卷之前,请使用blkdiscard实用程序释放该逻辑卷先前使用的空间。
LVM支持该REQ_DISCARD命令,并在适当的逻辑块地址处将请求转发到VDO,以释放空间。如果使用其他卷管理器,则它们还需要支持SCSI设备或ATA设备REQ_DISCARD(或同等支持)。 UNMAPTRIM
额外资源
2.2.5。回收光纤通道或以太网网络上VDO的空间
此过程将回收VDO卷(或卷的一部分)上的存储空间,这些VDO卷使用SIO目标框架(如LIO或SCST)被提供给光纤通道存储结构或以太网上的主机。
程序
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卷之上和之下。在这些系统上,必须以正确的顺序启动服务:
停止音量需要多长时间
停止VDO卷需要花费时间,具体取决于存储设备的速度和该卷需要写入的数据量:
2.3.2。启动VDO卷
此过程将启动给定的VDO卷或系统上的所有VDO卷。
程序
#vdo start --name = my-vdo
#vdo start --all
额外资源
2.3.3。停止VDO卷
此过程将停止系统上给定的VDO卷或所有VDO卷。
程序
#vdo stop --name = 我的vdo
#vdo stop-全部
额外资源
2.3.4。相关信息
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卷之上和之下。在这些系统上,必须以正确的顺序启动服务:
停止音量需要多长时间
停止VDO卷需要花费时间,具体取决于存储设备的速度和该卷需要写入的数据量:
2.4.2。激活VDO卷
此过程将激活VDO卷以使其能够自动启动。
程序
#vdo activate --name = my-vdo
#vdo激活--all
额外资源
2.4.3。停用VDO音量
此过程将禁用VDO卷以防止其自动启动。
程序
#vdo停用--name = my-vdo
#vdo停用--all
额外资源
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模块以同步模式运行:
如果kvdo以异步模式运行:
2.5.3。检查VDO卷上的写入模式
此过程列出了所选VDO卷上的活动写入模式。
程序
#vdo status --name = my-vdo
输出清单:
2.5.4。检查易失性缓存
此过程确定块设备是否具有易失性缓存。您可以使用该信息在sync和asyncVDO写入模式之间进行选择。
程序
写回
$ cat'/ sys / block / sdb / device / scsi_disk / 1:2:0:0 / cache_type'
没有
sd 1:2:0:0:[sdb]写入缓存:已禁用,读取缓存:已禁用,支持DPO和FUA
sync如果cache_type值为None或, 则应将VDO配置为使用写入模式write through。
2.5.5。设置VDO写入模式
此过程可为现有VDO卷或创建新卷时为VDO卷设置写模式。
重要
使用错误的写入模式可能会导致断电,系统崩溃或与磁盘失去任何意外联系后丢失数据。
先决条件
程序
--name = vdo名称
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操作模式,该模式在卷重新启动后会持续存在。您需要通过强制重建来手动解决问题。
额外资源
2.6.3。VDO工作模式
本节介绍了指示VDO卷是正常运行还是正在从错误中恢复的模式。
您可以使用以下命令显示VDO卷的当前操作模式。请参阅输出中的“ 操作模式”属性。 vdostats --verbose device
normal
这是默认的操作模式。VDO卷始终处于normal模式,除非以下任一状态强制采用其他模式。新创建的VDO卷以normal模式启动。
recovering
当VDO卷在关闭之前未保存其所有元数据时,recovering下次启动时它将自动进入模式。进入此模式的典型原因是突然断电或底层存储设备出现问题。
在recovering模式下,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卷执行联机恢复,以在异常关闭后恢复元数据。
程序
#vdo start --name = my-vdo
无需其他步骤。恢复在后台运行。
2.6.5。强制离线重建VDO卷元数据
此过程对VDO卷元数据执行强制脱机重建,以在异常关闭后恢复。
警告
此过程可能会导致卷上的数据丢失。
先决条件
程序
#vdo status --name = my-vdo
如果该卷不是处于只读模式,则不必强制进行脱机重建。按照第2.6.4节“在线恢复VDO卷”中所述执行在线恢复。
#vdo stop --name = 我的vdo
#vdo start --name = my- vdo --forceRebuild
2.6.6。删除创建失败的VDO卷
此过程将清除处于中间状态的VDO卷。如果在创建卷时发生故障,则该卷将处于中间状态。例如,在以下情况下可能会发生这种情况:
程序
#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卷物理大小的四分之一。但是,这不是实际要求。在许多用例中,即使是很小的重复数据删除窗口(与物理存储量相比)也可以找到大量重复数据。也可以使用更大的窗口,但是在大多数情况下,这样做几乎没有其他好处。
额外资源
2.8。在VDO中启用或禁用重复数据删除
在某些情况下,您可能要暂时禁用正在写入VDO卷的数据的重复数据删除,同时仍保留对该卷进行读写的功能。禁用重复数据删除可以防止后续的写入重复数据删除,但是已经进行重复数据删除的数据仍然如此。
2.8.1。VDO中的重复数据删除
重复数据删除是一种通过消除重复块的多个副本来减少存储资源消耗的技术。
VDO不会重复写入同一数据,而是检测每个重复的块并将其记录为对原始块的引用。VDO维护从VDO之上的存储层使用的逻辑块地址到VDO之下的存储层使用的物理块地址的映射。
重复数据删除后,可以将多个逻辑块地址映射到同一物理块地址。这些称为共享块。块用户对于存储用户是不可见的,就像不使用VDO一样,他们可以读写块。
覆盖共享块时,VDO会分配一个新的物理块以存储新的块数据,以确保映射到共享物理块的其他逻辑块地址不会被修改。
2.8.2。在VDO卷上启用重复数据删除
此过程将重新启动关联的UDS索引,并通知VDO卷重复数据删除再次处于活动状态。
注意
默认情况下,重复数据删除处于启用状态。
程序
#vdo enableDeduplication --name = my- vdo
2.8.3。在VDO卷上禁用重复数据删除
此过程将停止关联的UDS索引,并通知VDO卷重复数据删除不再活动。
程序
#vdo disableDeduplication --name = my- 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 disableCompression --name = my-vdo
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卷上的物理空间,以防止空间不足的情况。物理块用完可能会导致丢失VDO卷上最近写入的,未经确认的数据。
2.10.2。增加VDO卷的逻辑大小
此过程增加了给定VDO卷的逻辑大小。它使您能够初始创建逻辑大小足够小的VDO卷,以防空间不足。一段时间后,您可以评估实际的数据减少率,如果足够,还可以增大VDO卷的逻辑大小以利用节省的空间。
无法减小VDO卷的逻辑大小。
程序
--vdoLogicalSize = 新逻辑大小
当逻辑大小增加时,VDO会在新大小的卷上方通知所有设备或文件系统。
2.10.3。增加VDO卷的物理大小
此过程增加了VDO卷可用的物理存储量。
无法以这种方式缩小VDO体积。
先决条件
如果不是,则可以尝试增加设备的尺寸。确切的过程取决于设备的类型。例如,要调整MBR或GPT分区的大小,请参阅“ 管理存储设备”指南中的“ 调整分区大小”部分。
程序
#vdo growPhysical --name = 我的 vdo
2.11。删除VDO卷
您可以在系统上删除现有的VDO卷。
2.11.1。卸下有效的VDO卷
此过程将删除VDO卷及其关联的UDS索引。
程序
#vdo remove --name = my-vdo
2.11.2。删除创建失败的VDO卷
此过程将清除处于中间状态的VDO卷。如果在创建卷时发生故障,则该卷将处于中间状态。例如,在以下情况下可能会发生这种情况:
程序
#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。相关信息