Date: Thu, 10 Jun 2010 11:53:24 +0200 From: Alexander Leidinger <Alexander@Leidinger.net> To: jhell <jhell@dataix.net> Cc: fs@freebsd.org Subject: Re: Do we want a periodic script for a zfs scrub? Message-ID: <20100610115324.10161biomkjndvy8@webmail.leidinger.net> In-Reply-To: <4C0FB1DE.9080508@dataix.net> References: <20100609162627.11355zjzwnf7nj8k@webmail.leidinger.net> <4C0FAE2A.7050103@dataix.net> <4C0FB1DE.9080508@dataix.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Quoting jhell <jhell@dataix.net> (from Wed, 09 Jun 2010 11:23:10 -0400): > On 06/09/2010 11:07, jhell wrote: >> On 06/09/2010 10:26, Alexander Leidinger wrote: >>> Hi, >>> >>> I noticed that we do not have an automatism to scrub a ZFS pool >>> periodically. Is there interest in something like this, or shall I keep >>> it local? >>> >>> Here's the main part of the monthly periodic script I quickly created: >>> ---snip--- >>> case "$monthly_scrub_zfs_enable" in >>> [Yy][Ee][Ss]) >>> echo >>> echo 'Scrubbing of zfs pools:' >>> >>> if [ -z "${monthly_scrub_zfs_pools}" ]; then >>> monthly_scrub_zfs_pools="$(zpool list -H -o name)" >>> fi >>> >>> for pool in ${monthly_scrub_zfs_pools}; do >>> # successful only if there is at least one pool to scrub >>> rc=0 >>> >>> echo " starting scrubbing of pool '${pool}'" >>> zpool scrub ${pool} >>> echo " consult 'zpool status ${pool}' for the result" >>> echo " or wait for the daily_status_zfs mail, if >>> enabled" >>> done >>> ;; >>> ---snip--- >>> >>> Bye, >>> Alexander. >>> >> >> Please add a check to see if any resilerving is being done on the pool >> that the scub is being executed on. (Just in case), I would hope that >> the scrub would fail silently in this case. >> >> Please also check whether a scrub is already running on one of the pools >> and if so & another pool exists start a background loop to wait for the >> first scrub to finish or die silently. >> >> I had a scrub fully restart from calling scrub a second time after being >> more than 50% complete, its frustrating. >> >> >> Thanks!, >> > > I should probably suggest one check that comes to mind. > > zpool history ${pool} | grep scrub | tail -1 |cut -f1 -d. > > Then compare the output with today's date to make sure today is >= 30 > days from the date of the last scrub. > > With the above this could be turned into a daily_zfs_scrub_enable with a > default daily_zfs_scrub_threshold="30" and ensuring that if one check is > missed it will not take another 30 days to run the check again. Good idea! I even found a command line which does the calculation for the number of days between "now" and the last run (not taking a leap year into account, but an off-by-one day error here does not matter). Bye, Alexander. -- "He's a businessman. I'll make him an offer he can't refuse." -- Vito Corleone, "Chapter 1", page 39 http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100610115324.10161biomkjndvy8>