Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CCD(4)			     Kernel Interfaces Manual			  CCD(4)

NAME
     ccd -- Concatenated Disk driver

SYNOPSIS
     device ccd

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

     This document assumes that you are familiar with how to  generate	kernels,
     how to properly configure disks and devices in a kernel configuration file,
     and how to partition disks.

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

	   device    ccd       # concatenated disk devices

     As of the FreeBSD 3.0 release, you do not need  to  configure  your  kernel
     with  ccd	but may instead use it as a kernel loadable module.  Simply run-
     ning ccdconfig(8) will load the module into the kernel.

     A ccd may be either serially concatenated or interleaved.	To serially con-
     catenate the partitions, specify the interleave factor  of  0.   Note  that
     mirroring may not be used with an interleave factor of 0.

     There is a run-time utility that is used for configuring ccds.  See ccdcon-
     fig(8) for more information.

   The Interleave Factor
     If  a  ccd is interleaved correctly, a "striping" effect is achieved, which
     can increase sequential read/write performance.  The interleave  factor  is
     expressed in units of DEV_BSIZE (usually 512 bytes).  For large writes, the
     optimum interleave factor is typically the size of a track, while for large
     reads,  it  is about a quarter of a track.  (Note that this changes greatly
     depending on the number and speed of  disks.)   For  instance,  with  eight
     7,200  RPM drives on two Fast-Wide SCSI buses, this translates to about 128
     for writes and 32 for reads.  A larger interleave tends to work better when
     the disk is taking a multitasking load by localizing the file I/O from  any
     given process onto a single disk.	You lose sequential performance when you
     do  this,	but sequential performance is not usually an issue with a multi-
     tasking load.

     An interleave factor must be specified when using	a  mirroring  configura-
     tion,  even  when	you have only two disks (i.e., the layout winds up being
     the same no matter what the interleave factor).  The interleave factor will
     determine how I/O is broken up, however, and a value 128 or greater is rec-
     ommended.

     ccd has an option for a parity disk, but does not currently implement it.

     The best performance is achieved if all component disks have the same geom-
     etry and size.  Optimum striping cannot occur with different disk types.

     For random-access oriented workloads, such as news servers, a larger inter-
     leave factor (e.g., 65,536) is more desirable.  Note that there is not much
     ccd can do to speed up applications that are seek-time limited.  Larger in-
     terleave factors will at least reduce the chance  of  having  to  seek  two
     disk-heads to read one directory or a file.

   Disk Mirroring
     You  can  configure the ccd to "mirror" any even number of disks.	See ccd-
     config(8) for how to specify the necessary flags.	For example, if you have
     a ccd configuration specifying four disks, the first two disks will be mir-
     rored with the second two disks.  A write will be run to both sides of  the
     mirror.   A read will be run to either side of the mirror depending on what
     the driver believes to be most optimal.  If the read fails, the driver will
     automatically attempt to read the same sector from the other  side  of  the
     mirror.   Currently ccd uses a dual seek zone model to optimize reads for a
     multi-tasking load rather than a sequential load.

     In an event of a disk failure, you can use  dd(1)	to  recover  the  failed
     disk.

     Note  that  a  one-disk  ccd is not the same as the original partition.  In
     particular, this means if you have a file system on a two-disk mirrored ccd
     and one of the disks fail, you cannot mount and use the remaining partition
     as itself; you have to configure it as a one-disk ccd.  You cannot  replace
     a	disk in a mirrored ccd partition without first backing up the partition,
     then replacing the disk, then restoring the partition.

   Linux Compatibility
     The Linux compatibility mode does not try to read	the  label  that  Linux'
     md(4) driver leaves on the raw devices.  You will have to give the order of
     devices and the interleave factor on your own.  When in Linux compatibility
     mode,  ccd will convert the interleave factor from Linux terminology.  That
     means you give the same interleave factor that you gave as  chunk	size  in
     Linux.

     If  you  have  a  Linux  md(4)  device  in  "legacy"  mode,  do not use the
     CCDF_LINUX flag in ccdconfig(8).  Use the CCDF_NO_OFFSET flag instead.   In
     that case you have to convert the interleave factor on your own, usually it
     is Linux' chunk size multiplied by two.

     Using  a  Linux  RAID this way is potentially dangerous and can destroy the
     data in there.  Since FreeBSD does  not  read  the  label	used  by  Linux,
     changes in Linux might invalidate the compatibility layer.

     However, using this is reasonably safe if you test the compatibility before
     mounting  a  RAID	read-write  for the first time.  Just using ccdconfig(8)
     without mounting does not write anything to the Linux RAID.  Then you do  a
     fsck.ext2fs  (ports/filesystems/e2fsprogs)  on  the ccd device using the -n
     flag.  You can mount the file system read-only to check files in there.  If
     all this works, it is unlikely that there is a problem with ccd.	Keep  in
     mind  that  even  when  the Linux compatibility mode in ccd is working cor-
     rectly, bugs in FreeBSD's ex2fs implementation  would  still  destroy  your
     data.

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

     If one of the disks in a mirror is lost, you should still be able	to  back
     up your data.  If a write error occurs, however, data read from that sector
     may  be non-deterministic.  It may return the data prior to the write or it
     may return the data that was written.   When  a  write  error  occurs,  you
     should recover and regenerate the data as soon as possible.

     Changing the interleave or other parameters for a ccd disk usually destroys
     whatever data previously existed on that disk.

FILES
     /dev/ccd*	ccd device special files

SEE ALSO
     dd(1), ccdconfig(8), config(8), disklabel(8), fsck(8), mount(8), newfs(8)

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

FreeBSD ports 15.1		January 23, 2025			  CCD(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ccd&sektion=4&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help