MegaRAID Patrol read periodically verifies all sectors(including system reserved area) of drives including hot spare connected to a controller. The goal is to protect data integrity by detecting drive failure before the failure can damage data. The corrective actions depend on the drive group configuration and the type of errors.
Patrol read starts only when the controller is idle for a defined period of time and no other background tasks are active, though it can continue to run during heavy I/O processes.
Note: A patrol read is initiated only when the controller is idle for a defined time period and has no other background activities, such as Background initialization, rebuilding, consistency check etc..
Read Patrol is an adaptive process that runs as a background operation on the MegaRAID controller. It is adaptive, so that during periods of high disk access by the host applications, read patrol activity is lessened, and thus does not interfere with the applications.
During periods of lesser disk accesses by host applications, the read patrol activity can be increased. The purpose is to make sure that all stripes of a logical drive are read within a reasonable period of time, thus trying to ensure that the user's data is available when needed. This process causes the drives to read the data by issuing read-verify commands. By using the read-verify command, the data from the drives is not transferred to the MegaRAID adapter unless an error is detected and reported by one or more drives included in the stripe. If a single drive reports an error within the stripe, the read patrol function initiates read commands to all the other stripe unit drives and the data for this single failing stripe unit is recreated by the MegaRAID adapter from the remaining data and parity stripe units.
After recreating this data, the adapter then issues a write-verify command to the drive that reported the error on the read-verify command and writes this recreated portion of the stripe to that drive. After this write completes successfully, this is now a known good stripe, and read patrol can continue with the next stripe. In the event that two or more drives report errors during the read-verify portion of the read patrol, the failing stripe will be added to the Bad Stripe Table.
Below are some Patrol read related command examples: you can also read MegaRAID Patrol read and consistency check
Set Patrol Read Options
# MegaCli –AdpPR –Dsbl|EnblAuto|EnblMan|Start|Stop|Info -aN|-a0,1,2|-aALL
Description Sets Patrol Read options on a single controller, multiple controllers, or all controllers:
-Dsbl: Disables Patrol Read for the selected controller(s).
-EnblAuto: Enables Patrol Read automatically for the selected controller(s). This means Patrol Read will start automatically after the controller initialization is complete.
-EnblMan: Enables Patrol Read manually for the selected controller(s). This means that Patrol Read does not start automatically; it has to be started manually by selecting the Start command.
-Start: Starts Patrol Read for the selected controller(s).
-Stop: Stops Patrol Read for the selected controller(s).
-Info: Displays the following Patrol Read information for the selected controller(s):
• Patrol Read operation mode
• Patrol Read execution delay value
• Patrol Read status
Patrol read info output example
# MegaCli64 -AdpPR -Info -aALL
Adapter 0: Patrol Read Information:
Patrol Read Mode: Auto
Patrol Read Execution Delay: 168 hours
Number of iterations completed: 120
Current State: Stopped
Patrol Read on SSD Devices: Disabled
Patrol read related command examples
You can find more MegaCli useful commands with examples, here just few Patrol Read examples
To enable automatic patrol read:
# MegaCli64 -AdpPR -EnblAuto -aALL
To reduce patrol read resource usage to 2% in order to minimize the performance impact:
# MegaCli64 -AdpSetProp PatrolReadRate 2 -aALL
To correct media error during patrol read
# MegaCli -AdpSetProp -PrCorrectUncfgdAreas -1 -aALL
To start a manual patrol read scan:
# MegaCli64 -AdpPR -Start -aALL
To stop a patrol read scan:
# MegaCli64 -AdpPR -Stop -aALL
Set Patrol Read Delay Interval
# MegaCli –AdpPRSetDelay 720 -aALL ##702 hours, 30 days
Description Sets the time between Patrol Read iterations on a single controller,
The value is time of delay in hours. A value of zero means no delay and an immediate restart.
To see information about the patrol read state and the delay between patrol read runs:
# MegaCli64 -AdpPR -Info -aALL
To find out the current patrol read rate, execute
# MegaCli64 -AdpGetProp PatrolReadRate -aALL
To disable automatic patrol read:
# MegaCli64 -AdpPR -Dsbl -aALL