Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SMARTD(8)			  2011-10-20			     SMARTD(8)

       smartd -	SMART Disk Monitoring Daemon

       smartd [options]


       smartmontools-5.42 2011-10-20 r3458

       [This  man  page	is generated for the FreeBSD version of	smartmontools.
       It does not contain info	specific to other platforms.]

       smartd is a daemon that monitors	the Self-Monitoring, Analysis and  Re-
       porting	Technology (SMART) system built	into many ATA-3	and later ATA,
       IDE and SCSI-3 hard drives. The purpose of SMART	is to monitor the  re-
       liability  of  the  hard	drive and predict drive	failures, and to carry
       out different types of drive self-tests.	 This  version	of  smartd  is
       compatible  with	 ATA/ATAPI-7 and earlier standards (see	REFERENCES be-

       smartd will attempt to enable SMART monitoring on ATA devices  (equiva-
       lent  to	smartctl -s on)	and polls these	and SCSI devices every 30 min-
       utes (configurable), logging SMART errors  and  changes	of  SMART  At-
       tributes	via the	SYSLOG interface.  The default location	for these SYS-
       LOG  notifications  and	 warnings   is	 system-dependent   (typically
       /var/log/messages  or  /var/log/syslog).	  To change this default loca-
       tion, please see	the '-l' command-line option described below.

       In addition to logging to a file, smartd	can also be configured to send
       email  warnings	if  problems are detected.  Depending upon the type of
       problem,	you may	want to	run self-tests on the disk, back up the	 disk,
       replace the disk, or use	a manufacturer's utility to force reallocation
       of bad or unreadable disk sectors.   If	disk  problems	are  detected,
       please  see the smartctl	manual page and	the smartmontools web page/FAQ
       for further guidance.

       If you send a USR1 signal to smartd it will immediately check the  sta-
       tus  of	the  disks, and	then return to polling the disks every 30 min-
       utes. See the '-i' option below for additional details.

       smartd can be configured	 at  start-up  using  the  configuration  file
       /usr/local/etc/smartd.conf  (Windows: EXEDIR/smartd.conf).  If the con-
       figuration file is subsequently modified, smartd	can be told to re-read
       the configuration file by sending it a HUP signal, for example with the
       killall -HUP smartd.

       On startup, if smartd finds a syntax error in the  configuration	 file,
       it  will	print an error message and then	exit. However if smartd	is al-
       ready running, then is told with	a HUP signal to	re-read	the configura-
       tion  file, and then find a syntax error	in this	file, it will print an
       error message and then continue,	ignoring the contents of the  (faulty)
       configuration file, as if the HUP signal	had never been received.

       When  smartd  is	running	in debug mode, the INT signal (normally	gener-
       ated from a shell with CONTROL-C) is treated in the same	way as	a  HUP
       signal:	it  makes smartd reload	its configuration file.	To exit	smartd
       use CONTROL-\

       On  startup,  in	 the  absence  of  the	configuration  file   /usr/lo-
       cal/etc/smartd.conf, the	smartd daemon first scans for all devices that
       support SMART.  The scanning is done as follows:

       FREEBSD:	Authoritative list of disk devices is obtained from SCSI (CAM)
		and ATA	subsystems.

       smartd  then  monitors  for all possible	SMART errors (corresponding to
       the '-a'	Directive in the configuration file;  see  CONFIGURATION  FILE

       -A PREFIX, --attributelog=PREFIX
	      [ATA  only]  Writes smartd attribute information (normalized and
	      raw attribute values) to	files  'PREFIX''MODEL-SERIAL.ata.csv'.
	      At each check cycle attributes are logged	as a line of semicolon
	      separated	triplets  of  the  form	 "attribute-ID;attribute-norm-
	      value;attribute-raw-value;".   Each line is led by a date	string
	      of the form "yyyy-mm-dd HH:MM:SS"	(in UTC).

	      MODEL and	SERIAL are build from drive identify information,  in-
	      valid characters are replaced by underline.

	      If    the	   PREFIX    has    the	   form	  '/path/dir/'	 (e.g.
	      '/var/lib/smartd/'), then	files 'MODEL-SERIAL.ata.csv' are  cre-
	      ated  in	directory  '/path/dir'.	  If  the  PREFIX has the form
	      '/path/name' (e.g. '/var/lib/misc/attrlog-'), then files 'nameM-
	      ODEL-SERIAL.ata.csv'  are	 created  in  directory	'/path/'.  The
	      path must	be absolute, except if debug mode is enabled.

       -B [+]FILE, --drivedb=[+]FILE
	      [ATA only] Read the drive	database from FILE.  The new  database
	      replaces the built in database by	default.  If '+' is specified,
	      then the new entries prepend the built in	entries.   Please  see
	      the smartctl(8) man page for further details.

       -c FILE,	--configfile=FILE
	      Read  smartd configuration Directives from FILE, instead of from
	      the  default   location	/usr/local/etc/smartd.conf   (Windows:
	      EXEDIR/smartd.conf).   If	 FILE does not exist, then smartd will
	      print an error message and exit with nonzero status.  Thus,  '-c
	      /usr/local/etc/smartd.conf'  can be used to verify the existence
	      of the default configuration file.

	      By using '-' for FILE, the configuration is read	from  standard
	      input. This is useful for	commands like:
	      echo /dev/hdb -m user@home -M test | smartd -c - -q onecheck
	      to perform quick and simple checks without a configuration file.

       -d, --debug
	      Runs  smartd  in	"debug"	mode. In this mode, it displays	status
	      information to STDOUT rather than	logging	it to SYSLOG and  does
	      not  fork(2) into	the background and detach from the controlling
	      terminal.	 In this mode, smartd also prints more verbose	infor-
	      mation  about  what  it is doing than when operating in "daemon"
	      mode. In this mode, the QUIT signal (normally generated  from  a
	      terminal	with  CONTROL-C) makes smartd reload its configuration
	      file.  Please use	CONTROL-\ to exit

       -D, --showdirectives
	      Prints a list (to	STDOUT)	of all the possible  Directives	 which
	      may appear in the	configuration file /usr/local/etc/smartd.conf,
	      and then exits.  These Directives	are also  described  later  in
	      this man page. They may appear in	the configuration file follow-
	      ing the device name.

       -h, --help, --usage
	      Prints usage message to STDOUT and exits.

       -i N, --interval=N
	      Sets the interval	between	disk checks to N seconds, where	N is a
	      decimal integer.	The minimum allowed value is ten and the maxi-
	      mum is the largest positive integer that can be  represented  on
	      your system (often 2^31-1).  The default is 1800 seconds.

	      Note  that the superuser can make	smartd check the status	of the
	      disks at any time	by sending it the SIGUSR1 signal, for  example
	      with the command:
	      kill -SIGUSR1 <pid>
	      where  <pid>  is	the process id number of smartd.  One may also
	      killall -USR1 smartd
	      for the same purpose.

       -l FACILITY, --logfacility=FACILITY
	      Uses syslog facility FACILITY to log the messages	 from  smartd.
	      Here  FACILITY  is one of	local0,	local1,	..., local7, or	daemon
	      [default].  If this command-line option is not used, then	by de-
	      fault messages from smartd are logged to the facility daemon.

	      If you would like	to have	smartd messages	logged somewhere other
	      than the default location, this can  typically  be  accomplished
	      with (for	example) the following steps:

	      [1] Modify  the  script that starts smartd to include the	smartd
		  command-line argument	'-l local3'.  This tells smartd	to log
		  its messages to facility local3.

	      [2] Modify  the  syslogd configuration file (typically /etc/sys-
		  log.conf) by adding a	line of	the form:
		  local3.* /var/log/smartd.log
		  This tells syslogd to	log all	the messages from facility lo-
		  cal3 to the designated file: /var/log/smartd.log.

	      [3] Tell syslogd to re-read its configuration file, typically by
		  sending the syslogd process a	SIGHUP hang-up signal.

	      [4] Start	(or restart) the smartd	daemon.

	      For more detailed	information, please refer to the man pages for
	      syslog.conf,  syslogd,  and syslog.  You may also	want to	modify
	      the log rotation configuration files;  see  the  man  pages  for
	      logrotate	and examine your system's /etc/logrotate.conf file.

       -n, --no-fork
	      Do  not  fork into background; this is useful when executed from
	      modern init methods like initng, minit or	supervise.

       -p NAME,	--pidfile=NAME
	      Writes pidfile NAME containing  the  smartd  Process  ID	number
	      (PID).   To  avoid  symlink  attacks  make sure the directory to
	      which pidfile is written is only	writable  for  root.   Without
	      this  option,  or	if the --debug option is given,	no PID file is
	      written on startup.  If smartd is	killed with a maskable	signal
	      then the pidfile is removed.

       -q WHEN,	--quit=WHEN
	      Specifies	 when,	if  ever, smartd should	exit.  The valid argu-
	      ments are	to this	option are:

	      nodev - Exit if there are	no devices to monitor, or if  any  er-
	      rors  are	 found	at startup in the configuration	file.  This is
	      the default.

	      errors - Exit if there are no devices to monitor,	or if any  er-
	      rors    are   found   in	 the   configuration   file   /usr/lo-
	      cal/etc/smartd.conf at startup or	whenever it is reloaded.

	      nodevstartup - Exit if  there  are  no  devices  to  monitor  at
	      startup.	 But  continue to run if no devices are	found whenever
	      the configuration	file is	reloaded.

	      never - Only exit	if a fatal error occurs	(no  remaining	system
	      memory,  invalid	command	line arguments). In this mode, even if
	      there are	no devices to monitor, or if  the  configuration  file
	      /usr/local/etc/smartd.conf  has  errors, smartd will continue to
	      run, waiting to load a configuration file	listing	valid devices.

	      onecheck - Start smartd in debug mode,  then  register  devices,
	      then  check  device's SMART status once, and then	exit with zero
	      exit status if all of these steps	worked correctly.

	      This last	option is intended for 'distribution-writers' who want
	      to create	automated scripts to determine whether or not to auto-
	      matically	start up smartd	after installing smartmontools.	 After
	      starting	smartd	with  this  command-line option, the distribu-
	      tion's install scripts should wait a reasonable length  of  time
	      (say ten seconds).  If smartd has	not exited with	zero status by
	      that time, the script should send	smartd a  SIGTERM  or  SIGKILL
	      and  assume  that	smartd will not	operate	correctly on the host.
	      Conversely, if smartd exits with zero status, then it is safe to
	      run smartd in normal daemon mode.	If smartd is unable to monitor
	      any devices or encounters	other problems	then  it  will	return
	      with non-zero exit status.

	      showtests	 -  Start smartd in debug mode,	then register devices,
	      then write a list	of future scheduled self tests to stdout,  and
	      then  exit  with	zero  exit status if all of these steps	worked
	      correctly.  Device's SMART status	is not checked.

	      This option is intended to test whether the  '-s	REGEX'	direc-
	      tives  in	 smartd.conf  will have	the desired effect. The	output
	      lists the	next test schedules, limited to	5 tests	per  type  and
	      device.  This  is	followed by a summary of all tests of each de-
	      vice within the next 90 days.

       -r TYPE,	--report=TYPE
	      Intended primarily to help smartmontools	developers  understand
	      the  behavior  of	smartmontools on non-conforming	or poorly-con-
	      forming hardware.	 This option reports details of	smartd	trans-
	      actions with the device.	The option can be used multiple	times.
	      When used	just once, it shows a record of	the  ioctl()  transac-
	      tions  with the device.  When used more than once, the detail of
	      these ioctl() transactions are reported in greater detail.   The
	      valid arguments to this option are:

	      ioctl - report all ioctl() transactions.

	      ataioctl - report	only ioctl() transactions with ATA devices.

	      scsiioctl	- report only ioctl() transactions with	SCSI devices.

	      Any argument may include a positive integer to specify the level
	      of detail	that should be reported.  The argument should be  fol-
	      lowed  by	a comma	then the integer with no spaces.  For example,
	      ataioctl,2 The default level is 1, so '-r	 ataioctl,1'  and  '-r
	      ataioctl'	are equivalent.

       -s PREFIX, --savestates=PREFIX
	      [ATA  only]  Reads/writes	smartd state information from/to files
	      'PREFIX''MODEL-SERIAL.ata.state'.	 This  preserves   SMART   at-
	      tributes,	 drive	min  and max temperatures (-W directive), info
	      about last sent warning email (-m	directive), and	 the  time  of
	      next  check  of  the self-test REGEXP (-s	directive) across boot

	      MODEL and	SERIAL are build from drive identify information,  in-
	      valid characters are replaced by underline.

	      If    the	   PREFIX    has    the	   form	  '/path/dir/'	 (e.g.
	      '/var/lib/smartd/'),  then  files	 'MODEL-SERIAL.ata.state'  are
	      created  in  directory  '/path/dir'.  If the PREFIX has the form
	      '/path/name' (e.g. '/var/lib/misc/smartd-'), then	files 'nameMO-
	      DEL-SERIAL.ata.state'  are  created  in directory	'/path/'.  The
	      path must	be absolute, except if debug mode is enabled.

	      The state	information files are  read  on	 smartd	 startup.  The
	      files  are  always  (re)written  after reading the configuration
	      file, before rereading the configuration file  (SIGHUP),	before
	      smartd  shutdown,	 and  after a check forced by SIGUSR1. After a
	      normal check cycle, a file is only  rewritten  if	 an  important
	      change (which usually results in a SYSLOG	output)	occurred.

       -V, --version, --license, --copyright
	      Prints  version,	copyright, license, home page and SVN revision
	      information for your copy	of smartd to STDOUT  and  then	exits.
	      Please  include  this  information  if you are reporting bugs or

       Runs the	daemon in forked mode. This is the normal way to  run  smartd.
       Entries are logged to SYSLOG.

       smartd -d -i 30
       Run  in foreground (debug) mode,	checking the disk status every 30 sec-

       smartd -q onecheck
       Registers devices, and checks the status	of the devices	exactly	 once.
       The  exit status	(the bash $?  variable)	will be	zero if	all went well,
       and nonzero if no devices were detected or some other problem  was  en-

       Note   that  smartmontools  provides  a	start-up  script  in  /usr/lo-
       cal/etc/rc.d/smartd which is responsible	for starting and stopping  the
       daemon via the normal init interface.  Using this script, you can start
       smartd by giving	the command:
       /usr/local/etc/rc.d/smartd start
       and stop	it by using the	command:
       /usr/local/etc/rc.d/smartd stop

       The syntax of the smartd.conf(5)	file is	discussed separately.

       smartd will make	log entries at loglevel	 LOG_INFO  if  the  Normalized
       SMART  Attribute	values have changed, as	reported using the '-t', '-p',
       or '-u' Directives. For example:
       'Device:	/dev/hda, SMART	Attribute: 194 Temperature_Celsius changed from	94 to 93'
       Note that in this message, the value given is the 'Normalized' not  the
       'Raw'  Attribute	 value	(the disk temperature in this case is about 22
       Celsius).  The '-R' and '-r' Directives modify this behavior,  so  that
       the information is printed with the Raw values as well, for example:
       'Device:	/dev/hda, SMART	Attribute: 194 Temperature_Celsius changed from	94 [Raw	22] to 93 [Raw 23]'
       Here  the  Raw values are the actual disk temperatures in Celsius.  The
       way in which the	Raw values are printed,	and the	names under which  the
       Attributes  are	reported,  is governed by the various '-v Num,Descrip-
       tion' Directives	described previously.

       Please see the smartctl manual page for further explanation of the dif-
       ferences	between	Normalized and Raw Attribute values.

       smartd  will make log entries at	loglevel LOG_CRIT if a SMART Attribute
       has failed, for example:
       'Device:	/dev/hdc, Failed SMART Attribute: 5 Reallocated_Sector_Ct'
	This loglevel  is  used	 for  reporting	 enabled  by  the  '-H',  -f',
       '-l selftest',  and '-l error' Directives. Entries reporting failure of
       SMART Prefailure	Attributes should not be ignored: they mean  that  the
       disk is failing.	 Use the smartctl utility to investigate.

       When smartd makes log entries, these are	time-stamped.  The time	stamps
       are in the computer's local time	zone, which is generally set using ei-
       ther  the  environment  variable	'TZ' or	using a	time-zone file such as
       /etc/localtime.	You may	wish to	change the timezone  while  smartd  is
       running	(for  example,	if  you	 carry a laptop	to a new time-zone and
       don't reboot it).  Due to a bug in the tzset(3) function	of  many  unix
       standard	 C libraries, the time-zone stamps of smartd might not change.
       For some	systems, smartd	will work around this problem if the time-zone
       is  set using /etc/localtime. The work-around fails if the time-zone is
       set using the 'TZ' variable (or a file that it points to).

       The return value	(exit status) of smartd	can have the following values:

       0:     Daemon startup successful, or smartd was killed by a SIGTERM (or
	      in debug mode, a SIGQUIT).

       1:     Commandline did not parse.

       2:     There was	a syntax error in the config file.

       3:     Forking the daemon failed.

       4:     Couldn't create PID file.

       5:     Config  file  does  not exist (only returned in conjunction with
	      the '-c' option).

       6:     Config file exists, but cannot be	read.

       8:     smartd ran out of	memory during startup.

       9:     A	compile	time constant of smartd	was too	small.	 This  can  be
	      caused by	an excessive number of disks, or by lines in  /usr/lo-
	      cal/etc/smartd.conf that are too long.  Please report this prob-
	      lem to

       10     An inconsistency was found in smartd's internal data structures.
	      This should never	happen.	 It must be due	to either a coding  or
	      compiler bug.  Please report such	failures to smartmontools-sup-

       16:    A	device explicitly listed in  /usr/local/etc/smartd.conf	 can't
	      be monitored.

       17:    smartd didn't find any devices to	monitor.

       254:   When in daemon mode, smartd received a SIGINT or SIGQUIT.	 (Note
	      that in debug mode, SIGINT has the same effect  as  SIGHUP,  and
	      makes smartd reload its configuration file. SIGQUIT has the same
	      effect as	SIGTERM	and causes smartd to exit with zero exit  sta-

       132 and above
	      smartd  was  killed  by  a  signal that is not explicitly	listed
	      above.  The exit status is then 128 plus the signal number.  For
	      example  if smartd is killed by SIGKILL (signal 9) then the exit
	      status is	137.

       Bruce Allen
       University of Wisconsin - Milwaukee Physics Department

       The following have made large contributions to smartmontools:
       Casper Dik (Solaris SCSI	interface)
       Christian Franke	(Windows interface, C++	redesign, USB support, ...)
       Douglas Gilbert (SCSI subsystem)
       Guido Guenther (Autoconf/Automake packaging)
       Geoffrey	Keating	(Darwin	ATA interface)
       Eduard Martinescu (FreeBSD interface)
       Fr'ed'eric	L. W. Meunier (Web site	and Mailing list)
       Gabriele	Pohl (Web site and Wiki, conversion from CVS to	SVN)
       Keiji Sawada (Solaris ATA interface)
       Manfred Schwarb (Drive database)
       Sergey Svishchev	(NetBSD	interface)
       David Snyder and	Sergey Svishchev (OpenBSD interface)
       Phil Williams (User interface and drive database)
       Shengfeng Zhou (Linux/FreeBSD HighPoint RocketRAID interface)
       Many other individuals have made	smaller	contributions and corrections.

       This code was derived from the smartsuite package, written  by  Michael
       Cornwell,  and  from  the previous UCSC smartsuite package.  It extends
       these to	cover ATA-5 disks.  This code was originally  developed	 as  a
       Senior  Thesis by Michael Cornwell at the Concurrent Systems Laboratory
       (now part of the	Storage	Systems	Research Center), Jack	Baskin	School
       of    Engineering,    University	   of	 California,	Santa	 Cruz. .

       Please see the following	web site for updates,  further	documentation,
       bug reports and patches:

       smartd.conf(5),	smartctl(8), syslogd(8), syslog.conf(5), badblocks(8),
       ide-smart(8), regex(7).

       An introductory article about smartmontools is  Monitoring  Hard	 Disks
       with  SMART,  by	Bruce Allen, Linux Journal, January 2004, pages	74-77.
       This is	online.

       If you would like to understand better how SMART	 works,	 and  what  it
       does,  a	good place to start is with Sections 4.8 and 6.54 of the first
       volume of the 'AT Attachment  with  Packet  Interface-7'	 (ATA/ATAPI-7)
       specification  Revision	4b.   This  documents  the SMART functionality
       which the smartmontools utilities provide access	to.

       The functioning of SMART	was originally defined by the SFF-8035i	 revi-
       sion 2 and the SFF-8055i	revision 1.4 specifications.  These are	publi-
       cations of the Small Form Factors (SFF) Committee.

       Links to	these and other	documents may be found on the  Links  page  of
       the  smartmontools  Wiki	 at
       tools/wiki/Links	.

       $Id:	3451 2011-10-15	14:27:08Z chrfranke $

smartmontools-5.42		  2011-10-20			     SMARTD(8)


Want to link to this manual page? Use this URL:

home | help