It is a recommended best practice to disable write cache before performing any scheduled SP hardware maintenance activity. This is to avoid any potential impact in the unlikely event of a secondary issue occurring on the peer SP while performing the maintenance activity.
An SP hardware maintenance activity is defined as any replacement of any of the following list of parts:
Part |
DIMM |
SFP |
SP |
BBU |
I/O Module |
M.2 SATA |
DPE Chassis |
Fan |
Mezzanine |
DPE PSU - Power Supply Unit |
Also, the following activities are also considered to be affected hardware maintenance activities for which disabling write cache is recommended:
Activity |
Data-In Place (DIP) Upgrades |
TSEs should review and follow the work order creation instructions in the Internal Notes of this Dell Knowledge Base article.
The
svc_cache command has been updated to include three new switches: --get, --disable, and --enable. This update must be loaded on to your Unity system by Dell Technical Support or your Authorized Service Provider. This is a benefit to allow the cache updates to be done without the need for a root shell, and engaging a higher level of support.
Update:
The svc_cache command update is now bundled in Unity OE release 5.2 and above. This eliminates the need for the manual installation, once the Unity array is upgraded to an updated OE code.
The steps outlined below apply to Unity OS 5.3 and lower. Write cache is automatically disabled when an SP is placed into service mode on Unity arrays running OS 5.4 and greater.
NOTE:
Depending on the browser used, the font may distort the -- (double hyphen) in the commands, especially the bolded lines.
After the
svc_cache command, the parameter is preceded by a -- (double hyphen) not a single - .
If the bolded commands are copied to a notepad from this KB, the double hyphen is more defined.
The new commands are listed here and explained in more detail below:
svc_cache --force-enableCacheOperations
svc_cache --get
svc_cache --disable
svc_cache --enable
svc_cache --disableCacheOperations
DETERMINING IF THE UPDATED svc_cache COMMAND IS ALREADY INSTALLED
If you run one of the new commands, you can determine whether the package is installed. It responds differently depending on whether the svc_cache command has already been extended with the new commands. To test this, we use the
svc_cache --get command.
If the package is not yet installed:
Running the
svc_cache --get command returns the
usage of the command:
19:44:58 service@APM00123456789 spa:~/user# svc_cache --get
This script displays and clears the Cache Dirty or Cache Lost LUNs(CDCA) on this system.
Usage: svc_cache [<qualifiers>]
If this occurs, contact Dell Technical Support or your Authorized Service Provider, and quote this Dell Knowledge Base article ID.
If the package is installed:
Running the svc_cache --get command will either show an error, or will display cache status, depending on whether the commands have been unlocked.
- If the package is installed but the commands have not been enabled, the system returns an error:
19:44:58 service@APM00123456789 spa:~/user# svc_cache --get
--- ERROR: This option can only be used after enabling cache operations.
If this occurs, you must activate the commands using the following command:
svc_cache --force-enableCacheOperations
- If the package is installed and the command set has been enabled, the svc_cache --get command returns cache status as expected. Continue on to Disable Write Cache in the next step.
DISABLE WRITE CACHE:
- Get the state of write cache: svc_cache --get (State 3 is enabled, state 7 is disabling or unknown, state 8 is disabled).
- Disable write cache: svc_cache --disable (The command only has to run on one SP to disable cache on both SPs).
- Confirm write cache is disabled: svc_cache --get
Write Cache State: 3 (enabled)
Write Cache State: 7 (unknown)
Write Cache State: 8 (disabled)
See more detailed example outputs in the Additional Notes section.
The goal is to get to a state of 8 (disabled). If the output of svc_cache
--get is a state of 7, this means that the dirty pages are still flushing. Rerun the
svc_cache --get cmd again until the state is 8 (disabled).
If the disabling is taking some time, you can also use metrics to watch and ensure that all dirty cache pages are flushing or flushed:
Once the
svc_cache --get shows state 8, or dirty pages show 0, you may proceed with your activity.
When both SPs are back online:
ENABLE WRITE CACHE:
- Get the status of write cache: svc_cache --get (State 3 is enabled, state 7 is disabling or unknown, status 8 is disabled).
- Enable write cache: svc_cache --enable (The command only has to be run on one SP to enable cache on both SPs)
- Confirm write cache is enabled: svc_cache --get (Status 3 is enabled).
Finally, when you are concluded with your activity, you should disable the write cache commands:
svc_cache --disableCacheOperations
Example Outputs:
svc_cache --get showing that the command set has not been installed:
19:44:58 service@APM00123456789 spa:~/user# svc_cache --get
This script displays and clears the Cache Dirty or Cache Lost LUNs(CDCA) on this system.
Usage: svc_cache [<qualifiers>]
svc_cache --get showing that the command set has not been enabled:
19:44:58 service@APM00123456789 spa:~/user# svc_cache --get
--- ERROR: This option can only be used after enabling cache operations.
If this occurs, you must activate the commands using the following command:
svc_cache --force-enableCacheOperations
svc_cache --get showing write cache enabled:
16:28:43 service@APM00123456789 spa:~/user# svc_cache --get
execute sptool -i
sptool -i output: SPA
current SP-A, other SP-B
execute: c4admintool -c get_cache
Get Cache Info.
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
System Cache Information
Write Cache State: 3 (enabled)
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
System Cache Information
Write Cache State: 3 (enabled)
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
** c4admintool_main: exit CSX_STATUS_SUCCESS
16:28:48 service@APM00123456789 spa:~/user#
svc_cache --get showing write cache is disabled:
16:29:00 service@APM00123456789 spa:~/user# svc_cache --get
execute sptool -i
sptool -i output: SPA
current SP-A, other SP-B
execute: c4admintool -c get_cache
Get Cache Info.
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
System Cache Information
Write Cache State: 8 (disabled)
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
System Cache Information
Write Cache State: 8 (disabled)
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
** c4admintool_main: exit CSX_STATUS_SUCCESS
16:31:30 service@APM00123456789 spa:~/user#
svc_cache --disable:
16:28:48 service@APM00123456789 spa:~/user# svc_cache --disable
execute sptool -i
sptool -i output: SPA
current SP-A, other SP-B
execute: c4admintool -c set_cache -o disable -t write
currentArg 3 argc 7
currentArg 3 argc 7
Set Write Cache Disabled SP A(0).
#:2022-03-04 16:29:00.035 GMT :U:( 1:1):00007f7168fd0280:25459:Unknown:: TLDflarecons:TLDconfig.cpp :09584=>TLDconfig_SetCacheBuildTree Enable 0, Type 2, SP = 0
#:2022-03-04 16:29:00.035 GMT :U:( 1:1):00007f7168fd0280:25459:Unknown:: TLDconfig: :TLDconfig.cpp :09592=>Set cache state to disabled - 8
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
c4admintool: -TAG_REQUEST(0x10016)
c4admintool: --TAG_OPERATION(0x10017)
<snip>
c4admintool: -------TAG_WRITE_CACHE(0x102ca)
c4admintool: --------TAG_STATE(0x10079) - 8
** c4admintool_main: exit CSX_STATUS_SUCCESS
16:29:00 service@APM00123456789 spa:~/user#
svc_cache --enable:
16:32:43 service@APM00123456789 spa:~/user# svc_cache --enable
execute sptool -i
sptool -i output: SPA
current SP-A, other SP-B
execute: c4admintool -c set_cache -o enable -t write
currentArg 3 argc 7
currentArg 3 argc 7
Set Write Cache Enabled SP A(0).
#:2022-03-04 16:32:47.905 GMT :U:( 0:1):00007f8011b49280:09830:Unknown:: TLDflarecons:TLDconfig.cpp :09584=>TLDconfig_SetCacheBuildTree Enable 1, Type 2, SP = 0
#:2022-03-04 16:32:47.905 GMT :U:( 0:1):00007f8011b49280:09830:Unknown:: TLDconfig: :TLDconfig.cpp :09589=>Set cache state to enabled - 3
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
c4admintool: -TAG_REQUEST(0x10016)
c4admintool: --TAG_OPERATION(0x10017)
<snip>
c4admintool: -------TAG_WRITE_CACHE(0x102ca)
c4admintool: --------TAG_STATE(0x10079) - 3
** c4admintool_main: exit CSX_STATUS_SUCCESS
16:32:48 service@APM00123456789 spa:~/user#
svc_cache --get showing write cache enabled:
16:33:43 service@APM00123456789 spa:~/user# svc_cache --get
execute sptool -i
sptool -i output: SPA
current SP-A, other SP-B
execute: c4admintool -c get_cache
Get Cache Info.
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
System Cache Information
Write Cache State: 3 (enabled)
SP WWID: wwn = 06:00:00:00:05:00:00:00:00:00:00:00:00:00:00:02
System Cache Information
Write Cache State: 3 (enabled)
SP WWID: wwn = 06:00:00:00:05:00:00:00:01:00:00:01:01:00:00:02
** c4admintool_main: exit CSX_STATUS_SUCCESS
16:33:48 service@APM00123456789 spa:~/user#