Red Hat Training

A Red Hat training course is available for Red Hat Linux

29.7. VDO Commands

This section describes the following VDO utilities:
vdo
The vdo utility manages both the kvdo and UDS components of VDO.
It is also used to enable or disable compression.
vdostats
The vdostats utility displays statistics for each configured (or specified) device in a format similar to the Linux df utility.

29.7.1. vdo

The vdo utility manages both the kvdo and UDS components of VDO.

Synopsis

vdo { activate | changeWritePolicy | create | deactivate | disableCompression | disableDeduplication | enableCompression | enableDeduplication | growLogical | growPhysical | list | modify | printConfigFile | remove | start | status | stop } 
[ options... ]

Sub-Commands

Table 29.4. VDO Sub-Commands

Sub-CommandDescription
create
remove
Removes one or more stopped VDO volumes and associated indexes. This command must be run with root privileges. Applicable options include:
start
Starts one or more stopped, activated VDO volumes and associated services. This command must be run with root privileges. Applicable options include:
stop
Stops one or more running VDO volumes and associated services. This command must be run with root privileges. Applicable options include:
activate
Activates one or more VDO volumes. Activated volumes can be started using the
start
command. This command must be run with root privileges. Applicable options include:
deactivate
Deactivates one or more VDO volumes. Deactivated volumes cannot be started by the
start
command. Deactivating a currently running volume does not stop it. Once stopped a deactivated VDO volume must be activated before it can be started again. This command must be run with root privileges. Applicable options include:
status
Reports VDO system and volume status in YAML format. This command does not require root privileges though information will be incomplete if run without. Applicable options include: See Table 29.6, “VDO Status Output” for the output provided.
list
Displays a list of started VDO volumes. If −−all is specified it displays both started and non‐started volumes. This command must be run with root privileges. Applicable options include:
modify
changeWritePolicy
Modifies the write policy of one or all running VDO volumes. This command must be run with root privileges.
enableDeduplication
Enables deduplication on one or more VDO volumes. This command must be run with root privileges. Applicable options include:
disableDeduplication
Disables deduplication on one or more VDO volumes. This command must be run with root privileges. Applicable options include:
enableCompression
Enables compression on one or more VDO volumes. If the VDO volume is running, takes effect immediately. If the VDO volume is not running compression will be enabled the next time the VDO volume is started. This command must be run with root privileges. Applicable options include:
disableCompression
Disables compression on one or more VDO volumes. If the VDO volume is running, takes effect immediately. If the VDO volume is not running compression will be disabled the next time the VDO volume is started. This command must be run with root privileges. Applicable options include:
growLogical
Adds logical space to a VDO volume. The volume must exist and must be running. This command must be run with root privileges. Applicable options include:
growPhysical
Adds physical space to a VDO volume. The volume must exist and must be running. This command must be run with root privileges. Applicable options include:
printConfigFile
Prints the configuration file to stdout. This command require root privileges. Applicable options include:

Options

Table 29.5. VDO Options

OptionDescription
--indexMem=gigabytes
Specifies the amount of UDS server memory in gigabytes; the default size is 1 GB. The special decimal values 0.25, 0.5, 0.75 can be used, as can any positive integer.
--sparseIndex={enabled | disabled}
Enables or disables sparse indexing. The default is disabled.
--all
Indicates that the command should be applied to all configured VDO volumes. May not be used with --name.
--blockMapCacheSize=megabytes
Specifies the amount of memory allocated for caching block map pages; the value must be a multiple of 4096. Using a value with a B(ytes), K(ilobytes), M(egabytes), G(igabytes), T(erabytes), P(etabytes) or E(xabytes) suffix is optional. If no suffix is supplied, the value will be interpreted as megabytes. The default is 128M; the value must be at least 128M and less than 16T. Note that there is a memory overhead of 15%.
--blockMapPeriod=period
A value between 1 and 16380 which determines the number of block map updates which may accumulate before cached pages are flushed to disk. Higher values decrease recovery time after a crash at the expense of decreased performance during normal operation. The default value is 16380. Speak with your Red Hat representative before tuning this parameter.
--compression={enabled | disabled}
Enables or disables compression within the VDO device. The default is enabled. Compression may be disabled if necessary to maximize performance or to speed processing of data that is unlikely to compress.
--confFile=file
Specifies an alternate configuration file. The default is /etc/vdoconf.yml.
--deduplication={enabled | disabled}
Enables or disables deduplication within the VDO device. The default is enabled. Deduplication may be disabled in instances where data is not expected to have good deduplication rates but compression is still desired.
--emulate512={enabled | disabled}
Enables 512-byte block device emulation mode. The default is disabled.
--force
Unmounts mounted file systems before stopping a VDO volume.
--forceRebuild
Forces an offline rebuild before starting a read-only VDO volume so that it may be brought back online and made available. This option may result in data loss or corruption.
--help
Displays documentation for the vdo utility.
--logfile=pathname
Specify the file to which this script's log messages are directed. Warning and error messages are always logged to syslog as well.
--name=volume
Operates on the specified VDO volume. May not be used with --all.
--device=device
Specifies the absolute path of the device to use for VDO storage.
--activate={enabled | disabled}
The argument disabled indicates that the VDO volume should only be created. The volume will not be started or enabled. The default is enabled.
--vdoAckThreads=thread count
Specifies the number of threads to use for acknowledging completion of requested VDO I/O operations. The default is 1; the value must be at least 0 and less than or equal to 100.
--vdoBioRotationInterval=I/O count
Specifies the number of I/O operations to enqueue for each bio-submission thread before directing work to the next. The default is 64; the value must be at least 1 and less than or equal to 1024.
--vdoBioThreads=thread count
Specifies the number of threads to use for submitting I/O operations to the storage device. Minimum is 1; maximum is 100. The default is 4; the value must be at least 1 and less than or equal to 100.
--vdoCpuThreads=thread count
Specifies the number of threads to use for CPU- intensive work such as hashing or compression. The default is 2; the value must be at least 1 and less than or equal to 100.
--vdoHashZoneThreads=thread count
Specifies the number of threads across which to subdivide parts of the VDO processing based on the hash value computed from the block data. The default is 1; the value must be at least 0 and less than or equal to 100. vdoHashZoneThreads, vdoLogicalThreads and vdoPhysicalThreads must be either all zero or all non-zero.
--vdoLogicalThreads=thread count
Specifies the number of threads across which to subdivide parts of the VDO processing based on the hash value computed from the block data. The value must be at least 0 and less than or equal to 100. A logical thread count of 9 or more will require explicitly specifying a sufficiently large block map cache size, as well. vdoHashZoneThreads, vdoLogicalThreads, and vdoPhysicalThreads must be either all zero or all non‐zero. The default is 1.
--vdoLogLevel=level
Specifies the VDO driver log level: critical, error, warning, notice, info, or debug. Levels are case sensitive; the default is info.
--vdoLogicalSize=megabytes
Specifies the logical VDO volume size in megabytes. Using a value with a S(ectors), B(ytes), K(ilobytes), M(egabytes), G(igabytes), T(erabytes), P(etabytes) or E(xabytes) suffix is optional. Used for over- provisioning volumes. This defaults to the size of the storage device.
--vdoPhysicalThreads=thread count
Specifies the number of threads across which to subdivide parts of the VDO processing based on physical block addresses. The value must be at least 0 and less than or equal to 16. Each additional thread after the first will use an additional 10 MB of RAM. vdoPhysicalThreads, vdoHashZoneThreads, and vdoLogicalThreads must be either all zero or all non‐zero. The default is 1.
--readCache={enabled | disabled}
Enables or disables the read cache within the VDO device. The default is disabled. The cache should be enabled if write workloads are expected to have high levels of deduplication, or for read intensive workloads of highly compressible data.
--readCacheSize=megabytes
Specifies the extra VDO device read cache size in megabytes. This space is in addition to a system- defined minimum. Using a value with a B(ytes), K(ilobytes), M(egabytes), G(igabytes), T(erabytes), P(etabytes) or E(xabytes) suffix is optional. The default is 0M. 1.12 MB of memory will be used per MB of read cache specified, per bio thread.
--vdoSlabSize=megabytes
Specifies the size of the increment by which a VDO is grown. Using a smaller size constrains the total maximum physical size that can be accommodated. Must be a power of two between 128M and 32G; the default is 2G. Using a value with a S(ectors), B(ytes), K(ilobytes), M(egabytes), G(igabytes), T(erabytes), P(etabytes) or E(xabytes) suffix is optional. If no suffix is used, the value will be interpreted as megabytes.
--verbose
Prints commands before executing them.
--writePolicy={ auto | sync | async }
Specifies the write policy:
  • auto: Select sync or async based on the storage layer underneath VDO. If a write back cache is present, async will be chosen. Otherwise, sync will be chosen.
  • sync: Writes are acknowledged only after data is stably written. This is the default policy. This policy is not supported if the underlying storage is not also synchronous.
  • async: Writes are acknowledged after data has been cached for writing to stable storage. Data which has not been flushed is not guaranteed to persist in this mode.
The status subcommand returns the following information in YAML format, divided into keys as follows:

Table 29.6. VDO Status Output

KeyDescription
VDO Status Information in this key covers the name of the host and date and time at which the status inquiry is being made. Parameters reported in this area include:
Node The host name of the system on which VDO is running.
Date The date and time at which the vdo status command is run.
Kernel Module Information in this key covers the configured kernel.
Loaded Whether or not the kernel module is loaded (True or False).
Version Information Information on the version of kvdo that is configured.
Configuration Information in this key covers the location and status of the VDO configuration file.
File Location of the VDO configuration file.
Last modified The last-modified date of the VDO configuration file.
VDOs Provides configuration information for all VDO volumes. Parameters reported for each VDO volume include:
Block size The block size of the VDO volume, in bytes.
512 byte emulation Indicates whether the volume is running in 512-byte emulation mode.
Enable deduplication Whether deduplication is enabled for the volume.
Logical size The logical size of the VDO volume.
Physical size The size of a VDO volume's underlying physical storage.
Write policy The configured value of the write policy (sync or async).
VDO Statistics Output of the vdostats utility.

29.7.2. vdostats

The vdostats utility displays statistics for each configured (or specified) device in a format similar to the Linux df utility.
The output of the vdostats utility may be incomplete if it is not run with root privileges.

Synopsis

vdostats [ --verbose | --human-readable | --si | --all ] [ --version ] [ device ...]

Options

Table 29.7. vdostats Options

Option Description
--verbose
Displays the utilization and block I/O (bios) statistics for one (or more) VDO devices. See Table 29.9, “vdostats --verbose Output” for details.
--human-readable
Displays block values in readable form (Base 2: 1 KB = 210 bytes = 1024 bytes).
--si
The --si option modifies the output of the --human-readable option to use SI units (Base 10: 1 KB = 103 bytes = 1000 bytes). If the --human-readable option is not supplied, the --si option has no effect.
--all
This option is only for backwards compatibility. It is now equivalent to the --verbose option.
--version
Displays the vdostats version.
device ...
Specifies one or more specific volumes to report on. If this argument is omitted, vdostats will report on all devices.

Output

The following example shows sample output if no options are provided, which is described in Table 29.8, “Default vdostats Output”:
Device               1K-blocks    Used         Available     Use%   Space Saving%
/dev/mapper/my_vdo   1932562432   427698104    1504864328    22%    21%

Table 29.8. Default vdostats Output

Item Description
Device The path to the VDO volume.
1K-blocks The total number of 1K blocks allocated for a VDO volume (= physical volume size * block size / 1024)
Used The total number of 1K blocks used on a VDO volume (= physical blocks used * block size / 1024)
Available The total number of 1K blocks available on a VDO volume (= physical blocks free * block size / 1024)
Use% The percentage of physical blocks used on a VDO volume (= used blocks / allocated blocks * 100)
Space Saving% The percentage of physical blocks saved on a VDO volume (= [logical blocks used - physical blocks used] / logical blocks used)
The --human-readable option converts block counts into conventional units (1 KB = 1024 bytes):
Device               Size   Used      Available     Use%   Space Saving%
/dev/mapper/my_vdo   1.8T   407.9G    1.4T          22%    21%
The --human-readable and --si options convert block counts into SI units (1 KB = 1000 bytes):
Device               Size   Used      Available     Use%    Space Saving%
/dev/mapper/my_vdo   2.0T   438G      1.5T          22%     21%
The --verbose (Table 29.9, “vdostats --verbose Output”) option displays VDO device statistics in YAML format for one (or all) VDO devices.
Statistics printed in bold in Table 29.9, “vdostats --verbose Output” will continue to be reported in future releases. The remaining fields are primarily intended for software support and are subject to change in future releases; management tools should not rely upon them. Management tools should also not rely upon the order in which any of the statistics are reported.

Table 29.9. vdostats --verbose Output

Item Description
Version The version of these statistics.
Release version The release version of the VDO.
Data blocks used The number of physical blocks currently in use by a VDO volume to store data.
Overhead blocks used The number of physical blocks currently in use by a VDO volume to store VDO metadata.
Logical blocks used The number of logical blocks currently mapped.
Physical blocks The total number of physical blocks allocated for a VDO volume.
Logical blocks The maximum number of logical blocks that can be mapped by a VDO volume.
1K-blocks The total number of 1K blocks allocated for a VDO volume (= physical volume size * block size / 1024)
1K-blocks used The total number of 1K blocks used on a VDO volume (= physical blocks used * block size / 1024)
1K-blocks available The total number of 1K blocks available on a VDO volume (= physical blocks free * block size / 1024)
Used percent The percentage of physical blocks used on a VDO volume (= used blocks / allocated blocks * 100)
Saving percent The percentage of physical blocks saved on a VDO volume (= [logical blocks used - physical blocks used] / logical blocks used)
Block map cache size The size of the block map cache, in bytes.
Write policy The active write policy (sync or async). This is configured via vdo changeWritePolicy --writePolicy=auto|sync|async.
Block size The block size of a VDO volume, in bytes.
Completed recovery count The number of times a VDO volume has recovered from an unclean shutdown.
Read-only recovery count The number of times a VDO volume has been recovered from read-only mode (via vdo start --forceRebuild).
Operating mode Indicates whether a VDO volume is operating normally, is in recovery mode, or is in read-only mode.
Recovery progress (%) Indicates online recovery progress, or N/A if the volume is not in recovery mode.
Compressed fragments written The number of compressed fragments that have been written since the VDO volume was last restarted.
Compressed blocks written The number of physical blocks of compressed data that have been written since the VDO volume was last restarted.
Compressed fragments in packer The number of compressed fragments being processed that have not yet been written.
Slab count The total number of slabs.
Slabs opened The total number of slabs from which blocks have ever been allocated.
Slabs reopened The number of times slabs have been re-opened since the VDO was started.
Journal disk full count The number of times a request could not make a recovery journal entry because the recovery journal was full.
Journal commits requested count The number of times the recovery journal requested slab journal commits.
Journal entries batching The number of journal entry writes started minus the number of journal entries written.
Journal entries started The number of journal entries which have been made in memory.
Journal entries writing The number of journal entries in submitted writes minus the number of journal entries committed to storage.
Journal entries written The total number of journal entries for which a write has been issued.
Journal entries committed The number of journal entries written to storage.
Journal blocks batching The number of journal block writes started minus the number of journal blocks written.
Journal blocks started The number of journal blocks which have been touched in memory.
Journal blocks writing The number of journal blocks written (with metadatata in active memory) minus the number of journal blocks committed.
Journal entries written The total number of journal blocks for which a write has been issued.
Journal blocks committed The number of journal blocks written to storage.
Slab journal disk full count The number of times an on-disk slab journal was full.
Slab journal flush count The number of times an entry was added to a slab journal that was over the flush threshold.
Slab journal blocked count The number of times an entry was added to a slab journal that was over the blocking threshold.
Slab journal blocks written The number of slab journal block writes issued.
Slab journal tail busy count The number of times write requests blocked waiting for a slab journal write.
Slab summary blocks written The number of slab summary block writes issued.
Reference blocks written The number of reference block writes issued.
Block map dirty pages The number of dirty pages in the block map cache.
Block map clean pages The number of clean pages in the block map cache.
Block map free pages The number of free pages in the block map cache.
Block map failed pages The number of block map cache pages that have write errors.
Block map incoming pages The number of block map cache pages that are being read into the cache.
Block map outgoing pages The number of block map cache pages that are being written.
Block map cache pressure The number of times a free page was not available when needed.
Block map read count The total number of block map page reads.
Block map write count The total number of block map page writes.
Block map failed reads The total number of block map read errors.
Block map failed writes The total number of block map write errors.
Block map reclaimed The total number of block map pages that were reclaimed.
Block map read outgoing The total number of block map reads for pages that were being written.
Block map found in cache The total number of block map cache hits.
Block map discard required The total number of block map requests that required a page to be discarded.
Block map wait for page The total number of requests that had to wait for a page.
Block map fetch required The total number of requests that required a page fetch.
Block map pages loaded The total number of page fetches.
Block map pages saved The total number of page saves.
Block map flush count The total number of flushes issued by the block map.
Invalid advice PBN count The number of times the index returned invalid advice
No space error count. The number of write requests which failed due to the VDO volume being out of space.
Read only error count The number of write requests which failed due to the VDO volume being in read-only mode.
Instance The VDO instance.
512 byte emulation Indicates whether 512 byte emulation is on or off for the volume.
Current VDO IO requests in progress. The number of I/O requests the VDO is current processing.
Maximum VDO IO requests in progress The maximum number of simultaneous I/O requests the VDO has processed.
Current dedupe queries The number of deduplication queries currently in flight.
Maximum dedupe queries The maximum number of in-flight deduplication queries.
Dedupe advice valid The number of times deduplication advice was correct.
Dedupe advice stale The number of times deduplication advice was incorrect.
Dedupe advice timeouts The number of times deduplication queries timed out.
Flush out The number of flush requests submitted by VDO to the underlying storage.
Bios in... Bios in partial... Bios out... Bios meta... Bios journal... Bios page cache... Bios out completed... Bio meta completed... Bios journal completed... Bios page cache completed... Bios acknowledged... Bios acknowledged partial... Bios in progress...
These statistics count the number of bios in each category with a given flag. The categories are:
  • bios in: The number of block I/O requests received by VDO.
  • bios in partial: The number of partial block I/O requests received by VDO. Applies only to 512-byte emulation mode.
  • bios out: The number of non-metadata block I/O requests submitted by VDO to the storage device.
  • bios meta: The number of metadata block I/O requests submitted by VDO to the storage device.
  • bios journal: The number of recovery journal block I/O requests submitted by VDO to the storage device.
  • bios page cache: The number of block map I/O requests submitted by VDO to the storage device.
  • bios out completed: The number of non-metadata block I/O requests completed by the storage device.
  • bios meta completed: The number of metadata block I/O requests completed by the storage device.
  • bios journal completed: The number of recovery journal block I/O requests completed by the storage device.
  • bios page cache completed: The number of block map I/O requests completed by the storage device.
  • bios acknowledged: The number of block I/O requests acknowledged by VDO.
  • bios acknowledged partial: The number of partial block I/O requests acknowledged by VDO. Applies only to 512-byte emulation mode.
  • bios in progress: The number of bios submitted to the VDO which have not yet been acknowledged.
There are three types of flags:
  • read: The number of non-write bios (bios without the REQ_WRITE flag set)
  • write: The number of write bios (bios with the REQ_WRITE flag set)
  • discard: The number of bios with a REQ_DISCARD flag set
Read cache accesses The number of times VDO searched the read cache.
Read cache hits The number of read cache hits.