The following registry entries are associated with the SIOS DataKeeper service or driver and can be viewed and edited using Regedt32.
Registry Entries that MAY be Modified
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters
The SIOS DataKeeper driver uses the Parameters key and those below it. Each value is listed with a symbol that indicates the registry key where the value is configured. The symbols are defined as follows:
* - Values denoted with * are configured in the Parameters key, and are global.
† - Values denoted with † are configured in the Target IP key for a mirror, and are specific to that mirror only.
$ – Values denoted with $ are configured in the Volume key, and are specific to that volume only.
Some values are both global and specific to a Target IP or Volume. Those values are listed with both the “*” (global) character and the appropriate symbol ($ or †). In those cases, the value configured for the Target IP or Volume takes precedence; the global value is used as a default for any new mirrors.
BandwidthThrottle †
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\BandwidthThrottle | ||||||||
Name | Type | Default Data | ||||||
BandwidthThrottle | REG_DWORD | 0 | ||||||
Specifies the maximum amount of network bandwidth (in kilobits per second) that a particular mirror is allowed to use. A value of 0 means unlimited. |
BitmapBaseDir *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\BitmapBaseDir | ||||||||
Name | Type | Default Data | ||||||
BitmapBaseDir | REG_SZ | C:\%EXTMIRRBASE%\Bitmaps (usually C:\Program Files\SIOS\DataKeeper\Bitmaps but may be different when upgrading a system or if you install SIOS DataKeeper to a different path) | ||||||
Specifies a directory where SIOS DataKeeper stores its Intent Log files. (Note: The drive letter must be in uppercase.) To disable the intent log feature, clear this registry entry (set it to an empty string) on all current and potential mirror endpoint servers. Disabling the intent log requires a reboot on each of these systems in order for this setting to take effect. |
BitmapBytesPerBlock * †
Locations: For New Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\BitmapBytesPerBlock For Existing Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\BitmapBytesPerBlock Note: If editing this entry under Parameters, all NEW mirrors created will inherit this value. If editing this entry under a {Target IP}, the value pertains to that one Target only. {Target IP} values override Parameter values. |
||||||||
Name | Type | Default Data | ||||||
BitmapBytesPerBlock | REG_DWORD | 65536 (0×10000) | ||||||
Specifies the number of bytes that are represented as dirty in a DataKeeper Intent Log bitmap when a write request occurs. A single bit in the bitmap represents 65536 bytes, and the BitmapBytesPerBlock indicates the effective block size, which may be represented as multiple bits. Increasing this value can improve replication performance in some environments – in particular with workloads that perform sequential writes, on systems with relatively high-latency Bitmap storage. A larger block size means that fewer writes to the bitmap file will occur with sequential writes that are smaller than the adjusted block size. A larger block size will not noticeably help performance in environments where writes are primarily random, and may not help on systems with fast, low-latency bitmap storage. Also, a larger block size may result in larger amounts of data to resync in the event of a system failure. Note: The minimum value of BitmapBytesPerBlock is 65536 – any value less than this is treated as 65536. There is no maximum value enforced. Note: BitmapBytesPerBlock does not affect the rate of mirror resync. |
BitmapClearIntervalMs *
Location: _HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\BitmapClearIntervalMs | ||||||||
Name | Type | Default Data | ||||||
BitmapClearIntervalMs | REG_DWORD | 2000 (decimal) | ||||||
DataKeeper employs a “lazy clear” bitmap clearing mechanism, writing the bitmap file with all 0’s when all outstanding writes are complete. This value limits the frequency that DataKeeper will write the bitmap file after the writes have completed, to prevent constant frequent writes of the entire bitmap file. This value is global to all mirrors. |
BitmapFileEnabled †
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\ {Volume GUID}\Targets\{Target IP}\BitmapFileEnabled | ||||||||
Name | Type | Default Data | ||||||
BitmapFileEnabled | REG_BINARY | 01 | ||||||
Specifies whether the persistent bitmap for this mirror should be used. Set to 01 to enable the bitmap (default) or 00 to disable the bitmap. This value is read during mirror creation or switchover, and at boot time. |
BlockWritesOnLimitReached * †
Locations: For New Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\BlockWritesOnLimitReached For Existing Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\BlockWritesOnLimitReached Note: If editing this entry under *Parameters, all NEW mirrors created will inherit this value. If editing this entry under a {Target IP}, the value pertains to that target only. Any {Target IP} values override the global Parameter values. |
||||||||
Name | Type | Default Data | ||||||
BlockWritesOnLimitReached | REG_DWORD | 0 | ||||||
This value determines what the behavior of a mirror is when the mirror’s Write Queue reaches a defined limit (WriteQueueHighWater or WriteQueueByteLimit reached). If BlockWritesOnLimitReached is “0”, the mirror is paused and a partial resync starts a short time later. If BlockWritesOnLimitReached is “1”, the incoming write is delayed until there is space on the write queue for it. The mirror remains in the Mirroring state, but the application throughput slows down to match the speed of the network and the remote node’s volume. After updating this registry value, execute the READREGISTRY command so that DataKeeper immediately starts using the new value. |
BlockWritesOnNDLGTimeoutReached *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\BlockWritesOnNDLGTimeoutReached |
||||||||
Name | Type | Default Data | ||||||
BlockWritesOnNDLGTimeoutReached | REG_DWORD | 1 | ||||||
This value determines how DataKeeper handles a timeout when setting a cluster TargetState value for a Synchronous mirror. To avoid potential data loss, DataKeeper will normally lock the volume and fail any outstanding writes when such a timeout is detected. This is the default behavior that occurs when this value is set to “1”. To prevent the volume from being locked, and writes from being failed, set this value to “0”. The node must be rebooted for the changed setting to take effect. Note: Setting this value to “0” introduces the possibility of application data loss and is not recommended. |
Compression Level †
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\CompressionLevel | ||||||||
Name | Type | Default Data | ||||||
CompressionLevel | REG_DWORD | 0 | ||||||
Specifies the compression level for the given mirror. Valid values are 0 to 9. Level 0 is “no compression”. Values from 1 to 9 specify increasingly CPU-intensive levels of compression. Compression level 1 is a “fast” compression – it does not require as much CPU time to compress the data, but results in larger (less compressed) network packets. Level 9 is the maximum amount of compression – it results in the smallest network packets but requires the most CPU time. The level can be set to somewhere in between, to balance CPU usage and network efficiency based on your system, network and workload. |
DontFlushAsyncQueue *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\DontFlushAsyncQueue | ||||||||
Name | Type | Default Data | ||||||
DontFlushAsyncQueue | REG_SZ | empty <drive letter>> [<drive letter>] | ||||||
Allows the user to specify a volume or volumes that should not flush their async queues when the driver receives a flush request. This value should contain the drive letter(s) of the volume(s) to which this applies. Drive letters may be adjacent to each other (i.e. XY), or space separated (i.e. X Y), with no colons. After updating this registry value, execute the READREGISTRY command so that DataKeeper immediately starts using the new value. (Note: When setting DontFlushAsyncQueue, data and database logs should be on the same partition.) |
ListenOnUnspecifiedIp *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\ListenOnUnspecifiedIp | ||||||||
Name | Type | Default Data | ||||||
ListenOnUnspecifiedIp | REG_DWORD | 0 (0×0) | ||||||
The default setting of 0 causes SIOS DataKeeper Target mirrors to listen for volume requests on a specific IP Address. This assists DataKeeper in detecting port conflicts. When set to non-zero the behavior can revert to Target mirrors listening on IP Address 0.0.0.0 which was the original behavior. Note: In order for any changes to take effect use the emcmd . READREGISTRY command or reboot the system. |
MaxResyncPasses *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\MaxResyncPasses | ||||||||
Name | Type | Default Data | ||||||
MaxResyncPasses | REG_DWORD | 200 (0xc8) | ||||||
Specifies the maximum number of resync passes before SIOS DataKeeper temporarily interrupts the resync process while there is constant write activity on the source volume. Resync will be automatically resumed after this interruption, typically after 60 seconds. In every pass, SIOS DataKeeper marks the volume blocks that were written to during the pass. In the next pass, it will send to the target only the marked blocks. Note: In order for any changes to take effect a system reboot is required. |
NotificationIconUpdateStatus *
Location:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\NotificationIconUpdateStatus | ||||||||
Name | Type | Default Data | ||||||
NotificationIconUpdateStatus | REG_SZ | true | ||||||
Allows the user to turn off status update checks performed by all instances of the DataKeeper Notification Icon on a machine. This value should contain either true or false. Disabling the Notification Icon via its context menu will set this entry to false. |
PingInterval *
Location:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\PingInterval | ||||||||
Name | Type | Default Data | ||||||
PingInterval | REG_DWORD | 3000 (0xBB8) | ||||||
Specifies the interval in milliseconds between pings. Use a higher value for Wide Area Networks (WANs) or unreliable networks. Along with the MaxPingMisses, you may customize them to adjust mirroring to the network performance. The keep-alive packet function is a feature the Source sends every 3 seconds by default for each mirror if there has not been any data transmitted. It keeps the pipe open and helps detect down systems / networks. DataKeeper does not change the mirror state due to a missed ping and doesn’t have much of an effect on mirroring activities. It is only from Source to Target. The default can be changed in the registry on the source system. |
ResyncBlockWritesTimeoutMs *†
Locations: For New Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\ResyncBlockWritesTimeoutMs AND For Existing Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\ResyncBlockWritesTimeoutMs Note: If editing this entry under Parameters, all NEW mirrors created will inherit this value. If editing this entry under {Target IP}, the value pertains to that target only. Any {Target IP} values override the global Parameter values. |
||||||||
Name | Type | Default Data | ||||||
ResyncBlockWritesTimeoutMs | REG_DWORD | 15000 (0×3a98) | ||||||
Specifies the maximum amount of time that DataKeeper will delay writes during resync. See the Extensive Write Considerations topic for more information. |
ResyncLowWater *†
Locations: For New Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\ResyncLowWater AND For Existing Mirrors: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\ResyncLowWater Note: If editing this entry under Parameters, all NEW mirrors created will inherit this value. If editing this entry under {Target IP}, the value pertains to that target only. Any {Target IP} values override the global Parameter values. |
||||||||
Name | Type | Default Data | ||||||
ResyncLowWater | REG_DWORD | 150 (0×96) | ||||||
Specifies the maximum number of dirty blocks that can remain during resync before DataKeeper delays writes to allow the resync to complete. See the Extensive Write Considerations topic for more information. |
ResyncReads *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\ResyncReads | ||||||||
Name | Type | Default Data | ||||||
ResyncReads | REG_DWORD | 20 (0×14) | ||||||
This value represents the maximum number of disk blocks that can be in the process of being read and sent to the target system during mirror resynchronization. Changing this value may change the speed of mirror resynchronizations. Note: This tunable applies to synchronous and asynchronous mirrors. |
SetSvcNullSessionPipes *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\SetSvcNullSessionPipes | ||||||||
Name | Type | Default Data | ||||||
SetSvcNullSessionPipes | REG_DWORD | 1 | ||||||
DataKeeper uses a Named Pipe named “DkSvcPipe” to communicate between system and between client programs and the DataKeeper service. This pipe is, by default, created with permission to allow Anonymous connections (i.e. it is added to the NullSessionPipes list). To remove DkSvcPipe from NullSessionPipes, change this value to “0”, and edit the registry value HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\NullSessionPipes – remove DkSvcPipe from the list of pipes that are found in that value. |
SnapshotLocation †
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\SnapshotLocation | ||||||||
Name | Type | Default Data | ||||||
SnapshotLocation | REG_SZ | <drive letter> | ||||||
Specifies the folder where the target snapshot file for this volume will be stored. |
TargetDispatchPort *
Locations: On Target System: On Source System Creating Mirror to Above Target: |
||||||||
Name | Type | Default Data | ||||||
TargetDispatchPort | REG_DWORD | 9999 | ||||||
There are two places where this should be set if you are changing the dispatch port from 9999. On the target system, place it in the ExtMirr\Parameters key. The new setting will apply to all existing and new targets on that server. A target reboot is required when the target Parameters key has been changed for this setting to take effect. On any source system that will be creating the mirror to this target, place it in the ExtMirr\Parameters\Targets\{Target IP} key if the mirror already exists. Create that key if it does not already exist. Note: Make sure the ports are the SAME on both the source and the target. A firewall port must also be opened manually on all source and target servers for the new dispatch port to work. |
TargetPortBase *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\TargetPortBase | ||||||||
Name | Type | Default Data | ||||||
TargetPortBase | REG_DWORD | 10000 | ||||||
Specifies the base TCP port number for target volume connections. This number may need to be adjusted if the default port is used by another service or is blocked by a firewall. The actual port that the target listens on is calculated as follows: Port = TargetPortBase + (Volume Letter – A:) For example: TargetPortBase = 10000 Volume Letter = H Port = 10000 + (H: -A:) = 10007 |
TargetPortIncr *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\TargetPortIncr | ||||||||
Name | Type | Default Data | ||||||
TargetPortIncr | REG_DWORD | 256 | ||||||
Specifies the increment to the base TCP port number. This is used only when a TCP port is found to be in use. For example, if the target is attempting to listen on port 10005 and that port is in use, it will retry listening on port 10005 + TargetPortIncr. |
TargetSnapshotBlocksize *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\TargetSnapshotBlocksize | ||||||||
Name | Type | Default Data | ||||||
TargetSnapshotBlocksize | REG_DWORD | None | ||||||
DataKeeper target snapshot uses a default block size of 64KB for all entries that are written to the snapshot file. This block size can be modified by creating this TargetSnapshotBlocksize registry key. The value should always be set to a multiple of the disk sector size, which is usually 512 bytes. Certain workloads and write patterns can benefit from changing the block size. For example, a volume that is written in a sequential stream of data (e.g. SQL Server log files) can benefit from a larger block size. A large block size results in fewer reads from the target volume when consecutive blocks are written. But a volume that is written in a random pattern may benefit from a smaller value or the default 64KB. A smaller block size will result in less snapshot file usage for random write requests. |
VssQuiesceWaitTimeoutMs *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\VssQuiesceWaitTimeoutMs | ||||||||
Name | Type | Default Data | ||||||
VssQuiesceWaitTimeoutMs | REG_DWORD | 60000 | ||||||
Specifies the amount of time (in milliseconds) the DataKeeper service will wait for a VSS Snapshot Source Initiate request to complete. The VSS Snapshot Source Initiate request uses VSS to quiesce the data on snapshotted volumes. |
WaitForBitmapBaseDirMs *
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\WaitForBitmapBaseDirMs |
||||||||
Name | Type | Default Data | ||||||
WaitForBitmapBaseDirMs | REG_DWORD | 180000 | ||||||
Specifies the amount of time after the system boots up that DataKeeper will wait for the volume specified in BitmapBaseDir to be registered with the Operating System. DataKeeper enforces a minimum wait of 60,000 ms – any value less than 60,000 will result in a 60,000 ms wait regardless of the setting. |
WriteQueueByteLimitMB †
Location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ExtMirr\Parameters\Volumes\{Volume GUID}\Targets\{Target IP}\WriteQueueByteLimitMB | ||||||||
Name | Type | Default Data | ||||||
WriteQueueByteLimitMB | REG_DWORD | 0 | ||||||
Specifies the maximum number of bytes that can be allocated for the write queue of this mirror (expressed in megabytes – multiples of 1048576 bytes). The value “0” means “no limit”. During periods of high disk write activity, if this mirror’s write queue grows to a level which reaches the WriteQueueByteLimitMB, the SIOS DataKeeper driver momentarily pauses the mirror, drains the queue and automatically starts a partial resync. After updating this registry value, execute the READREGISTRY command so that DataKeeper immediately starts using the new value. This value is used during transmission of volume data to the target, when the mirror is in the Mirroring state as well as when the mirror is in the Resync state. You should ensure that the ResyncReads value (see below), which specifies the number of 64KB (65536 byte) blocks that can be put on the Write Queue during resync, does not exceed the limit specified by WriteQueueByteLimitMB. Multiply ResyncReads by 65536, then divide by 1048576 – the resulting value must not exceed WriteQueueByteLimitMB if WriteQueueByteLimitMB is not set to 0. This value can be used in conjunction with WriteQueueHighWater (see below). If both limits are set to nonzero values, then the mirror will be paused if either of them is reached. If one is set to 0 and one is not, then the nonzero limit is the only one that is enforced. If both are set to 0, then the mirror’s write queue is not limited at all (this is not recommended – the WriteQueue uses Nonpaged memory). Note: This tunable applies to synchronous and asynchronous mirrors. You can monitor the mirroring behavior using the SIOS DataKeeper Performance Monitor counters – specifically the Queue Current Bytes value – and set this limit accordingly. |
WriteQueueHighWater * †
Locations: For New Mirrors: AND For Existing Mirrors: Note: If editing this entry under Parameters, all NEW mirrors created will inherit this value. If editing this entry under Target, the value pertains to that one Target only. Any Target values override Parameter values. |
||||||||
Name | Type | Default Data | ||||||
WriteQueueHighWater | REG_DWORD | 20000 (0×4e20) | ||||||
Specifies the maximum number of write requests – not the number of bytes – that can be stored in this mirror’s write queue, for asynchronous mirrors. The value “0” means “no limit”. This Registry works in conjunction with the BlockWritesOnLimitReached Registry Value. During periods of high disk write activity, if this mirror’s write queue length reaches this value, there are two possible outcomes. 1. BlockWritesOnLimitReached == 1 The SIOS Datakeeper driver will throttle write requests made by running applications and maintain a ‘Mirroring’ Status across the replicated volume. 2. BlockWritesOnLimitReached == 0 The SIOS DataKeeper driver momentarily pauses the mirror, drains the queue and automatically starts a partial resync. After updating this registry value, execute the This value is used during transmission of volume data to the target, when the mirror is in the Mirroring state as well as when the mirror is in the Resync state. You should ensure that the ResyncReads value (see below), which specifies the number of blocks that can be put on the Write Queue during resync, does not exceed the limit specified by WriteQueueHighWater if WriteQueueHighWater is not set to 0. This value can be used in conjunction with WriteQueueByteLimitMB. If both limits are set to nonzero values, then the mirror will be paused if either of them is reached. If one is set to 0 and one is not, then the nonzero limit is the only one that is enforced. If both are set to 0, then the mirror’s write queue is not limited at all (this is not recommended – the WriteQueue uses Nonpaged memory). Note: This tunable applies to only asynchronous mirrors, for synchronous mirrors, see WriteQueueHighWaterSynchronous. You can monitor the mirroring behavior using the SIOS DataKeeper Performance Monitor counters – specifically the Queue Current Length value – and set this limit accordingly. |
WriteQueueHighWaterSynchronous * †
Locations: For New Mirrors: AND For Existing Mirrors: Note: If editing this entry under Parameters, all NEW mirrors created will inherit this value. If editing this entry under Target, the value pertains to that one Target only. Any Target values override Parameter values. |
||||||||
Name | Type | Default Data | ||||||
WriteQueueHighWaterSynchronous | REG_DWORD | 1024 (0×0400) | ||||||
The WriteQueueHighWaterSynchronous tunable was introduced in DataKeeper version 8.10.0. It provides the same functionality as The WriteQueueHighWaterSynchronous specifies the maximum number of write requests – not the number of bytes – that can be stored in this mirror’s write queue on Synchronous Mirrors. The value “0” means “no limit”. During periods of high disk write activity, if this mirror’s write queue length reaches this value, the SIOS DataKeeper driver will throttle write requests made by running applications and maintain a ‘Mirroring’ Status on the replicated volume. After updating this registry value, execute the This value can be used in conjunction with WriteQueueByteLimitMB. If both limits are set to nonzero values, then the mirror will be paused if either of them are reached. If one is set to 0 and one is not, then the nonzero limit is the only one that is enforced. If both are set to 0, then the mirror’s write queue is not limited at all (this is not recommended – the WriteQueue uses Nonpaged memory). Note: You can monitor the mirroring behavior using the SIOS DataKeeper Performance Monitor counters – specifically the Queue Current Length value – and set this limit accordingly. |
Post your comment on this topic.