(tar.info.gz) Blocking
Info Catalog
(tar.info.gz) Common Problems and Solutions
(tar.info.gz) Media
(tar.info.gz) Many
9.4 Blocking
============
"Block" and "record" terminology is rather confused, and it is also
confusing to the expert reader. On the other hand, readers who are new
to the field have a fresh mind, and they may safely skip the next two
paragraphs, as the remainder of this manual uses those two terms in a
quite consistent way.
John Gilmore, the writer of the public domain 'tar' from which GNU
'tar' was originally derived, wrote (June 1995):
The nomenclature of tape drives comes from IBM, where I believe
they were invented for the IBM 650 or so. On IBM mainframes, what
is recorded on tape are tape blocks. The logical organization of
data is into records. There are various ways of putting records
into blocks, including 'F' (fixed sized records), 'V' (variable
sized records), 'FB' (fixed blocked: fixed size records, N to a
block), 'VB' (variable size records, N to a block), 'VSB' (variable
spanned blocked: variable sized records that can occupy more than
one block), etc. The 'JCL' 'DD RECFORM=' parameter specified this
to the operating system.
The Unix man page on 'tar' was totally confused about this. When I
wrote 'PD TAR', I used the historically correct terminology ('tar'
writes data records, which are grouped into blocks). It appears
that the bogus terminology made it into POSIX (no surprise here),
and now Franc,ois has migrated that terminology back into the
source code too.
The term "physical block" means the basic transfer chunk from or to a
device, after which reading or writing may stop without anything being
lost. In this manual, the term "block" usually refers to a disk
physical block, _assuming_ that each disk block is 512 bytes in length.
It is true that some disk devices have different physical blocks, but
'tar' ignore these differences in its own format, which is meant to be
portable, so a 'tar' block is always 512 bytes in length, and "block"
always mean a 'tar' block. The term "logical block" often represents
the basic chunk of allocation of many disk blocks as a single entity,
which the operating system treats somewhat atomically; this concept is
only barely used in GNU 'tar'.
The term "physical record" is another way to speak of a physical
block, those two terms are somewhat interchangeable. In this manual,
the term "record" usually refers to a tape physical block, _assuming_
that the 'tar' archive is kept on magnetic tape. It is true that
archives may be put on disk or used with pipes, but nevertheless, 'tar'
tries to read and write the archive one "record" at a time, whatever the
medium in use. One record is made up of an integral number of blocks,
and this operation of putting many disk blocks into a single tape block
is called "reblocking", or more simply, "blocking". The term "logical
record" refers to the logical organization of many characters into
something meaningful to the application. The term "unit record"
describes a small set of characters which are transmitted whole to or by
the application, and often refers to a line of text. Those two last
terms are unrelated to what we call a "record" in GNU 'tar'.
When writing to tapes, 'tar' writes the contents of the archive in
chunks known as "records". To change the default blocking factor, use
the '--blocking-factor=512-SIZE' ('-b 512-SIZE') option. Each record
will then be composed of 512-SIZE blocks. (Each 'tar' block is 512
bytes. Standard.) Each file written to the archive uses at
least one full record. As a result, using a larger record size can
result in more wasted space for small files. On the other hand, a
larger record size can often be read and written much more efficiently.
Further complicating the problem is that some tape drives ignore the
blocking entirely. For these, a larger record size can still improve
performance (because the software layers above the tape drive still
honor the blocking), but not as dramatically as on tape drives that
honor blocking.
When reading an archive, 'tar' can usually figure out the record size
on itself. When this is the case, and a non-standard record size was
used when the archive was created, 'tar' will print a message about a
non-standard blocking factor, and then operate normally. On some tape
devices, however, 'tar' cannot figure out the record size itself. On
most of those, you can specify a blocking factor (with
'--blocking-factor') larger than the actual blocking factor, and then
use the '--read-full-records' ('-B') option. (If you specify a blocking
factor with '--blocking-factor' and don't use the '--read-full-records'
option, then 'tar' will not attempt to figure out the recording size
itself.) On some devices, you must always specify the record size
exactly with '--blocking-factor' when reading, because 'tar' cannot
figure it out. In any case, use '--list' ('-t') before doing any
extractions to see whether 'tar' is reading the archive correctly.
'tar' blocks are all fixed size (512 bytes), and its scheme for
putting them into records is to put a whole number of them (one or more)
into each record. 'tar' records are all the same size; at the end of
the file there's a block containing all zeros, which is how you tell
that the remainder of the last record(s) are garbage.
In a standard 'tar' file (no options), the block size is 512 and the
record size is 10240, for a blocking factor of 20. What the
'--blocking-factor' option does is sets the blocking factor, changing
the record size while leaving the block size at 512 bytes. 20 was fine
for ancient 800 or 1600 bpi reel-to-reel tape drives; most tape drives
these days prefer much bigger records in order to stream and not waste
tape. When writing tapes for myself, some tend to use a factor of the
order of 2048, say, giving a record size of around one megabyte.
If you use a blocking factor larger than 20, older 'tar' programs
might not be able to read the archive, so we recommend this as a limit
to use in practice. GNU 'tar', however, will support arbitrarily large
record sizes, limited only by the amount of virtual memory or the
physical characteristics of the tape device.
Menu
* Format Variations Format Variations
* Blocking Factor The Blocking Factor of an Archive
Info Catalog
(tar.info.gz) Common Problems and Solutions
(tar.info.gz) Media
(tar.info.gz) Many
automatically generated by
info2html