DataKeeper runs chkdsk on all mirrored volumes prior to the volume being available for use. There is a numeric Cluster Property named DiskRunChkDsk associated with each DataKeeper Volume resource created. DataKeeper now creates a new flag DiskRunChkDsk in Windows Failover Clustering for each DataKeeper volume. This cluster property determines how chkdsk runs on each volume during disk check operations.
Additional Information about DiskRunChkDsk:
- When DiskRunChkDsk has a value of 0, it means chkdsk is enabled and the entire volume will be checked. It is set to a value of 0 by DEFAULT.
- When DiskRunChkDsk has a value of 4, it means chkdsk is skipped for the entire volume.
The volume command performed depends on the argument located in the DiskRunChkDsk cluster property for each DataKeeper volume. The location of this cluster property is in the registry here: HKEY_LOCAL_MACHINE/Cluster/Resources/{DataKeeper Volume GUID}/Parameters.
The complete list of values are numeric and are documented in the Microsoft article http://msdn.microsoft.com/en-us/library/windows/desktop/bb309232(v=vs.85).aspx
Running chkdsk before a volume is brought online is recommended to ensure that the volume is healthy.
To view, change, or set the cluster property value:
- Launch an Administrator/elevated Powershell prompt
- List all of the Clustered Resources by executing the following:
- Get-ClusterResource
To view the initial value:
Once the DataKeeper volume <Drive Letter> has been identified, execute the following:
- Get-ClusterResource -name DataKeeper Volume <Drive Letter> | Get-ClusterParameter (type exactly as the Get-ClusterResource output reflects)
- (DiskRunChkDsk parameter is shown in the output.)
To change the value:
Execute the following:
- Get-ClusterResource name DataKeeper Volume <Drive Letter> | Set-ClusterParameter DiskRunChkDsk <value> (chkdsk on = 0, chkdsk off = 4)
How to Manually Run chkdsk on a Large volume:
First be sure to set the value of the cluster property to “4” if you want to bring the volume online without having to do chkdsk. Then you would:
- Pause all mirrors using the GUI “Pause and unlock mirrors”
- Run chkdsk manually (chkdsk /f <drv>:)
- Dismount when/if chkdsk asks if you want to dismount
- When chkdsk completes, Continue and lock mirrors
- Change DiskRunChkDsk back to 0 if you want DK to automatically chkdsk, or leave it set to 4 if you don’t
It is highly recommended to change the flag on all nodes in such circumstances. Please refer to the Microsoft blog on this specific issue http://blogs.technet.com/b/askcore/archive/2012/03/05/understanding-diskskipchkdsk-in-2008.aspx
The following messages will be logged in the Application Event log:
Message that disk is being checked
Event ID 101: Checking the dirty flag on volume <volume>
Message that volume is dirty and needs to be checked
Event ID 102: Volume <volume> dirty flags is <error number>
Message that an error occurred during volume online
Event ID 80: A failure occurred during the check of volume <volume>. Error: <error number>. The volume <volume> may be marked as failed.
Post your comment on this topic.