VDS_HINTS2 结构 (vds.h)

[从 Windows 8 和 Windows Server 2012 开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]

包含 存储池中 LUN 的自动提示。

语法

typedef struct _VDS_HINTS2 {
  ULONGLONG            ullHintMask;
  ULONGLONG            ullExpectedMaximumSize;
  ULONG                ulOptimalReadSize;
  ULONG                ulOptimalReadAlignment;
  ULONG                ulOptimalWriteSize;
  ULONG                ulOptimalWriteAlignment;
  ULONG                ulMaximumDriveCount;
  ULONG                ulStripeSize;
  ULONG                ulReserved1;
  ULONG                ulReserved2;
  ULONG                ulReserved3;
  BOOL                 bFastCrashRecoveryRequired;
  BOOL                 bMostlyReads;
  BOOL                 bOptimizeForSequentialReads;
  BOOL                 bOptimizeForSequentialWrites;
  BOOL                 bRemapEnabled;
  BOOL                 bReadBackVerifyEnabled;
  BOOL                 bWriteThroughCachingEnabled;
  BOOL                 bHardwareChecksumEnabled;
  BOOL                 bIsYankable;
  BOOL                 bAllocateHotSpare;
  BOOL                 bUseMirroredCache;
  BOOL                 bReadCachingEnabled;
  BOOL                 bWriteCachingEnabled;
  BOOL                 bMediaScanEnabled;
  BOOL                 bConsistencyCheckEnabled;
  VDS_STORAGE_BUS_TYPE BusType;
  BOOL                 bReserved1;
  BOOL                 bReserved2;
  BOOL                 bReserved3;
  SHORT                sRebuildPriority;
} VDS_HINTS2, *PVDS_HINTS2;

成员

ullHintMask

LUN 提示掩码。 此结构的每个 BOOL 成员都有一个可在掩码中设置的相应提示标志。 如果设置了提示标志,则考虑相应的提示。 如果未设置提示标志,则忽略提示。 下表描述了提示标志。

Value 含义
VDS_HINT_FASTCRASHRECOVERYREQUIRED
0x0000000000000001L
提供程序限制恢复所需的时间。 为了支持快速恢复,提供程序使用更改日志,使提供程序能够恢复 LUN,而无需比较 LUN 的全部内容。
VDS_HINT_MOSTLYREADS
0x0000000000000002L
提供程序针对读取最多的使用模式优化 LUN,通常使用镜像而不是奇偶校验条带化。
VDS_HINT_OPTIMIZEFORSEQUENTIALREADS
0x0000000000000004L
提供程序针对顺序读取使用模式优化 LUN。 如果未设置此标志并且也未设置VDS_HINT_OPTIMIZEFORSEQUENTIALWRITES,则 LUN 将针对随机 I/O 进行优化。
VDS_HINT_OPTIMIZEFORSEQUENTIALWRITES
0x0000000000000008L
提供程序针对顺序写入使用模式优化 LUN。 如果未设置此标志并且也未设置VDS_HINT_OPTIMIZEFORSEQUENTIALREADS,则 LUN 将针对随机 I/O 进行优化。
VDS_HINT_READBACKVERIFYENABLED
0x0000000000000010L
提供程序使用读回验证对 LUN 的写入。
VDS_HINT_REMAPENABLED
0x0000000000000020L
提供程序会自动创建和更新 LUN 盘区到驱动器盘区的映射。 如果未设置此标志,则映射在配置后保持不变,除非采取主动操作以避免驱动器故障。
VDS_HINT_WRITETHROUGHCACHINGENABLED
0x0000000000000040L
提供程序在 LUN 上启用写通缓存策略。
VDS_HINT_HARDWARECHECKSUMENABLED
0x0000000000000080L
提供程序在 LUN 上启用硬件校验和。
VDS_HINT_ISYANKABLE
0x0000000000000100L
提供程序配置 LUN,以便可以物理删除影响 LUN 的驱动器,并将系统中断降到最低。 这通常是通过确保 LUN 占用尽可能少的驱动器来实现的。
VDS_HINT_ALLOCATEHOTSPARE
0x0000000000000200L
提供程序为 LUN 分配热备用。 有关详细信息,请参阅 热存储VDS_DRIVE_FLAGVDS_DISK_FLAG
VDS_HINT_BUSTYPE
0x0000000000000400L
提供程序在 LUN 上使用指定的总线类型。 有关详细信息,请参阅 VDS_STORAGE_BUS_TYPE
VDS_HINT_USEMIRROREDCACHE
0x0000000000000800L
提供程序在 LUN 上使用镜像缓存。 请参阅 VDS_SUB_SYSTEM_FLAG 枚举的 VDS_SF_SUPPORTS_MIRRORED_CACHE 值。
VDS_HINT_READCACHINGENABLED
0x0000000000001000L
提供程序在 LUN 上启用读取缓存。 请参阅 VDS_LUN_FLAG 枚举的 VDS_LF_READ_CACHE_ENABLED 值和 VDS_SUB_SYSTEM_FLAG 枚举的 VDS_SF_READ_CACHING_CAPABLE 值。
VDS_HINT_WRITECACHINGENABLED
0x0000000000002000L
提供程序在 LUN 上启用写入缓存。 请参阅 VDS_LUN_FLAG 枚举的 VDS_LF_WRITE_CACHE_ENABLED 值和 VDS_SUB_SYSTEM_FLAG 枚举的 VDS_SF_WRITE_CACHING_CAPABLE 值。
VDS_HINT_MEDIASCANENABLED
0x0000000000004000L
提供程序在 LUN 上启用媒体扫描。 请参阅 VDS_LUN_FLAG 枚举的 VDS_LF_MEDIA_SCAN_ENABLED 值和 VDS_SUB_SYSTEM_FLAG 枚举的 VDS_SF_MEDIA_SCAN_CAPABLE 值。
VDS_HINT_CONSISTENCYCHECKENABLED
0x0000000000008000L
提供程序在 LUN 上启用一致性检查。 请参阅VDS_LUN_FLAG枚举的VDS_LF_CONSISTENCY_CHECK_ENABLED值和VDS_SUB_SYSTEM_FLAG枚举的VDS_SF_CONSISTENCY_CHECK_CAPABLE值。

ullExpectedMaximumSize

LUN 预期增长到的最大大小(以字节为单位)。 当调用 IVdsHwProviderStoragePools::CreateLunInStoragePool 方法时,该值可以等于、大于或小于 ullSizeInBytes 参数中指定的值。 某些提供程序使用此值为 LUN 保留空间。 无法保留空间的提供程序通常会忽略此参数。

ulOptimalReadSize

LUN 的最佳读取大小(以字节为单位)。 零表示没有最佳读取大小。

ulOptimalReadAlignment

与 LUN 的第一个逻辑块相关的最佳读取对齐方式。 零表示没有最佳的读取对齐方式。

ulOptimalWriteSize

LUN 的最佳写入大小(以字节为单位)。 零表示没有最佳写入大小。

ulOptimalWriteAlignment

与 LUN 的第一个逻辑块相关的最佳写入对齐方式。 零表示没有最佳的写入对齐方式。

ulMaximumDriveCount

用于 LUN 的最大驱动器数。 零表示没有最大驱动器计数。 此值可用于限制条带集中的条带交错数。

ulStripeSize

镜像或奇偶校验条带交错大小(以字节为单位)。 零将保留未指定条带大小。

ulReserved1

此成员留待将来使用。 请勿使用。

ulReserved2

此成员留待将来使用。 请勿使用。

ulReserved3

此成员留待将来使用。 请勿使用。

bFastCrashRecoveryRequired

如果此成员为 TRUE,则恢复时间有限。 在 ullHintMask 成员中设置 VDS_HINT_FASTCRASHRECOVERYREQUIRED 标志,以指示对此成员感兴趣。

bMostlyReads

例如,若要优化大多数读取的使用模式 (,例如通过镜像而不是奇偶校验条带化) ,请将此成员设置为 TRUE。 否则,请将其设置为 FALSE。 在 ullHintMask 成员中设置VDS_HINT_MOSTLYREADS标志,以指示对此成员感兴趣。

bOptimizeForSequentialReads

若要优化顺序读取使用模式,请将此成员设置为 TRUE。 否则,请将其设置为 FALSE。 将 bOptimizeForSequentialReadsbOptimizeForSequentialWrites 成员都设置为 FALSE 可针对随机 I/O 进行优化。 在 ullHintMask 成员中设置 VDS_HINT_OPTIMIZEFORSEQUENTIALREADS 标志,以指示对此成员感兴趣。

bOptimizeForSequentialWrites

若要优化顺序写入使用模式,请将此成员设置为 TRUE。 否则,请将其设置为 FALSE。 将 bOptimizeForSequentialReadsbOptimizeForSequentialWrites 成员都设置为 FALSE 可针对随机 I/O 进行优化。 在 ullHintMask 成员中设置VDS_HINT_OPTIMIZEFORSEQUENTIALWRITES标志,以指示对此成员感兴趣。

bRemapEnabled

如果此成员为 TRUE,提供程序会自动将 LUN 盘区重新映射到驱动器盘区。 如果为 FALSE,则 LUN 盘区到驱动器盘区的映射在 LUN 配置后将保持不变,除非显式重新映射盘区以避免损坏的块。 在 ullHintMask 成员中设置VDS_HINT_REMAPENABLED标志,以指示对此成员感兴趣。

bReadBackVerifyEnabled

如果此成员为 TRUE,则提供程序通过读回验证对 LUN 的写入。 如果为 FALSE,则提供程序不会验证写入。 在 ullHintMask 成员中设置VDS_HINT_READBACKVERIFYENABLED标志,以指示对此成员感兴趣。

bWriteThroughCachingEnabled

如果此成员为 TRUE,则提供程序在 LUN 上启用写通缓存;如果为 FALSE,则提供程序不启用直通写缓存。 在 ullHintMask 成员中设置VDS_HINT_WRITETHROUGHCACHINGENABLED标志,以指示对此成员感兴趣。

bHardwareChecksumEnabled

如果此成员为 TRUE,则提供程序在 LUN 上启用校验和。 在 ullHintMask 成员中设置VDS_HINT_HARDWARECHECKSUMENABLED标志,以指示对此成员感兴趣。

bIsYankable

如果此成员为 TRUE,则可以在物理上删除影响 LUN 的驱动器,而不会对系统造成重大中断 (当 LUN 由仅) 几个驱动器的盘区组成时,这通常为 true。 如果为 FALSE,则无法删除 LUN,而不会对系统造成重大中断。 在 ullHintMask 成员中设置VDS_HINT_ISYANKABLE标志以指示对此成员感兴趣。

bAllocateHotSpare

如果客户端要为此 LUN 分配热备用驱动器,则为 TRUE;否则为 FALSE。 在 ullHintMask 成员中设置 VDS_HINT_ALLOCATEHOTSPARE 标志,以指示对此成员感兴趣。

bUseMirroredCache

如果客户端希望此 LUN 使用镜像缓存,则为 TRUE,否则为 FALSE。 在 ullHintMask 成员中设置VDS_HINT_USEMIRROREDCACHE标志,以指示对此成员感兴趣。

bReadCachingEnabled

如果客户端希望 LUN 使用读取缓存,则为 TRUE,否则为 FALSE。 在 ullHintMask 成员中设置VDS_HINT_READCACHINGENABLED标志,以指示对此成员感兴趣。

bWriteCachingEnabled

如果客户端希望 LUN 使用写入缓存,则为 TRUE,否则为 FALSE。 在 ullHintMask 成员中设置VDS_HINT_WRITECACHINGENABLED标志,以指示对此成员感兴趣。

bMediaScanEnabled

如果客户端要为此 LUN 启用媒体扫描,则为 TRUE,否则为 FALSE。 在 ullHintMask 成员中设置VDS_HINT_MEDIASCANENABLED标志,以指示对此成员感兴趣。

bConsistencyCheckEnabled

如果客户端要为此 LUN 启用一致性检查,则为 TRUE,否则为 FALSE。 在 ullHintMask 成员中设置VDS_HINT_CONSISTENCYCHECKENABLED标志以指示对此成员感兴趣。

BusType

一个VDS_STORAGE_BUS_TYPE枚举值,该值指定 LUN 的总线类型。 在 ullHintMask 成员中设置VDS_HINT_BUSTYPE标志,以指示对此成员感兴趣。

bReserved1

此成员留待将来使用。 请勿使用。

bReserved2

此成员留待将来使用。 请勿使用。

bReserved3

此成员留待将来使用。 请勿使用。

sRebuildPriority

LUN 的重新生成优先级。 该值的范围可以是 0 (最低优先级) 到 15 (最高优先级) 。

备注

IVdsHwProviderStoragePools::CreateLunInStoragePool 方法将此结构作为参数传递,以提供在存储池中创建 LUN 的提示。 它在 IVdsLun2::ApplyHints2 方法中作为参数传递,以将一组新的提示应用于 LUN。 此外, 它由 IVdsLun2::QueryHints2 方法返回,以分别报告当前应用于 LUN 或 LUN plex 的提示。

提示不是对实现者的指令。 虽然实施者通常希望尽最大努力考虑提示,但他们没有义务遵循提示。 如果由于技术原因而无法遵循指定的提示或遵循这些提示可能会导致配置不佳,则实施者可以选择替代方法。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
标头 vds.h

另请参阅

IVdsLun2::ApplyHints2

IVdsLun2::QueryHints2