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 beginning 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 component partitions of FS_BSDFFS.

In order to compile in support for ccd, make sure your kernel configuration file contains a line similar to the following (GENERIC does by default):

    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. Mirroring 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 optimized 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.