Self-Test Diagnostics - WRITE SAME

Top  Previous  Next

Another feature added to the diagnostic suite in release 1.26 is support for writing data to the entire device. This feature utilizes the SCSI-only WRITE SAME command which instructs the device to fill a block of data with a user-specified pattern. (The command works on SCSI, SAS, SSA, and fibre channel random-access devices.   (SMARTMonUX will return an error if you attempt to perform this command on an unsupported device).


Both the -wsbyte and -wsbyteconfirm commands initiate the same WRITE SAME function. The -wsbyteconfirm just suppresses the are-you-sure type message, which allows you to automate this data destructive command. This function will write the pattern starting on block #0 of the disk, and it will continue through the last addressable block.   It will not write your pattern on reserved areas, nor will it write the pattern on blocks that may go beyond the reported drive capacity. If you need to insure that your pattern writes every addressable block on the disk, then you should send the command, -capacity 0 which will reset the disk to maximum addressable capacity.


One would ordinarily use this command variant as part of a automated process. As this test is destructive, we suggest you only use the -wsbyteconfirm command on systems and scripts that have been fully tested.   We also allow you to combine -wsbyte and -confirm on the same command-line. These options together are equivalent to the -wsbyteconfirm command.


Add the optional -wsc operator if you want the program to immediately terminate the operation after the first error.



./smartmon-ux -wsbyte [-16] hexbyte [-wsc] Device_list

./smartmon-ux -wsbyteconfirm [-16]hexbyte [-wsc] Device_list


Where hexbyte is the byte that you wish to fill the disk with.


If  you want every block of the disk to be zeroed, set hexbyte to 00.  If you want to write a pattern which would be used as part of a stress disk write test, we have been told that Seagate suggests sending the E6 byte as a pattern.


If you use wild-cards or enter more than one disk in the device list, the program will continue with all disks in the list after the first disk has been written (or skipped by the operator). If there is a problem with flashing any disk, the program immediately terminates with an appropriate error message. (If it is a result of a disk error, sense information will be provided to lend insight into the problem.


(Note, there is no 12-byte version of the WRITE SAME command, so there is no -12 flag).


Example (write E6h pattern to every byte on the disk)

[root@rh90 smartmon]# ./smartmon-ux -wsbyte E6 /dev/sg5

SMARTMon-ux [Release 1.26, Build 22-APR-2004] - Copyright 2001-2004 SANtools, Inc.

Discovered SEAGATE ST336753FC S/N "3HX00LE3" on /dev/sg5 [SES] (Not Enabling SMART)(35003 MB)



* Warning:  You have initiated the WRITE SAME function which instructs this software  *

*           to destroy all of your data and write a single byte pattern over every    *

*           block on the selected disk drive, DESTROYING YOUR DATA.  No checks        *

*           will be made to verify that the disk isn't mounted or in use in any way.  *

*                                                                                     *

*           The process will generally complete in 15 - 30 minutes, and status        *

*           information will appear on the screen as the process progresses.          *

*                                                                                     *

*           Your operating system may attempt to query the disk unless you have       *

*           unmounted it (unassigned drive letter in Windows, umount in UNIX/LINUX).  *

*                                                                                     *

*           If you used a wildcard, or a list of devices, and do not answer YES       *

*           to write data on the disk described below, then it will be skipped and    *

*           the program will select the next disk in the list and repeat this message *

*           until all disks have been skipped or formatted with the supplied byte.    *

*                                                                                     *



This will write the byte E6h across the entire SEAGATE ST336753FC disk at /dev/sg5

Are you sure you want to do this? Answer "YES" to begin the operation, anything else exits program: YES


Beginning WRITE SAME formatting for SEAGATE ST336753FC at /dev/sg5 (71687371 blocks, blocksize=512)

99%    0.1 Mins Remaining (< --- This line is updated after every 1% completion)


WRITE SAME completed.


Program Ended.


Persistent Device Names Warning

Unless your operating system uses persistent device names, you should not automate any tests that are destructive in nature unless there are fail-safes to verify you are performing the action on the device you want to perform the action on.  That is because if you add or remove hardware, reboot your machine, the device name for a particular peripheral may change.



Frequently Asked Questions

What is the -wsbyte command good for?

There is generally no faster way to destroy data on your disk (without smashing it into little bits) then by using this command. Since you can also set the byte pattern, you can make multiple passes to prevent data from ever being recovered (except for the types of government agencies that can recover anything).


If you are trying to certify a disk drive, or do burn-in, send the E6 pattern with the -wsbyte or -wsbyteconfirm, follow up with the -scrub family of read commands, run the -steb, and repeat. This tests every component of the device including every block of media as well as the electronics components. Seagate recommends using the E6 pattern as it will generally sniff out more weak sectors that would need to be remapped.


What about host overhead?

SMARTMonUX sends only one I/O command to write 30MB at a time. Even measuring this amount of overhead generates a higher load then zeroing your disk. (Note, due to the pass-through I/O limitations unique to SGI's IRIX operating system, the -scrub family of commands will run significantly slower on that platform. (That is because the O/S does not support multiple concurrent pass-through commands to the same device, the handle must be opened & closed between I/Os.). These limitations will not affect the ANSI-type self-test commands, and they will not be noticeable with the write same commands since they might generate only one or two I/Os per second.


Is this a safe operation?

It is safe to do this on any disk other than your O/S disk and any disks required by your O/S, such as swap, to stay alive. Of course, all data will be destroyed on that disk, but it will not hurt the drive.  In fact, storage manufacturers use the write-same command as means of stress testing drives to make weak sectors fail so those defects can be remapped.


How long does this take?

A fast 73 GB disk typically completes in around 15 minutes.


How do I test really large devices, like a 5 TB LUN on a RAID controller?

Append the -16 function, which instructs the software to send 16-byte SCSI commands.  These commands are required for devices greater than the approximately 2.1 TB limitation for the 10-byte SCSI commands.