sg_reassign
(1m)
名称
sg_reassign - sends a SCSI REASSIGN BLOCKS command
用法概要
sg_reassign [--address=A,A...] [--dummy] [--eight=0|1]
[--grown] [--help] [--longlist=0|1] [--primary] [--verbose]
[--version] DEVICE
描述
SG3_UTILS SG_REASSIGN(8)
NAME
sg_reassign - sends a SCSI REASSIGN BLOCKS command
SYNOPSIS
sg_reassign [--address=A,A...] [--dummy] [--eight=0|1]
[--grown] [--help] [--longlist=0|1] [--primary] [--verbose]
[--version] DEVICE
DESCRIPTION
Send a SCSI REASSIGN BLOCKS command to DEVICE. Alternatively
this utility can find the number of element in a "grown" or
"primary" defect list with a SCSI READ DEFECT DATA (10) com-
mand. These SCSI commands are defined in SBC-2 for direct
access devices (e.g. a disk). Reassign blocks is designed to
change the physical location of a logical block that is
known or suspected to be defective to another area on the
media. Disks are typically formatted with blocks held in
reserve for this situation.
If neither the --grown nor --primary option is supplied then
one or more addresses need to be given. If the address (or
all of the addresses) fit into 4 bytes and '--eight=1' is
not given then the parameter block passed to DEVICE is made
up of 4 byte logical block addresses. If any of the
addresses need more than 4 bytes to represent (i.e. >=
2**32) or '--eight=1' is given then the parameter block
passed to DEVICE is made up of 8 byte logical block
addresses.
OPTIONS
Arguments to long options are mandatory for short options as
well.
-a, --address=A,A...
where A,A... is a string of comma separated numbers.
Each number is interpreted as decimal unless prefixed
by '0x' or '0X' (or it has a trailing 'h' or 'H'). If
multiple logical block addresses are given they must be
separated by a comma or a (single) space. A string that
contains any space separators needs to be quoted. At
least one address must be given.
-a, --address=-
reads one or more logical block addresses from stdin.
These may be comma, space, tab or linefeed (newline)
separated. If a line contains "#" then the remaining
characters on that line are ignored. Otherwise each non
separator sequence of characters should resolve to a
decimal number unless prefixed by '0x' or '0X' (or has
a trailing 'h'). At least one address must be given.
-d, --dummy
sg3_utils-1.27 Last change: April 2009 1
SG3_UTILS SG_REASSIGN(8)
prepare for but do not execute the SCSI REASSIGN BLOCKS
command. Since the REASSIGN BLOCKS command is essen-
tially irreversible, paranoid users may wish to check
the invocation of this utility before reassigning
defective blocks on a disk. Useful with '-vv' for those
who wish to view the parameter block that will accom-
pany the command.
-e, --eight=0 | 1
when value is 1 then it sets the 'LONGLBA' flag in the
command indicating that the addresses in the associated
parameter block are 8 byte quantities. When value is 0
then it clears the 'LONGLBA' flag in the command indi-
cating that the addresses in the associated parameter
block are 4 byte quantities. If this option is not
given then 4 byte quantities are assumed unless one of
the address is too large.
-g, --grown
use the SCSI READ DEFECT DATA (10) command to determine
the number of elements in the "grown defect list". When
this option is given there is no reassignment of blocks
(i.e. this utility is passive). When this option is
given then the --address= option is not permitted. See
the discussion below concerning the relationship
between reassigned blocks and the grown defect list.
This list is sometimes referred to as the GLIST.
-h, --help
output the usage message then exit.
-l, --longlist=0 | 1
sets the REASSIGN BLOCKS cdb field of the same name to
the given value. Only 1000 addresses are permitted so
there should be no need to specify a value of 1. The
short list variant restricts the parameter block length
to 2 ** 16 bytes (i.e. about 16000 4 byte addresses or
8000 8 byte addresses). Added for completeness.
-p, --primary
use the SCSI READ DEFECT DATA (10) command to determine
the number of elements in the "primary defect list"
which is established during the manufacturing process.
When this option is given there is no reassignment of
blocks (i.e. this utility is passive). When this option
is given then the --address= option is not permitted.
This list is sometimes referred to as the PLIST.
-v, --verbose
increase the level of verbosity, (i.e. debug output).
-V, --version
sg3_utils-1.27 Last change: April 2009 2
SG3_UTILS SG_REASSIGN(8)
print the version string and then exit.
ATTRIBUTES
See attributes(5) for descriptions of the following
attributes:
+---------------+--------------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+--------------------------+
|Availability | system/storage/sg3_utils |
+---------------+--------------------------+
|Stability | Uncommitted |
+---------------+--------------------------+
NOTES
Note that if the ARRE field (for reads) and/or the AWRE
field (for writes) are set in the "Read Write Error Recov-
ery" mode page then recoverable read and/or write errors
cause automatic reassignment of the defective block. The PER
bit in the same mode page controls whether a RECOVERED ERROR
sense key is reported on not (PER=1 implies do report).
Irrespective of the ARRE, AWRE or PER field settings, the
error counter log pages reflect any errors (recovered or
otherwise). Whenever a block is reassigned, a new entry is
added in the "grown" defect list. Apart from doing selftests
(see sg_senddiag or smartmontools) regularly, monitoring the
grown defect list of a disk is a reasonable metric of its
health. If the grown list starts growing quickly that is an
ominous sign. The best grown defect lists are empty ones.
The number of elements in the grown defect list can be
viewed with the --grown option. The contents of the grown
defect list can be viewed with the 'sginfo -G' utility.
If an unrecoverable error is detected at a logical block
address then REASSIGN BLOCKS is needed to reassign the
block. Also if the ARRE and/or AWRE fields are clear and a
recoverable error is detected then the logical block in
question may be reassigned with this utility (otherwise the
error counter log pages will continually be incremented for
each recovered access).
The number of blocks held in reserve for the purposes of
REASSIGN BLOCKS is vendor specific and may well be limited
to the zone within the media where the original (defective)
block lay. When this number is exhausted subsequent invoca-
tions of this utility may result in a sense key of hardware
error and an additional sense of 'No defect spare location
available'. The next step would be to reformat the disk (or
get a replacement).
The SBC-2 draft standard (revision 16) notes that when mul-
tiple addresses are given to the SCSI REASSIGN BLOCKS
sg3_utils-1.27 Last change: April 2009 3
SG3_UTILS SG_REASSIGN(8)
command and there is some failure at one of the later
addresses then all addresses prior to that have already be
reassigned. Care should be taken in such a case. Re-execut-
ing the command with the same addresses will cause the ear-
lier addresses to be reassigned again. At some stage the
disk will run out of reserved locations. So unless a large
number of addresses are involved it may be safer to reassign
them one address at a time.
EXIT STATUS
The exit status of sg_reassign is 0 when it is successful.
Otherwise see the sg3_utils(8) man page.
AUTHORS
Written by Douglas Gilbert.
REPORTING BUGS
Report bugs to <dgilbert at interlog dot com>.
COPYRIGHT
Copyright (C) 2005-2009 Douglas Gilbert
This software is distributed under a FreeBSD license. There
is NO warranty; not even for MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
SEE ALSO
sg_format,sginfo,sg_senddiag(all in sg3_utils),
sdparm(sdparm), smartmontools(internet, sourceforge)
This software was built from source available at
https://java.net/projects/solaris-userland. The original
community source was downloaded from
http://sg.danny.cz/sg/p/sg3_utils-1.33.tgz
Further information about this software can be found on the
open source community website at
http://sg.danny.cz/sg/sg3_utils.html.
sg3_utils-1.27 Last change: April 2009 4