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

NAME
     ccd - concatenated disk driver

SYNOPSIS
     pseudo-device ccd 4

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

     This document assumes that you're familiar with how to generate kernels,
     how to properly configure disks and pseudo-devices in a kernel configura-
     tion file, and how to partition disks.

     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 and the ccd'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 component partitions
     of FS_BSDFFS.

     In order to compile in support for the ccd, you must add a line similar
     to the following to your kernel configuration file:

           pseudo-device  ccd  4    # concatenated disk devices

     The count argument is how many ccd's memory is allocated for at boot
     time.  In this example, no more than 4 ccd's may be configured.

     A ccd may be either serially concatenated or interleaved.  To serially
     concatenate partitions specify an interleave factor of 0.

     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 ccd's. See ccd-
     config(8) for more information.

WARNINGS
     If just one (or more) of the disks in a ccd fails, the entire file system
     will be lost.

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

SEE ALSO
     MAKEDEV(8), ccdconfig(8), config(8), fsck(8), mount(8), newfs(8)

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

OpenBSD 3.0                     August 9, 1995                               2
