CCD(4)                    OpenBSD Programmer's Manual                   CCD(4)

NAME
     ccd - concatenated disk driver

SYNOPSIS
     pseudo-device ccd [count]

DESCRIPTION
     The ccd driver provides the capability of combining one or more
     disks/partitions into one virtual disk.

     Note that the `raw' partitions of the disks should not be combined.  Each
     component partition should be offset at least one cylinder from the be-
     ginning of the component disk.  This avoids potential conflicts between
     the component disk's disklabel(8) and the concatenated disk's disklabel.
     The kernel wants to only allow component partitions of type FS_CCD, but
     due to disklabel restrictions on some architectures will also accept com-
     ponent partitions of FS_BSDFFS.

     In order to compile in support for ccd, make sure your kernel configura-
     tion file contains a line similar to the following (GENERIC does by de-
     fault):

           pseudo-device   ccd     4       # concatenated disk devices

     The optional count argument specifies how many concatenated disk devices
     are allocated for at boot time.  In this example, no more than 4 may be
     configured.

     A ccd may be either serially concatenated, interleaved, or mirrored.  To
     serially concatenate partitions, specify an interleave factor of 0.  Mir-
     roring configurations require an even number of components.

     If a ccd is interleaved correctly, a ``striping'' effect is achieved,
     which can increase performance.  Finding the optimum interleave factor is
     a hard problem.  Some things to think about are the number of disks in
     the ccd, the typical read-ahead opportunities, the filesystem blocksize,
     and if it's possible to use the optimized ccd I/O protocol.  The opti-
     mized protocol allows smaller interleave factors for a comparably cheap
     price but requires that the factor be a multiple of the software page
     size (CLBYTES), and that mirroring is not requested.  So far the best
     policy is to test with different interleaves and benchmark typical uses.
     A rule of thumb might be to use the software pagesize with the optimized
     I/O protocol (the default, unless the requirements mentioned above are
     not fulfilled) or MAXBSIZE / #components with the unoptimized protocol.
     Since the interleave factor is expressed in units of DEV_BSIZE, one must
     account for sector sizes other than DEV_BSIZE in order to calculate the
     correct interleave.  The kernel will not allow an interleave factor less
     than the size of the largest component sector divided by DEV_BSIZE.

     Note that best performance is achieved if all component disks have the
     same geometry and size.  Optimum striping cannot occur with different
     disk types.

     There is a run-time utility that is used for configuring concatenated
     disks.  See ccdconfig(8) for more information.

FILES
     /dev/{,r}ccd*    ccd device special files

SEE ALSO
     MAKEDEV(8), ccdconfig(8), disklabel(8), fsck(8), growfs(8), mount(8),
     newfs(8)

HISTORY
     The concatenated disk driver was originally written at the University of
     Utah.

CAVEATS
     If just one (or more) of the disks in a non-redundant ccd configuration
     fails, the entire file system will be lost.

OpenBSD 4.7                      May 31, 2007                                2
