MirBSD manpage: ccd(4)
CCD(4) BSD Programmer's Manual CCD(4)
ccd - concatenated disk driver
pseudo-device ccd [count]
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 optimized proto-
col 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 proto-
col (the default, unless the requirements mentioned above are not ful-
filled) or MAXBSIZE / #components with the unoptimized protocol. Since
the interleave factor is expressed in units of DEV_BSIZE, one must ac-
count 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
ccdconfig(8) for more information.
If just one (or more) of the disks in a ccd fails, the entire filesystem
will be lost.
/dev/{,r}ccd* ccd device special files
MAKEDEV(8), ccdconfig(8), config(8), fsck(8), mount(8), newfs(8)
The concatenated disk driver was originally written at the University of
Utah.
MirBSD #10-current August 9, 1995 1