phpman > man > sg_format(8)

Markdown | JSON | MCP    

SG_FORMAT(8)                                  SG3_UTILS                                 SG_FORMAT(8)



NAME
       sg_format - format, format with preset, resize SCSI disk; format tape

SYNOPSIS
       sg_format  [--cmplst={0|1}]  [--count=COUNT]  [--dcrt]  [--dry-run]  [--early]  [--ffmt=FFMT]
       [--fmtmaxlba-fmtpinfo=FPI] [--format] [--help] [--ip-def]  [--long]  [--mode=MP]  [--pfu=PFU]
       [--pie=PIE] [--pinfo] [--poll=PT] [--preset=ID] [--quick] [--resize] [--rto_req] [--security]
       [--six]  [--size=LB_SZ]  [--tape=FM]  [--timeout=SECS]  [--verbose]  [--verify]   [--version]
       [--wait] DEVICE

DESCRIPTION
       Not all SCSI direct access devices need to be formatted and some have vendor specific format‐
       ting procedures. SCSI disks with rotating media are probably the largest group that  do  sup‐
       port  a  'standard' format operation. They are typically factory formatted to a block size of
       512 bytes with the largest number of blocks that the manufacturer  recommends.  The  manufac‐
       turer's  recommendation  typically leaves aside a certain number of tracks, spread across the
       media, for reassignment of blocks to logical block addresses during the life of the disk.

       This utility issues one of three SCSI format commands: FORMAT UNIT, FORMAT MEDIUM  or  FORMAT
       WITH  PRESET. In the following description, unqualified sections will usually be referring to
       the SCSI FORMAT UNIT command. Both FORMAT UNIT and FORMAT WITH  PRESET  apply  to  disks  (or
       disk-like devices).  The FORMAT MEDIUM command is for tapes.

       This utility can format modern SCSI disks and potentially change their block size (if permit‐
       ted) and the block count (i.e. number of accessible blocks on the media also known as "resiz‐
       ing").  Resizing  a disk to less than the manufacturer's recommended block count is sometimes
       called "short stroking" (see NOTES section). Resizing the block count while not changing  the
       block size may not require a format operation. The SBC-2 standard (see www.t10.org) has obso‐
       leted the "format device" mode page. Many of the low level details found in  that  mode  page
       are  now  left  up  to  the discretion of the manufacturer. There is a Format Status log page
       which reports on the previous successful format operation(s).

       When this utility is used without options (i.e. it is only given a DEVICE argument) it prints
       out the existing block size and block count derived from two sources. These two sources are a
       block descriptor in the response to a MODE SENSE command and the response to a READ  CAPACITY
       command.   The  reason  for  this double check is to detect a "format corrupt" state (see the
       NOTES section). This usage will not modify the disk.

       When this utility is used with either --format, --preset=ID or --tape=FM, it will attempt  to
       format the given DEVICE. In the absence of the --quick option there is a 15 second pause dur‐
       ing which time the user is invited thrice (5 seconds apart) to abort sg_format.  This  occurs
       just  prior  the  SCSI FORMAT UNIT, FORMAT WITH PRESET or FORMAT MEDIUM command being issued.
       See the NOTES section for more information.

       Protection information (PI) is optional and is made up of one or more  protection  intervals,
       each made up of 8 bytes associated with a logical block. When PI is active each logical block
       will have 1, 2, 4, 8, etc protection intervals (i.e. a power of two), interleaved  with  (and
       following)  the user data to which they refer. Four protection types are defined with protec‐
       tion type 0 being no protection intervals. See the PROTECTION INFORMATION section  below  for
       more information.

       When the --tape=FM option is given then the SCSI FORMAT MEDIUM command is sent to the DEVICE.
       FORMAT MEDIUM is defined in the SSC documents at T10 and prepares a volume for use. That  may
       include partitioning the medium. See the section below on TAPE for more information.

       The  FORMAT  WITH  PRESET was added in draft SBC-4 revision 18. A preset pattern, selected by
       the PRESET IDENTIFIER field (--id=FWPID), is written to the disk. See the FORMAT PRESETS  VPD
       page (0xb8) for a list of available Format preset identifiers and their associated data.

OPTIONS
       Arguments  to long options are mandatory for short options as well.  The options are arranged
       in alphabetical order based on the long option name.

       -C, --cmplst={0|1}
              sets the CMPLST ("complete list") bit in the FORMAT UNIT cdb to 0 or 1.  If the  value
              is  0  then  the existing GLIST (grown list) is taken into account.  If the value is 1
              then the existing GLIST  is  ignored.  CMPLST  defaults  to  1  apart  from  when  the
              --ffmt=FFMT  option's  value  is  non-zero in which case CMPLST defaults to 0. See the
              LISTS section below. In most cases this bit should be left at its default value.

       -c, --count=COUNT
              where COUNT is the number of blocks to be formatted or media to be resized to. Can  be
              used with either --format or --resize.  With --format this option need not be given in
              which case it is assumed to be zero.
              With --format the interpretation of COUNT is:
                (COUNT > 0) : only format the first COUNT blocks and READ CAPACITY will report COUNT
              blocks after format
                (COUNT = 0) and block size unchanged : use existing block count
                (COUNT  =  0) and block size changed : recommended maximum block count for new block
              size
                (COUNT = -1) : use recommended maximum block count
                (COUNT < -1) : illegal
              With --resize this option must be given and COUNT has this interpretation:
                (COUNT > 0) : after resize READ CAPACITY will report COUNT blocks
                (COUNT = 0) : after resize READ CAPACITY will report 0 blocks
                (COUNT = -1) : after resize READ CAPACITY will report its maximum number of blocks
                (COUNT < -1) : illegal
              In both cases if the given COUNT exceeds the maximum number of blocks (for  the  block
              size) then the disk reports an error.  See NOTES section below.

       -D, --dcrt
              this  option  sets the DCRT bit in the FORMAT UNIT command's parameter list header. It
              will "disable certification". Certification verifies that blocks are usable during the
              format  process. Using this option may speed the format but --ffmt=FFMT, if available,
              would probably be better. The default action of this utility (i.e. when this option is
              not given) is to clear the DCRT bit thereby requesting "media certification" (also un‐
              less another option needs it, the FOV bit will be cleared). When the DCRT bit is  set,
              the FOV bit must also be set hence sg_format does that.
              If  this  option is given twice then certification is enabled by clearing the DCRT bit
              and setting the FOV bit. Both these bits are found in the  parameter  list  associated
              with the FORMAT UNIT cdb.

       -d, --dry-run
              this  option will parse the command line, do all the preparation but bypass the actual
              FORMAT UNIT, FORMAT WITH PRESET or FORMAT MEDIUM command. Also if  the  options  would
              otherwise  cause  the  logical block size to change, then the MODE SELECT command that
              would do that is also bypassed when the dry run option is given.

       -e, --early
              during a format operation, The default action of this utility is to poll the disk  ev‐
              ery  60 seconds (or every 10 seconds if FFMT is non-zero) to determine the progress of
              the format operation until it is finished. When this option is given this utility will
              exit "early", that is as soon as the format operation has commenced. Then the user can
              monitor the progress of the  ongoing  format  operation  with  other  utilities  (e.g.
              sg_turs(8) or sg_requests(8)).  This option and --wait are mutually exclusive.

       -t, --ffmt=FFMT
              FFMT  (fast  format) is placed in a field of the same name in the FORMAT UNIT cdb. The
              field was introduced in SBC-4 revision 10. The default value is 0  which  implies  the
              former  action which is typically to overwrite all blocks on the DEVICE. That can take
              a long time (e.g. with hard disks over 10 TB in size that can be days). With FFMT  set
              that time may be reduced to minutes or less. So it is worth trying if it is available.
              FFMT  has  values  1  and 2 for fast format with 3 being reserved currently. These two
              values include this description: "The device server initializes the medium ... without
              overwriting  the medium (i.e. resources for managing medium access are initialized and
              the medium is not written)".  The difference between 1 and 2 concerns read  operations
              on  LBAs  to  which no data has been written to, after the fast format. When FFMT is 1
              the read operation should return "unspecified logical block data" and complete without
              error. When FFMT is 2 the read operation may yield check condition status with a sense
              key set to hardware error, medium error or command aborted. See draft  SBC-4  revision
              16 section 4.34 for more details.

       -b, --fmtmaxlba
              This  option is only active if it is given together with the --preset=ID option. If so
              it sets the FMTMAXLBA field in the FORMAT WITH PRESET command.

       -f, --fmtpinfo=FPI
              sets the FMTPINFO field in the FORMAT UNIT cdb to a value between 0 and  3.   The  de‐
              fault  value  is 0. The FMTPINFO field from SBC-3 revision 16 is a 2 bit field (bits 7
              and 6 of byte 1 in the cdb). Prior to that revision it was a single bit field  (bit  7
              of  byte 1 in the cdb) and there was an accompanying bit called RTO_REQ (bit 6 of byte
              1 in the cdb). The deprecated options "--pinfo" and "--rto-req"  represent  the  older
              usage.  This option should be used in their place. See the PROTECTION INFORMATION sec‐
              tion below for more information.

       -F, --format
              issue one of the three SCSI "format" commands. In the absence of the  --preset=ID  and
              --tape=FM  options,  the  SCSI FORMAT UNIT command is issued.  These commands will de‐‐
              stroy all the data held on the media.  This option is required  to  change  the  block
              size  of  a  disk. In the absence of the --quick option, the user is given a 15 second
              count down to ponder the wisdom of doing this, during which  time  control-C  (amongst
              other Unix commands) can be used to kill this process before it does any damage.
              When used three times (or more) the preliminary MODE SENSE and SELECT commands are by‐
              passed, leaving only the initial INQUIRY and FORMAT UNIT commands. This is  for  emer‐
              gency use (e.g. when the MODE SENSE/SELECT commands are not working) and cannot change
              the logical block size.
              See NOTES section for implementation details and EXAMPLES section for typical use.

       -h, --help
              print out the usage information then exit.

       -I, --ip-def
              sets the default Initialization Pattern. Some disks (SSDs) use this  to  flag  that  a
              format  should  fully  provision  (i.e.  associate a physical block with every logical
              block). The same disks (SSDs) might thin provision if this option  is  not  given.  If
              this option is given then the --security option cannot be given. Also accepts --ip_def
              for this option.

       -l, --long
              the default action of this utility is to assume 32 bit logical block  addresses.  With
              512  byte  block  size  this permits more than 2 terabytes (almost 2 ** 41 bytes) on a
              single disk. This option selects commands and parameters that allow for 64 bit logical
              block  addresses.   Specifically this option sets the "longlba" flag in the MODE SENSE
              (10) command and uses READ CAPACITY (16) rather than READ CAPACITY (10). If  this  op‐
              tion  is not given and READ CAPACITY (10) or MODE SELECT detects a disk the needs more
              than 32 bits to represent its logical blocks then it is set  internally.  This  option
              does  not  set the LONGLIST bit in the FORMAT UNIT command. The LONGLIST bit is set as
              required depending other parameters (e.g. when '--pie=PIE' is greater than zero).

       -M, --mode=MP
              MP is a mode page number (0 to 62 inclusive) that will be used for reading and perhaps
              changing the device logical block size. The default is 1 which is the Read-Write Error
              Recovery mode page.
              Preferably the chosen (or default) mode page should be saveable (i.e.  accept  the  SP
              bit set in the MODE SELECT command used when the logical block size is being changed).
              Recent version of this utility will retry a MODE SELECT if the SP=1 variant fails with
              a  sense key of ILLEGAL REQUEST.  That retry will use the same MODE SELECT command but
              with SP=0 .

       -P, --pfu=PFU
              sets the "Protection Field Usage" field in the parameter block associated with a  FOR‐
              MAT  UNIT  command  to  PFU. The default value is 0, the only other defined value cur‐
              rently is 1. See the PROTECTION INFORMATION section below for more information.

       -q, --pie=PIE
              sets the "Protection Interval Exponent" field in the parameter block associated with a
              FORMAT  UNIT  command  to  PIE. The default value is 0.  PIE can only be non-zero with
              protection types 2 and 3.  The value of 0 is typical for 512 byte  blocks;  with  4096
              byte  blocks  a value of 3 may be appropriate (i.e. 8 protection intervals interleaved
              with 4096 bytes of user data). A device may not  support  any  non-zero  values.  This
              field first appeared in SBC-3 revision 18.

       -p, --pinfo
              this  option  is  deprecated, use the --fmtpinfo=FPI option instead.  If used, then it
              sets bit 7 of byte 1 in the FORMAT UNIT cdb and that is equivalent to  setting  --fmtpinfo=2.  [So  if  --pinfo is used (plus --fmtpinfo=FPI and --pfu=PFU are not given or
              their arguments are 0) then protection type 1 is selected.]

       -x, --poll=PT
              where PT is the type of poll used. If PT is 0 then a TEST UNIT READY command is  used,
              otherwise  a  REQUEST  SENSE command is used. The default is currently 0 but this will
              change to 1 in the near future. See the NOTES sections below.

       -E, --preset=ID
              this option instructs this utility to issue a SCSI FORMAT  WITH  PRESET  command.  The
              PRESET  IDENTIFIER field in that cdb is set to ID. The IMMED field in that cdb is also
              set unless the --wait option is also given, in which case it is cleared.

       -Q, --quick
              the default action (i.e. when the option is not given) is to give the user 15  seconds
              to  reconsider doing a format operation on the DEVICE.  When this option is given that
              step (i.e. the 15 second warning period) is skipped.

       -r, --resize
              rather than format the disk, it can be resized. This  means  changing  the  number  of
              blocks  on  the  device  reported by the READ CAPACITY command.  This option should be
              used with the --count=COUNT option.  The contents of all logical blocks on  the  media
              remain unchanged when this option is used. This means that any resize operation can be
              reversed. This option cannot be used together with either --format or  a  --size=LB_SZ
              whose argument is different to the existing block size.

       -R, --rto_req
              The  option  is  deprecated,  use the --fmtpinfo=FPI option instead.  If used, then it
              sets bit 6 of byte 1 in the FORMAT UNIT cdb.

       -S, --security
              sets the "Security Initialization" (SI) bit in the FORMAT UNIT  command's  initializa‐
              tion pattern descriptor within the parameter list. According to SBC-3 the default ini‐
              tialization pattern "shall be written using a security erasure write  technique".  See
              the  NOTES  section  on  the  SCSI  SANITIZE command. If this option is given then the
              --ip_def option cannot be given.

       -6, --six
              Use 6 byte variants of MODE SENSE and MODE SELECT. The default action is to use the 10
              byte variants. Some MO drives need this option set when doing a format.

       -s, --size=LB_SZ
              where  LB_SZ  is  the  logical block size (i.e. number of user bytes in each block) to
              format the device to. The default value is whatever is currently reported by the block
              descriptor  in a MODE SENSE command. If the block size given by this option is differ‐
              ent from the current value then a MODE SELECT command is used to change  it  prior  to
              the FORMAT UNIT command being started (as recommended in the SBC standards). Some SCSI
              disks have 512 byte logical blocks by default and allow  an  alternate  logical  block
              size of 4096 bytes. If the given size in unacceptable to the disk, most likely an "In‐
              valid field in parameter list" message will appear in sense data (requires the use  of
              '-v' to decode sense data).
              Note that formatting a disk to add or remove protection information is not regarded as
              a change to its logical block size so this option should not be used.

       -T, --tape=FM
              will send a FORMAT MEDIUM command to the DEVICE with its FORMAT field set to FM.  This
              option  is  used to prepare a tape (i.e. the "medium") in a tape drive for use. Values
              for FM include 0 to do the "default" format; 1 to partition a volume and 2 to do a de‐
              fault format then partition.

       -m, --timeout=SECS
              where  SECS is the FORMAT UNIT, FORMAT WITH PRESET or FORMAT MEDIUM command timeout in
              seconds. SECS will only be used if it exceeds the internal timeout which is 20 seconds
              if the IMMED bit is set and 72000 seconds (20 hours) or higher if the IMMED bit is not
              set. If the disk size exceeds 4 TB then the timeout value is increased to 144000  sec‐
              onds  (40  hours).  And if it is greater than 8 TB then the timeout value is increased
              to 288000 seconds (80 hours). If the timeout is exceeded  then  the  operating  system
              will  typically  abort the command. Aborting a command may escalate to a LUN reset (or
              worse). A timeout may also leave the disk or tape  format  operation  incomplete.  And
              that  may  result  in the disk or tape being in a "format corrupt" state requiring an‐
              other format to remedy the situation.  So for various  reasons  command  timeouts  are
              best avoided.

       -v, --verbose
              increase  the  level  of verbosity, (i.e. debug output). "-vvv" gives a lot more debug
              output.

       -y, --verify
              set the VERIFY bit in the FORMAT MEDIUM cdb. The default is that  the  VERIFY  bit  is
              clear. This option is only appropriate for tapes.

       -V, --version
              print the version string and then exit.

       -w, --wait
              the  default  format  action  is  to  set the "IMMED" bit in the FORMAT UNIT command's
              (short) parameter header. If this option (i.e. --wait) is given then the  "IMMED"  bit
              is  not  set.  If  --wait  is given then the FORMAT UNIT, FORMAT WITH PRESET or FORMAT
              MEDIUM command waits until the format operation completes  before  returning  its  re‐
              sponse. This can be many hours on large disks. See the --timeout=SECS option.
              Alternatively  this option may be useful when used together with --ffmt=FFMT (and FFMT
              greater than 0) since the fast format may only be a matter of seconds.

LISTS
       The SBC-3 draft (revision 20) defines PLIST, CLIST,  DLIST  and  GLIST  in  section  4.10  on
       "Medium  defects". Briefly, the PLIST is the "primary" list of manufacturer detected defects,
       the CLIST ("certification" list) contains those detected during  the  format  operation,  the
       DLIST  is a list of defects that can be given to the format operation. The GLIST is the grown
       list which starts in the format process as CLIST+DLIST and can "grow" later due to  automatic
       reallocation  (see the ARRE and AWRE bits in the Read-Write Error Recovery mode page (see sd‐
       parm(8))) and use of the SCSI REASSIGN BLOCKS command (see sg_reassign(8)).

       By the SBC-3 standard (following draft revision 36) the CLIST and  DLIST  had  been  removed,
       leaving PLIST and GLIST. Only PLIST and GLIST are found in the SBC-4 drafts.

       The CMPLST bit (controlled by the --cmplst=0|1 option) determines whether the existing GLIST,
       when the format operation is invoked, is taken into account. The sg_format utility  sets  the
       FOV  bit  to zero which causes DPRY=0, so the PLIST is taken into account, and DCRT=0, so the
       CLIST is generated and used during the format process.

       The sg_format utility does not permit a user to provide a defect list (i.e. DLIST).

PROTECTION INFORMATION
       Protection Information (PI) is additional information held with logical blocks so that an ap‐
       plication  and/or  host  bus adapter can check the correctness of those logical blocks. PI is
       placed in one or more protection intervals interleaved in each logical block. Each protection
       interval  follows  the  user  data to which it refers. A protection interval contains 8 bytes
       made up of a 2 byte "logical block guard" (CRC), a 2 byte "logical block application  guard",
       and  a  4  byte "logical block reference tag". Devices with 512 byte logical block size typi‐
       cally have one protection interval appended, making its logical block data  520  bytes  long.
       Devices with 4096 byte logical block size often have 8 protection intervals spread across its
       logical block data for a total size of 4160 bytes. Note that for all other purposes the logi‐
       cal block size is considered to be 512 and 4096 bytes respectively.

       The  SBC-3  standard  have added several "protection types" to the PI introduced in the SBC-2
       standard. SBC-3 defines 4 protection types (types 0 to 3) with protection type 0  meaning  no
       PI  is  maintained.  While  a device may support one or more protection types, it can only be
       formatted with 1 of the 4. To change a device's protection type,  it  must  be  re-formatted.
       For  more  information see the Protection Information in section 4.21 of draft SBC-4 revision
       16.

       A device that supports PI information (i.e. supports one or more protection types 1, 2 and 3)
       sets  the  "PROTECT"  bit in its standard INQUIRY response. It also sets the SPT field in the
       EXTENDED INQUIRY VPD page response to indicate which protection types it supports. Given PRO‐
       TECT=1  then  SPT=0 implies the device supports PI type 1 only, SPT=1 implies the device sup‐
       ports PI types 1 and 2, and various other non-obvious mappings up to SPT=7 which implies pro‐
       tection types 1, 2 and 3 are supported. The current protection type of a disk can be found in
       the "P_TYPE" and "PROT_EN" fields in the response of a READ CAPACITY (16) command (e.g.  with
       the 'sg_readcap --long' utility).

       Given  that  a device supports a particular protection type, a user can then choose to format
       that disk with that protection type by setting the "FMTPINFO" and  "Protection  Field  Usage"
       fields  in  the  FORMAT  UNIT  command. Those fields correspond to the --fmtpinfo=FPI and the
       --pfu=PFU options in this utility. The list below shows the four protection types followed by
       the options of this utility needed to select them:
         0 : --fmtpinfo=0 --pfu=0
         1 : --fmtpinfo=2 --pfu=0
         2 : --fmtpinfo=3 --pfu=0
         3 : --fmtpinfo=3 --pfu=1
       The default value of FPI (in --fmtpinfo=FPI) is 0 and the default value of PFU (in --pfu=PFU)
       is 0. So if neither --fmtpinfo=FPI nor --pfu=PFU are given then protection type  0  (i.e.  no
       protection information) is chosen.

NOTES
       After a format that changes the logical block size or the number of logical blocks on a disk,
       the operating system may need to be told to re-initialize its setting for that disk. In Linux
       that can be done with:
           echo 1 > /sys/block/sd{letter(s)}/device/rescan
       where  "letter(s)"  will be between 'a' and 'zzz'. The lsscsi utility in Linux can be used to
       check the various namings of a disk.

       The SBC-2 standard states that the  REQUEST  SENSE  command  should  be  used  for  obtaining
       progress  indication  when  the format command is underway.  However, tests on a selection of
       disks shows that TEST UNIT READY commands yield progress indications (but not  REQUEST  SENSE
       commands).  So the current version of this utility defaults to using TEST UNIT READY commands
       to poll the disk to find out the progress of the format. The --poll=PT option has been  added
       to control this.

       When  the  --format,  --preset=ID or --tape=FM option is given without the --wait option then
       the corresponding SCSI command is issued with the IMMED bit set which causes the SCSI command
       to  return after it has started the format operation. The --early option will cause sg_format
       to exit at that point. Otherwise the DEVICE is polled every 60 seconds or every 10 seconds if
       FFMT  is  non-zero.  The poll is with TEST UNIT READY or REQUEST SENSE commands until one re‐
       ports an "all clear" (i.e. the format operation has completed). Normally these  polling  com‐
       mands  will  result  in  a progress indicator (expressed as a percentage) being output to the
       screen. If the user gets bored watching the progress report then  sg_format  process  can  be
       terminated (e.g. with control-C) without affecting the format operation which continues. How‐
       ever a target or device reset (or a power cycle) will probably cause the format to cease  and
       the DEVICE to become "format corrupt".

       When the --format (--preset=ID or --tape) and --wait options are both given then this utility
       may take a long time to return. In this case care should be taken not to send any other  SCSI
       commands  to  the  disk as it may not respond leaving those commands queued behind the active
       format command. This may cause a timeout in the OS driver (in a lot shorter  period  than  20
       hours  applicable  to  some  format operations). This may result in the OS resetting the disk
       leaving the format operation incomplete. This may leave the disk in a "format corrupt"  state
       requiring  another  format  to  remedy the situation. Modern SCSI devices should yield a "not
       ready" sense key with an additional sense indicating a format is in progress. With older  de‐
       vices  the  user should take precautions that nothing attempts to access a device while it is
       being formatted. Unmounting in mounted file systems on a DEVICE prior to calling this utility
       is strongly advised.

       When  the  block  size (i.e. the number of bytes in each block) is changed on a disk two SCSI
       commands must be sent: a MODE SELECT to change the block size followed by a  FORMAT  command.
       If the MODE SELECT command succeeds and the FORMAT fails then the disk may be in a state that
       the standard calls "format corrupt". A block descriptor in a subsequent MODE SENSE  will  re‐
       port  the  requested  new  block  size while a READ CAPACITY command will report the existing
       (i.e. previous) block size. Alternatively the READ CAPACITY command may fail,  reporting  the
       device  is not ready, potentially requiring a format. The solution to this situation is to do
       a format again (and this time the new block size does not have to be  given)  or  change  the
       block size back to the original size.

       The  SBC-2 standard states that the block count can be set back to the manufacturer's maximum
       recommended value in a format or resize operation.  This can be done by placing an address of
       0xffffffff (or the 64 bit equivalent) in the appropriate block descriptor field to a MODE SE‐
       LECT command. In signed (two's complement) arithmetic that value corresponds to  '-1'.  So  a
       --count=-1  causes  the  block count to be set back to the manufacturer's maximum recommended
       value. To see exactly which SCSI commands are being executed and parameters  passed  add  the
       "-vvv" option to the sg_format command line.

       The  FMTDATA  field shown in the FORMAT UNIT cdb does not have a corresponding option in this
       utility. When set in the cdb it indicates an additional parameter list will be  sent  to  the
       DEVICE  along  with the cdb. It is set as required, basically when any field in the parameter
       list header is set.

       Short stroking is a technique to trade off capacity for performance  on  hard  disks.  "Hard"
       disk  is  often  used  to mean a storage device with spinning platters which contain the user
       data. Solid State Disk (SSD) is the newer form of storage  device  that  contains  no  moving
       parts.  Hard disk performance is usually highest on the outer tracks (usually the lower logi‐
       cal block addresses) so by resizing or reformatting a disk to  a  smaller  capacity,  average
       performance will usually be increased.

       Other  utilities  may  be useful in finding information associated with formatting. These in‐
       clude sg_inq(8) to fetch standard INQUIRY information (e.g. the PROTECT bit) and to fetch the
       EXTENDED  INQUIRY  VPD page (e.g. RTO and GRD_CHK bits). The sdparm(8) utility can be used to
       access and potentially change the now obsolete format mode page.

       scsiformat is another utility available for formatting SCSI disks with Linux. It  dates  from
       1997 (most recent update) and may be useful for disks whose firmware is of that vintage.

       The  COUNT  numeric  argument may include a multiplicative suffix or be given in hexadecimal.
       See the "NUMERIC ARGUMENTS" section in the sg3_utils(8) man page.

       The SCSI SANITIZE command was introduced in SBC-3 revision 27. It is closely related  to  the
       ATA  sanitize disk feature set and can be used to remove all existing data from a disk. Sani‐
       tize is more likely to be implemented on modern disks (including SSDs) than FORMAT UNIT's se‐
       curity initialization feature (see the --security option) and in some cases much faster.

       SSDs  that support thin provisioning will typically unmap all logical blocks during a format.
       The reason is to improve the SSD's endurance. Also thin provisioned  formats  typically  com‐
       plete  faster  than fully provisioned ones on the same disk (see the --ip_def option). In ei‐
       ther case format operations on SSDs tend to be a lot faster than they are on hard disks  with
       spinning media.

TAPE
       Tape system use a variant of the FORMAT UNIT command used on disks. Tape systems use the FOR‐
       MAT MEDIUM command which is simpler with only three fields in the cdb typically  used.  Apart
       from  sharing  the same opcode the cdbs of FORMAT UNIT and FORMAT MEDIUM are quite different.
       FORMAT MEDIUM's fields are VERIFY, IMMED and FORMAT (with TRANSFER LENGTH always set  to  0).
       The  VERIFY  bit  field  is set with the --verify option. The IMMED bit is manipulated by the
       --wait option in the same way it is for disks; one difference is that if the --poll=PT option
       is not given then it defaults to PT of 1 which means the poll is done with REQUEST SENSE com‐
       mands.

       The argument given to the --tape=FM option is used to set the FORMAT field. FM can take  val‐
       ues  from  "-1"  to  "15" where "-1" (the default) means don't do a tape format; value "8" to
       "15" are for vendor specific formats. The --early option may also be used to  set  the  IMMED
       bit  and then exit this utility (rather than poll periodically until it is finished). In this
       case the tape drive will still be busy doing the format for some time but, according to  T10,
       should still respond in full to the INQUIRY and REPORT LUNS commands. Other commands (includ‐
       ing REQUEST SENSE) should yield a "not ready" sense key with  an  additional  sense  code  of
       "Logical  unit  not  ready,  format in progress". Additionally REQUEST SENSE should contain a
       progress indication in its sense data.

       When FM is 1 or 2 then the settings in the Medium partition mode page control the  partition‐
       ing. That mode page can be viewed and modified with the sdparm utility.

       Prior  to invoking this utility the tape may need to be positioned to the beginning of parti‐
       tion 0. In Linux that can typically be done  with  the  mt  utility  (e.g.  'mt  -f  /dev/st0
       rewind').

EXAMPLES
       These examples use Linux device names. For suitable device names in other supported Operating
       Systems see the sg3_utils(8) man page.

       In the first example below simply find out the existing block count and size derived from two
       sources: a block descriptor in a MODE SELECT command response and from the response of a READ
       CAPACITY commands. No changes are made:

          # sg_format /dev/sdm

       Now a simple format, leaving the block count and size as they were  previously.   The  FORMAT
       UNIT command is executed in IMMED mode and the device is polled every 60 seconds to print out
       a progress indication:

          # sg_format --format /dev/sdm

       Now the same format, but waiting (passively) until the format operation is complete:

          # sg_format --format --wait /dev/sdm

       Next is a format in which the block size is changed to 520 bytes and the block count  is  set
       to the manufacturer's maximum value (for that block size). Note, not all disks support chang‐
       ing the block size:

          # sg_format --format --size=520 /dev/sdm

       Now a resize operation so that only the first 0x10000 (65536) blocks on a disk  are  accessi‐
       ble. The remaining blocks remain unaltered.

          # sg_format --resize --count=0x10000 /dev/sdm

       Now resize the disk back to its normal (maximum) block count:

          # sg_format --resize --count=-1 /dev/sdm

       One  reason to format a SCSI disk is to add protection information. First check which protec‐
       tion types are supported by a disk (by checking the SPT field in  the  Extended  inquiry  VPD
       page together with the Protect bit in the standard inquiry response):

          # sg_vpd -p ei -l /dev/sdb
          extended INQUIRY data VPD page:
            ACTIVATE_MICROCODE=0
            SPT=1 [protection types 1 and 2 supported]
            ....

       Format with type 1 protection:

          # sg_format --format --fmtpinfo=2 /dev/sdm

       After  a  successful  format  with type 1 protection, READ CAPACITY(16) should show something
       like this:

          # sg_readcap -l /dev/sdm
          Read Capacity results:
             Protection: prot_en=1, p_type=0, p_i_exponent=0 [type 1 protection]
             Logical block provisioning: lbpme=0, lbprz=0
             ....

       To format with type 3 protection:

          # sg_format --format --fmtpinfo=3 --pfu=1 /dev/sdm

       For the disk shown above this will probably fail because the Extended inquiry VPD page showed
       only types 1 and 2 protection are supported.

       Here  are examples of using fast format (FFMT field in FORMAT UNIT cdb) to quickly switch be‐
       tween 512 and 4096 byte logical block size. Assume disk starts with 4096 byte  logical  block
       size and all important data has been backed up.

          # sg_format --format --ffmt=1 --size=512 /dev/sdd

       Now /dev/sdd should have 512 byte logical block size. And to switch it back:

          # sg_format --format --ffmt=1 --size=4096 /dev/sdd

       Since fast formats can be very quick (a matter of seconds) using the --wait option may be ap‐
       propriate.

       And to use the Format with preset command this invocation could be used:

          # sg_format --preset=1 --fmtmaxlba /dev/sdd

       The FORMAT PRESETS VPD page (0xb8) should be consulted to check that Preset identifier 0x1 is
       there and has the expected format (i.e. "default host aware zoned block device model with 512
       bytes of user data in each logical block").  That VPD page can  be  viewed  with  the  sg_vpd
       utility.

EXIT STATUS
       The  exit  status of sg_format is 0 when it is successful. Otherwise see the sg3_utils(8) man
       page. Unless the --wait option is given, the exit status may not reflect the success of  oth‐
       erwise  of  the format.  Using sg_turs(8) and sg_readcap(8) after the format operation may be
       wise.

       The Unix convention is that "no news is good news" but that can be a bit unnerving  after  an
       operation like format, especially if it finishes quickly (i.e. before the first progress poll
       is sent). Giving the --verbose option once should supply enough additional output  to  settle
       those nerves.

AUTHORS
       Written by Grant Grundler, James Bottomley and Douglas Gilbert.

REPORTING BUGS
       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT
       Copyright © 2005-2020 Grant Grundler, James Bottomley and Douglas Gilbert
       This software is distributed under the GPL version 2. There is NO warranty; not even for MER‐
       CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
       sg_turs(8), sg_requests(8), sg_inq(8), sg_modes(8), sg_vpd(8), sg_reassign(8), sg_readcap(8),
       sg3_utils(8),  sg_sanitize(8) [all in sg3_utils], lsscsi(8), mt(mt-st), sdparm(8), scsiformat
       (old), hdparm(8)



sg3_utils-1.45                              January 2020                                SG_FORMAT(8)
sg_format(8)
NAME SYNOPSIS DESCRIPTION OPTIONS
-C, --cmplst={0|1} -c, --count=COUNT -D, --dcrt -d, --dry-run -e, --early -t, --ffmt=FFMT -b, --fmtmaxlba -f, --fmtpinfo=FPI -F, --format -h, --help -I, --ip-def -l, --long -M, --mode=MP -P, --pfu=PFU -q, --pie=PIE -p, --pinfo -x, --poll=PT -E, --preset=ID -Q, --quick -r, --resize -R, --rto_req -S, --security -6, --six -s, --size=LB_SZ -T, --tape=FM -m, --timeout=SECS -v, --verbose -y, --verify -V, --version -w, --wait
LISTS PROTECTION INFORMATION NOTES TAPE EXAMPLES EXIT STATUS AUTHORS REPORTING BUGS COPYRIGHT SEE ALSO

Generated by phpman v3.7.12 Author: Che Dong Under GNU General Public License
2026-06-13 14:49 @216.73.216.28
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 TransitionalValid CSS!

^_back to top