30.7. VDO 命令
本节描述了以下 VDO 工具:
30.7.1. vdo
vdo 实用程序管理 VDO 的
kvdo
和 UDS 组件。
概要
vdo { activate | changeWritePolicy | create | deactivate | disableCompression | disableDeduplication | enableCompression | enableDeduplication | growLogical | growPhysical | list | modify | printConfigFile | remove | start | status | stop }
[ options... ]
sub-Commands
sub-Command | 描述 |
---|---|
create
|
创建 VDO 卷及其关联的索引,并使其可用。如果指定了
osgiactivate=disabled ,则创建 VDO 卷但不可用。除非给出 zFCP force ,否则不会覆盖现有的文件系统或格式化的 VDO 卷。此命令必须使用 root 特权运行。适用的选项包括:
|
remove
|
删除一个或多个已停止的 VDO 卷和相关索引。此命令必须使用 root 特权运行。适用的选项包括:
|
开始
|
启动一个或多个已停止的、激活的 VDO 卷和相关服务。此命令必须使用 root 特权运行。适用的选项包括:
|
stop
|
停止一个或多个正在运行的 VDO 卷和相关服务。此命令必须使用 root 特权运行。适用的选项包括:
|
激活
|
激活一个或多个 VDO 卷。可使用
开始
|
deactivate
|
取消激活一个或多个 VDO 卷。取消激活的卷无法通过
开始
|
status
|
以 YAML 格式报告 VDO 系统和卷状态。如果没有运行,这个命令不需要 root 特权,但信息将不完整。适用的选项包括:
|
list
|
显示启动的 VDO 卷列表。
如果指定了 osgiall ,它将显示启动和非启动的卷。此命令必须使用 root 特权运行。适用的选项包括:
|
修改
|
修改一个或多个 VDO 卷的配置参数。更改在下次启动 VDO 设备时生效;已在运行的设备不受影响。适用的选项包括:
|
changeWritePolicy
|
修改一个或多个正在运行的 VDO 卷的写入策略。此命令必须使用 root 特权运行。
|
enableDeduplication
|
在一个或多个 VDO 卷中启用 deduplication。此命令必须使用 root 特权运行。适用的选项包括:
|
disableDeduplication
|
在一个或多个 VDO 卷中禁用 deduplication。此命令必须使用 root 特权运行。适用的选项包括:
|
启用压缩
|
在一个或多个 VDO 卷中启用压缩。如果 VDO 卷正在运行,请立即生效。如果 VDO 卷没有运行压缩,则在下次启动 VDO 卷时将启用。此命令必须使用 root 特权运行。适用的选项包括:
|
禁用压缩
|
禁用一个或多个 VDO 卷的压缩。如果 VDO 卷正在运行,请立即生效。如果 VDO 卷没有运行压缩,则在下次启动 VDO 卷时将禁用。此命令必须使用 root 特权运行。适用的选项包括:
|
growLogical
|
在 VDO 卷中添加逻辑卷。卷必须存在,必须正在运行。此命令必须使用 root 特权运行。适用的选项包括:
|
growPhysical
|
在 VDO 卷中添加物理空间。卷必须存在,必须正在运行。此命令必须使用 root 特权运行。适用的选项包括:
|
printConfigFile
|
将配置文件输出到
stdout 。此命令需要 root 特权。适用的选项包括:
|
选项
选项 | 描述 |
---|---|
--indexMem=gigabytes
| 以 GB 为单位指定 UDS 服务器内存量 ; 默认大小为 1 GB。可以使用特殊的十进制值 0.25、0.5、0.75,就像任意正整数一样。 |
--sparseIndex={enabled | disabled}
| 启用或禁用稀疏索引。默认值为 。 |
--all
| 表示命令应应用到所有配置的 VDO 卷。不得与 --name 一起使用。 |
--blockMapCacheSize=megabytes
| 指定为缓存块映射页面分配的内存大小;该值必须是 4096 的倍数。使用带有 B (ytes), K (ilobytes), M (egabytes), G (igabytes), T (erabytes), P (etabytes)或 E (xabytes)后缀的值是可选的。如果没有提供后缀,则该值将解释为 MB。默认值为 128M;该值必须至少为 128M,且小于 16T。请注意,内存开销为 15%。 |
--blockMapPeriod=period
| 1 到 16380 之间的值,它决定了在缓存页面刷新到磁盘前可能会累积的块映射更新数量。数值越高,在正常操作期间,崩溃会降低性能降低后的恢复时间。默认值为 16380。在调整这个参数前,请联系您的红帽代表。 |
--compression={enabled | disabled}
| 启用或禁用 VDO 设备中的压缩。默认启用默认值。如果需要,可以禁用压缩,以加快对性能的处理速度,不太可能压缩。 |
--confFile=file
| 指定备用配置文件。默认值为 /etc/vdoconf.yml 。 |
--deduplication={enabled | disabled}
| 在 VDO 设备中启用或禁用 deduplication。默认是启用的 。在数据没有很好的重复数据删除率但仍然需要压缩的情况下,可能会禁用 deduplication。 |
--emulate512={enabled | disabled}
| 启用 512 字节块设备模拟模式。默认值为 。 |
--force
| 在停止 VDO 卷前卸载挂载的文件系统。 |
--forceRebuild
| 在启动只读 VDO 卷前强制离线重建,以便它可以重新上线并可用。这个选项可能会导致数据丢失或损坏。 |
--help
| 显示 vdo 实用程序的文档。 |
--logfile=pathname
| 指定此脚本的日志消息定向到的文件。警告和错误消息也始终记录到 syslog。 |
--name=volume
| 在指定的 VDO 卷中操作。不得与 --all 一起使用。 |
--device=device
| 指定用于 VDO 存储的设备的绝对路径。 |
--activate={enabled | disabled}
| 禁用 的参数表示仅应创建 VDO 卷。卷不会被启动或启用。默认是启用的 。 |
--vdoAckThreads=thread count
| 指定用于确认请求的 VDO I/O 操作的完成线程数量。默认值为 1;该值必须至少为 0,且小于或等于 100。 |
--vdoBioRotationInterval=I/O count
| 在将工作定向到下一个操作前,指定每个 bio-submission 线程要排队的 I/O 操作数量。默认值为 64;该值必须至少为 1,且小于或等于 1024。 |
--vdoBioThreads=thread count
| 指定用于向存储设备提交 I/O 操作的线程数量。最小为 1; 最大为 100。默认值为 4;该值必须至少为 1,且小于或等于 100。 |
--vdoCpuThreads=thread count
| 指定用于 CPU 密集型工作的线程数量,如哈希或压缩。默认值为 2,该值必须至少为 1,且小于或等于 100。 |
--vdoHashZoneThreads=thread count
| 根据从块数据计算的哈希值,指定 VDO 处理中分离的线程数量。默认值为 1 ; 该值必须至少为 0,且小于或等于 100。vdoHashZoneThreads 、vdoLogicalThreads 和 vdoPhysicalThreads 都必须为零或所有非零。 |
--vdoLogicalThreads=thread count
| 根据从块数据计算的哈希值,指定 VDO 处理中分离的线程数量。该值必须至少为 0,且小于或等于 100。9 或更多个逻辑线程数还需要明确指定足够大的块映射缓存大小。vdoHashZoneThreads ,vdoLogicalThreads , 和 vdoPhysicalThreads 必须是零或所有非零。默认值为 1。 |
--vdoLogLevel=level
| 指定 VDO 驱动程序日志级别: critical 、error 、warning 、notice 、info 或 debug 。级别是区分大小写的;默认值为 info 。 |
--vdoLogicalSize=megabytes
| 以 MB 为单位指定逻辑卷大小。使用带有 S (ectors)、B (ytes), K (ilobytes), M (egabytes), G (igabytes), T (erabytes), P (etabytes)或 E (xabytes)后缀的值是可选的。用于过度置备卷。默认为存储设备的大小。 |
--vdoPhysicalThreads=thread count
| 指定根据物理块地址在 VDO 处理中从属部分的线程数量。该值必须至少为 0,且小于或等于 16。第一个后的每个额外线程将使用额外的 10 MB RAM。vdoPhysicalThreads ,vdoHashZoneThreads , 和 vdoLogicalThreads 必须是零或所有非零。默认值为 1。 |
--readCache={enabled | disabled}
| 启用或禁用 VDO 设备中的读取缓存。默认值为 。如果写入工作负载应该具有高级别 deduplication,或者用于读取高压缩数据的工作负载,则应启用缓存。 |
--readCacheSize=megabytes
| 指定额外的 VDO 设备读取缓存大小(以 MB 为单位)。这个空间除一个系统定义的最小之外。使用带有 B (ytes), K (ilobytes), M (egabytes), G (igabytes), T (erabytes), P (etabytes)或 E (xabytes)后缀的值是可选的。默认值为 0M。每个 bio 线程将每 MB 读缓存使用 1.12 MB 内存。 |
--vdoSlabSize=megabytes
| 指定 VDO 增长的递增大小。使用较小的大小限制了可容纳的总物理大小。必须是 128M 到 32G 之间的 2 个电源;默认值为 2G。使用带有 S (ectors)、B (ytes), K (ilobytes), M (egabytes), G (igabytes), T (erabytes), P (etabytes)或 E (xabytes)后缀的值是可选的。如果没有使用后缀,则该值将解释为 MB。 |
--verbose
| 在执行命令前打印命令。 |
--writePolicy={ auto | sync | async }
| 指定写入策略:
|
status
子命令返回 YAML 格式的以下信息,并分为几个键,如下所示:
键 | 描述 | |
---|---|---|
VDO 状态 | 此密钥中的信息涵盖正在进行状态的主机和日期和时间的名称。在此区域中报告的参数包括: | |
节点 | 运行 VDO 的系统的主机名。 | |
Date | 运行 vdo status 命令的日期和时间。 | |
内核模块 | 这个密钥中的信息涵盖了配置的内核。 | |
Loaded | 是否载入内核模块(True 或 False)。 | |
版本信息 | 已配置的 kvdo 版本的信息。 | |
配置 | 此密钥中的信息涵盖了 VDO 配置文件的位置和状态。 | |
File | VDO 配置文件的位置。 | |
最后修改 | VDO 配置文件的最后修改日期。 | |
VDO | 为所有 VDO 卷提供配置信息。为每个 VDO 卷报告的参数包括: | |
块大小 | VDO 卷的块大小,以字节为单位。 | |
512 字节模拟 | 指明卷是否在 512 字节模拟模式下运行。 | |
启用 deduplication | 是否为卷启用 deduplication。 | |
逻辑大小 | VDO 卷的逻辑大小。 | |
物理大小 | VDO 卷的基本物理存储的大小。 | |
写入策略 | 写入策略配置的值(sync 或 async)。 | |
VDO 统计 | vdostats 工具的输出。 |
30.7.2. vdostats
vdostats
工具以类似 Linux df
实用程序的格式显示每个配置(或指定)设备的统计信息。
如果没有使用 root 特权运行,则
vdostats
工具的输出可能不完整。
概要
vdostats [ --verbose | --human-readable | --si | --all ] [ --version ] [ device ...]
选项
选项 | 描述 |
---|---|
--verbose
|
显示一个或多个 VDO 设备的利用率和块 I/O (bios)统计信息。详情请查看 表 30.9 “vdostats --verbose Output”。
|
--human-readable
| 以可读的形式显示块值(基本 2: 1 KB = 210 字节 = 1024 字节)。 |
--si
| --si 选项修改 --human-readable 选项的输出以使用 SI 单位(基本 10: 1 KB = 103 字节 = 1000 字节)。如果没有提供 --human-readable 选项,-- si 选项不会起作用。 |
--all
| 这个选项仅用于向后兼容。现在,它等同于 --verbose 选项。 |
--version
| 显示 vdostats 版本。 |
device ...
| 指定要报告的一个或多个特定卷。如果省略此参数,则 vdostats 将报告所有设备。 |
输出
以下示例显示,如果没有提供选项,则输出示例,在 表 30.8 “默认 vdostats 输出” 中进行了描述:
Device 1K-blocks Used Available Use% Space Saving% /dev/mapper/my_vdo 1932562432 427698104 1504864328 22% 21%
项 | 描述 |
---|---|
设备 | VDO 卷的路径。 |
1k-blocks | 为 VDO 卷分配的 1K 块总数(=物理卷大小 * 块大小 / 1024) |
Used | VDO 卷中使用的 1K 块总数(= 物理块使用 * 块大小 / 1024) |
可用 | VDO 卷中可用 1K 块的总数(= 物理块 free * 块大小 / 1024) |
use% | VDO 卷中使用的物理块的百分比(= 使用块 / 分配的块 * 100) |
空间节省% | VDO 卷中保存的物理块的百分比(= [逻辑块已使用 - 物理块] / logical blocks used) |
--human-readable
选项将块数转换为传统单元(1 KB = 1024 字节):
Device Size Used Available Use% Space Saving% /dev/mapper/my_vdo 1.8T 407.9G 1.4T 22% 21%
--human-readable
和 --si
选项将块数转换为 SI 单位(1 KB = 1000 字节):
Device Size Used Available Use% Space Saving% /dev/mapper/my_vdo 2.0T 438G 1.5T 22% 21%
--verbose
(表 30.9 “vdostats --verbose Output”)选项以 YAML 格式显示一个(或全部)VDO 设备的 VDO 设备统计信息。
在以后的发行版本中,以 粗体显示 的统计信息将继续报告。表 30.9 “vdostats --verbose Output”其余字段主要用于软件支持,可能在以后的版本中有所变化;管理工具不应依赖于它们。管理工具不应依赖于报告任何统计数据的顺序。
项 | 描述 |
---|---|
版本 | 这些统计数据的版本。 |
发行版本 | VDO 的发行版本。 |
已使用的数据块 | VDO 卷目前使用的物理块数量来存储数据。 |
使用的开销块 | VDO 卷目前使用的物理块数量来存储 VDO 元数据。 |
使用的逻辑块 | 当前映射的逻辑块数量。 |
物理块 | 为 VDO 卷分配的物理块总数。 |
逻辑块 | VDO 卷可以映射的最大逻辑块数。 |
1k-blocks | 为 VDO 卷分配的 1K 块总数(=物理卷大小 * 块大小 / 1024) |
1k-blocks 使用的 | VDO 卷中使用的 1K 块总数(= 物理块使用 * 块大小 / 1024) |
1k-blocks 可用 | VDO 卷中可用 1K 块的总数(= 物理块 free * 块大小 / 1024) |
已使用百分比 | VDO 卷中使用的物理块的百分比(= 使用块 / 分配的块 * 100) |
保存百分比 | VDO 卷中保存的物理块的百分比(= [逻辑块已使用 - 物理块] / logical blocks used) |
块映射缓存大小 | 块映射缓存的大小,以字节为单位。 |
写入策略 | 活跃的写入策略(sync 或 async)。这通过 vdo changeWritePolicy --writePolicy=auto|sync|async 配置。 |
块大小 | VDO 卷的块大小,以字节为单位。 |
完成恢复计数 | VDO 卷已从未清理关闭中恢复的次数。 |
只读恢复计数 | VDO 卷已从只读模式恢复的次数(通过 vdo start --forceRebuild )。 |
操作模式 | 指明 VDO 卷是否正常运行,处于恢复模式,或者处于只读模式。 |
恢复进度(%) | 指明在线恢复进度,如果卷没有处于恢复模式,则为 N/A 。 |
编写的压缩片段 | 从 VDO 卷最后一次重启后写入的压缩片段数量。 |
编写的压缩块 | 从 VDO 卷最后一次重启后写入的压缩数据的物理块数量。 |
packer 中的压缩片段 | 尚未写入的压缩片段数量。 |
slab 数量 | slabs 的总数。 |
slabs 已打开 | 从中分配块的 slab 总数。 |
slabs reopened | 从 VDO 启动后,会重新打开 slabs 的次数。 |
日志磁盘完整计数 | 请求无法进行恢复日志条目的次数,因为恢复日志已满。 |
日志提交请求计数 | 恢复日志请求 slab 日志提交的次数。 |
日志条目批处理 | 日志条目写入的数量已开始减去写入的日志条目数。 |
日志条目已启动 | 内存中所做的日志条目数。 |
编写日志条目 | 提交中的日志条目数量减去提交到存储的日志条目数。 |
写入的日志条目 | 签发写入的日志条目总数。 |
已提交的日志条目 | 写入存储的日志条目数。 |
日志块批处理 | 启动的日志块写入数量减去写入的日志块的数量。 |
日志块已启动 | 在内存中涉及的日志块数。 |
日志块编写 | 编写的日志块数量(具有活动内存中的元数据主机)减去所提交的日志块数。 |
写入的日志条目 | 发出写入的日志块总数。 |
已提交的日志块 | 写入存储的日志块数量。 |
slab 日志磁盘完整计数 | 磁盘上 slab 日志已满的次数。 |
slab 日志清除计数 | 条目添加到通过 flush 阈值的 slab 日志中的次数。 |
slab 日志阻止计数 | 条目添加到带有阻塞阈值的 slab 日志中的次数。 |
写入 slab 日志块 | 发出 slab 日志块写入的数量。 |
slab journal tail busy count | 写入请求阻止等待 slab 日志写入的次数。 |
写入 slab 摘要块 | 签发的 slab 摘要块写入的数量。 |
编写的引用块 | 发布的引用块写入数量。 |
块映射脏页面 | 块映射缓存中脏页面的数量。 |
块映射清理页面 | 块映射缓存中清理页面的数量。 |
块映射空闲页面 | 块映射缓存中可用页面的数量。 |
块映射失败页 | 具有写入错误的块映射缓存页面数量。 |
块映射传入的页面 | 被读取到缓存中的块映射缓存页面数量。 |
块映射传出页面 | 正在写入的块映射缓存页面数量。 |
块映射缓存压力 | 在需要时,空闲页面不可用的次数。 |
块映射读取计数 | 块映射页面的总数显示为: |
块映射写入计数 | 块映射页面写入的总数。 |
块映射失败的读取 | 块映射读取错误的总数。 |
块映射失败的写入 | 块映射写入错误的总数。 |
重新声明的块映射 | 已回收的块映射页面总数。 |
块映射读取传出 | 要写入的页面的块映射读取总数。 |
缓存中找到的块映射 | 块映射缓存命中的总数。 |
需要块映射丢弃 | 需要丢弃页面的块映射请求总数。 |
块映射等待页面 | 必须等待页面的请求总数。 |
需要块映射获取 | 需要页面获取的请求总数。 |
加载的块映射页面 | 页面获取总数。 |
保存的块映射页面 | 保存页面的总数。 |
块映射冲刷计数 | 块映射发出的刷新总数。 |
无效的建议 PBN 数量 | 索引返回无效建议的次数 |
没有空格错误计数。 | 由于 VDO 卷没有空间导致的写入请求数。 |
只读错误计数 | 因为 VDO 卷处于只读模式而失败的写入请求数。 |
实例 | VDO 实例。 |
512 字节模拟 | 指明 512 字节模拟是否为卷打开或关闭。 |
正在进行中的当前 VDO IO 请求。 | VDO 当前处理的 I/O 请求数量。 |
正在进行中的最大 VDO IO 请求 | VDO 并发处理的最大 I/O 请求数。 |
当前去除重复查询 | 当前在 flight 中去除重复数据查询的数量。 |
最大去除重复查询 | 动态重复数据删除查询的最大数量。 |
Dedupe 建议有效 | 数据重复数据建议的次数正确。 |
dedupe 建议过时 | 重复数据删除建议的次数不正确。 |
dedupe 建议超时 | 重复数据删除查询超时的次数。 |
flush out | VDO 提交到底层存储的清空请求数。 |
中的 BIOS...部分的 BIOS...BIOS out...BIOS 元...BIOS 日志...BIOS 页面缓存...BIOS 已完成...bio meta completed...BIOS 日志已完成...已完成 BIOS 页面缓存...BIOS 已确认...BIOS 确认的部分...正在进行中的 BIOS... |
这些统计数据使用给定标志计算每个类别中的 bios 数量。类别是:
标记有三种类型:
|
读取缓存访问 | VDO 搜索读取缓存的次数。 |
读取缓存命中 | 读取缓存命中的数量。 |