News, tips, partners, and perspectives for the Oracle Solaris operating system

  • April 30, 2018

Scheduled Pool Scrubs in Oracle Solaris ZFS

Cindy Swearingen
Principal Product Manager

Recommended best practices for protecting your data with ZFS include using ECC memory, configuring pool redundancy and hot spares, and always having current backups of critical data. Because storage devices can fail over time, pool scrubs are also recommended to identify and resolve data inconsistencies caused by failing devices or other issues. Additionally:

  • Data inconsistencies can occur over time. The earlier these issues are identified and resolved, overall data availability can be increased.
  • Disks with bad data blocks could be identified sooner during a routine pool scrub and can be resolved before the risk of multiple disk failures occur.

The Oracle Solaris 11.4 release includes a new pool property for scheduling a pool scrub and also introduces a read-only property for monitoring when the last pool scrub occurred.

On-going pool scrubs are recommended for routine pool maintenance. The general best practice is to either scrub once per month or per quarter for data center quality drives. This new feature enables you to more easily schedule routine pool scrubs.

If you install a new Solaris 11.4 system or upgrade your existing Solaris 11 system to Solaris 11.4, a new scrubinterval pool property is set to 30 days (1 month) by default. For example:

% zpool get scrubinterval export
export  scrubinterval  1m     default

If you have multiple pools on your system, the default scheduled scrub is staggered so not all scrubs begin at the same time.

You can specify your own scrubinterval in days, weeks, or months. If scrubinterval is set to manual, this feature is disabled.

The read-only lastscrub property identifies the start time of the last scrub as follows:

% zpool get lastscrub export
export  lastscrub  Apr_03  local

A pool scrub runs in the background and at a low priority. When a scrub is scheduled using this feature, a best effort is made not to impact an existing scrub or resilver operation and might be cancelled if these operations are already running.

Any running scrub (scheduled or manually started) can be cancelled by using the following command:

# zpool scrub -s tank
# zpool status tank
  pool: tank
 state: ONLINE
  scan: scrub canceled on Mon Apr 16 13:23:00 2018


        NAME                     STATE      READ WRITE CKSUM
        tank                     ONLINE        0     0     0
          mirror-0               ONLINE        0     0     0
            c3t2d0               ONLINE        0     0     0
            c4t2d0               ONLINE        0     0     0

errors: No known data errors

In summary, pool scrubs are an important part of routine pool maintenance to identify and repair any data inconsistencies. ZFS scheduled scrubs provide a way to automate pool scrubs in your environment.


Join the discussion

Comments ( 1 )
  • karthik Jupudi Wednesday, August 5, 2020
    Does Oracle provide best practices guide stating the recommended durations ? It is very hard to interpret the scrub requirements as there are mixed information for the best practices
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.