home | help
ATACONTROL(8)		     System Manager's Manual		   ATACONTROL(8)

NAME
     atacontrol -- ATA device driver control program

SYNOPSIS
     atacontrol <command> args

     atacontrol attach channel
     atacontrol detach channel
     atacontrol reinit channel
     atacontrol create type [interleave] disk0 ... diskN
     atacontrol delete raid
     atacontrol addspare raid disk
     atacontrol rebuild raid
     atacontrol status raid
     atacontrol mode device [mode]
     atacontrol info channel
     atacontrol cap device
     atacontrol spindown device [seconds]
     atacontrol list

DESCRIPTION
     The  atacontrol  utility is a control program that provides the user access
     and control to the FreeBSD ata(4) subsystem.

     The atacontrol utility can cause severe system crashes and loss of data  if
     used improperly.  Please exercise caution when using this command!

     The channel argument is the ATA channel device (e.g., ata0) on which to op-
     erate.  The following commands are supported:

     attach    Attach an ATA channel.  Devices on the channel are probed and at-
	       tached as is done on boot.

     detach    Detach  an  ATA channel.  Devices on the channel are removed from
	       the kernel, and all outstanding transfers etc. are returned  back
	       to the system marked as failed.

     reinit    Reinitialize an ATA channel.  Both devices on the channel are re-
	       set  and  initialized to the parameters the ATA driver has stored
	       internally.  Devices that have gone bad and no longer respond  to
	       the  probe, or devices that have physically been removed, are re-
	       moved from the kernel.  Likewise are devices that show up  during
	       a reset, probed and attached.

     create    Create  a  type	ATA RAID.  The type can be RAID0 (stripe), RAID1
	       (mirror), RAID0+1, SPAN or JBOD.  In case the RAID  has	a  RAID0
	       component, the interleave must be specified in number of sectors.
	       The   RAID   will  be  created  of  the	individual  disks  named
	       disk0 ... diskN.

	       Although the ATA driver allows for creating an ATA RAID on  disks
	       with any controller, there are restrictions.  It is only possible
	       to  boot on an array if it is either located on a "real" ATA RAID
	       controller like the Promise or Highpoint controllers, or  if  the
	       RAID  declared  is  of RAID1 or SPAN type; in case of a SPAN, the
	       partition to boot must reside on the first disk in the SPAN.

     delete    Delete a RAID array on a RAID capable ATA controller.

     addspare  Add a spare disk to an existing RAID.

     rebuild   Rebuild a RAID1 array on a RAID capable ATA controller.

     status    Get the status of an ATA RAID.

     mode      Without the mode argument, the current transfer mode of	the  de-
	       vice  are printed.  If the mode argument is given, the ATA driver
	       is asked to change the transfer mode to the one given.	The  ATA
	       driver  will reject modes that are not supported by the hardware.
	       Modes are given like "PIO3", "udma2", "udma100",  case  does  not
	       matter.

	       Currently  supported  modes are: BIOSPIO, PIO0, PIO1, PIO2, PIO3,
	       PIO4, WDMA2, UDMA2 (alias UDMA33), UDMA4  (alias  UDMA66),  UDMA5
	       (alias  UDMA100),  UDMA6  (alias UDMA133), SATA150, SATA300, USB,
	       USB1, USB2 and BIOSDMA.

     cap       Show detailed info about the device on device.

     spindown  Set or report timeout after which the device will be  spun  down.
	       To arm the timeout the device needs at least one more request af-
	       ter setting the timeout.  To disable spindown, set the timeout to
	       zero.  No further actions are needed in this case.

     info      Show  info about the attached devices on the channel.  The device
	       name and manufacture/version strings are shown.

     list      Show info about all attached devices on all active controllers.

EXAMPLES
     To get information on devices attached to a channel, use the command line:

	   atacontrol info ata0

     To see the devices' current access modes, use the command line:

	   atacontrol mode ad0

     which results in the modes of the devices being displayed as a string  like
     this:

	   current mode = UDMA100

     You can set the mode with atacontrol and a string like the above, for exam-
     ple:

	   atacontrol mode ad0 PIO4

     The new modes are set as soon as the atacontrol command returns.

     The  atacontrol command can also be used to create purely software RAID ar-
     rays in systems that do NOT have a "real" hardware  RAID  card  such  as  a
     Highpoint or Promise card.  A common scenario is a 1U server such as the HP
     DL320  G4	or G5.	These servers contain a SATA controller that has 2 chan-
     nels that can contain 2 disks per channel, but the  servers  are  wired  to
     only  place  a  single SATA drive on each channel.  These servers do have a
     "pseudo" RAID BIOS but it uses a proprietary format that is not  compatible
     with  the	ata  driver, and thus their RAID bios must be switched off.  An-
     other common scenario would be a Promise UDMA100 controller card  that  did
     not  contain  the	Fasttrack RAID BIOS, but did contain 2 UDMA channels.  1
     disk would be attached to one channel and the other disk would be	attached
     to  the  other  channel.	It is NOT recommended to create such arrays on a
     primary/secondary pair on a SINGLE channel since the throughput of the mir-
     ror would be severely compromised, the ability to rebuild the array in  the
     event  of	a  disk failure would be greatly complicated, and if a disk con-
     troller electronics failed it could wedge the channel and take  both  disks
     in  the mirror offline.  (which would defeat the purpose of having a mirror
     in the first place)

     A quick and dirty way to create such a mirrored array on a new system is to
     boot off the FreeBSD install CD, do a minimal scratch install, abort out of
     the post install questions, and at the command line issue the command:

	   atacontrol create RAID1 ad4 ad6

     then immediately issue a reboot and boot from the	installation  CD  again,
     and during the installation, you will now see "ar0" listed as a disk to in-
     stall on, and install on that instead of ad4, ad6, etc.

     To  get  information about the status of a RAID array in the system use the
     command line:

	   atacontrol status ar0

     A typical output showing good health on a RAID array might be as follows:

	   ar0: ATA RAID1 subdisks: ad4 ad6 status: READY

     If a disk drive in a RAID1 array dies the system will mark the  disk  in  a
     DOWN  state  and change the array status to DEGRADED.  This can ALSO happen
     in rare instances due to a power fluctuation or  other  event  causing  the
     system  to  not  shutdown properly.  In that case the output will look like
     the following:

	   ar0: ATA RAID1 subdisks: ad4 DOWN status: DEGRADED

     For a mirrored RAID1 system the server WILL ALLOW you to remove a dead SATA
     disk drive (if the drive is in a hot-swap tray)  without  freezing  up  the
     system,  so  you can remove the disk and while you are obtaining a replace-
     ment the server can run from the active disk.  The only caveat is	that  if
     the  active  disk is ad6, the system most likely will NOT be able to be re-
     booted since most systems only support booting from the first disk drive.

     To deactivate the DOWN disk ad6 to allow for it to be ejected, use the fol-
     lowing:

	   atacontrol detach ata3

     then eject or remove the disk.  Note that this only works if the 2 disks in
     the mirror are on separate channels (which is the standard  setup	for  1-U
     servers like the HP DL320).  When the new disk drive is obtained, make sure
     it is blank, then shut the system down.  At this point, if the system has a
     RAID  array  card like a Highpoint or Promise controller, you may then boot
     it into the BIOS of the card and use the manufacturers RAID  array  rebuild
     utilities to rebuild the array.

     If  the system has a pure software array and is not using a "real" ATA RAID
     controller, then shut the system down, make sure that  the  disk  that  was
     still  working is moved to the bootable position (channel 0 or whatever the
     BIOS allows the system to boot from) and the blank disk is  placed  in  the
     secondary	position,  then  boot the system into single-user mode and issue
     the command:

	   atacontrol addspare ar0 ad6
	   atacontrol rebuild ar0

     If the disk drive did NOT fail and the RAID array became unmirrored due  to
     a	software  glitch or improper shutdown, then a slightly different process
     must be followed.	Begin by issuing the detach command (this shows the  de-
     tach for disk ad6, the primary master on channel 3):

	   atacontrol detach ata3

     then reboot the system into single-user mode.  (don't just init the system,
     reboot it so that both disks get probed) You will probably see TWO mirrored
     RAID  arrays  appear during the boot messages, ar0 and ar1.  Issue the com-
     mand:

	   atacontrol delete ar1
	   atacontrol addspare ar0 ad6

     Now a status command will show the array rebuilding.

     To spin down a disk after 30 minutes run

	   atacontrol spindown ad6 1800
	   dd if=/dev/ad6 of=/dev/null count=1

     While any IO on the disk will arm the timer, using dd(1) on the raw  device
     will  work  in  all  cases, as when the disk is not opened at all.  You can
     check the current setting with

	   atacontrol spindown ad6

     You should not set a spindown timeout on a disk with / or syslog logging on
     it as the disk will be worn out spinning down and up all the time.

SEE ALSO
     ata(4)

HISTORY
     The atacontrol utility first appeared in FreeBSD 4.6.

AUTHORS
     The atacontrol utility was written by Soren Schmidt <sos@FreeBSD.org>.

     This manual page was written by Soren Schmidt <sos@FreeBSD.org>.

FreeBSD 8.0			February 21, 2009		   ATACONTROL(8)

home | help