198 lines
7.1 KiB
Groff
198 lines
7.1 KiB
Groff
.\" $NetBSD: ccd.4,v 1.5 1995/10/09 06:09:09 thorpej Exp $
|
|
.\"
|
|
.\" Copyright (c) 1994 Jason Downs.
|
|
.\" Copyright (c) 1994, 1995 Jason R. Thorpe.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed for the NetBSD Project
|
|
.\" by Jason Downs and Jason R. Thorpe.
|
|
.\" 4. Neither the name of the author nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd August 9, 1995
|
|
.Dt CCD 4
|
|
.Os NetBSD
|
|
.Sh NAME
|
|
.Nm ccd
|
|
.Nd Concatenated Disk Driver
|
|
.Sh SYNOPSIS
|
|
.Cd "pseudo-device ccd 4"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver provides the capability of combining one or more disks/partitions
|
|
into one virtual disk.
|
|
.Pp
|
|
This document assumes that you're familiar with how to generate kernels,
|
|
how to properly configure disks and pseudo-devices in a kernel
|
|
configuration file, and how to partition disks.
|
|
.Pp
|
|
Note that the
|
|
.Sq raw
|
|
partitions of the disks
|
|
.Pa should not
|
|
be combined. The kernel will only allow component partitions of type
|
|
FS_BSDFFS (type
|
|
.Dq 4.2BSD
|
|
as shown as
|
|
.Xr disklabel 8 ) .
|
|
.Pp
|
|
In order to compile in support for the ccd, you must add a line similar
|
|
to the following to your kernel configuration file:
|
|
.Bd -unfilled -offset indent
|
|
pseudo-device ccd 4 # concatenated disk devices
|
|
.Ed
|
|
.Pp
|
|
The count argument is how many
|
|
.Nm Ns 's
|
|
memory is allocated for a boot time. In this example, no more than 4
|
|
.Nm Ns s
|
|
may be configured. As of the
|
|
.Fx 3.0
|
|
release, you do not need to
|
|
configure your kernel with ccd but may instead use it as a kernel loadable
|
|
module. Simply running
|
|
.Nm ccdconfig
|
|
will load the module into the kernel.
|
|
.Pp
|
|
A
|
|
.Nm
|
|
may be either serially concatenated or interleaved. To serially
|
|
concatenate the partitions, specify the interleave factor of 0.
|
|
Note that mirroring may not be used with an interleave factor of 0.
|
|
.Pp
|
|
There is a run-time utility that is used for configuring
|
|
.Nm Ns s .
|
|
See
|
|
.Xr ccdconfig 8
|
|
for more information.
|
|
.Ss The Interleave Factor
|
|
If a
|
|
.Nm
|
|
is interleaved correctly, a
|
|
.Dq 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
|
|
multitasking load.
|
|
.Pp
|
|
An interleave factor must be specified when using a mirroring configuration,
|
|
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 recommended.
|
|
.Pp
|
|
CCD has an option for a parity disk, but does not currently implement it.
|
|
.Pp
|
|
The best performance is achieved if all component disks have the same
|
|
geometry and size. Optimum striping cannot occur with different
|
|
disk types.
|
|
.Pp
|
|
For random-access oriented workloads, such as news servers, a larger
|
|
interleave factor (e.g., 65,536) is more desirable. Note that there
|
|
isn't much
|
|
.Nm
|
|
can do to speed up applications that are seek-time limited. Larger
|
|
interleave factors will at least reduce the chance of having to seek
|
|
two disk-heads to read one directory or a file.
|
|
.Ss Disk Mirroring
|
|
You can configure the
|
|
.Nm
|
|
to
|
|
.Dq mirror
|
|
any even number of disks. See
|
|
.Xr ccdconfig 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 mirrored 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
|
|
.Nm
|
|
uses a duel seek zone model to optimize reads for a multi-tasking load
|
|
rather then a sequential load.
|
|
.Pp
|
|
In an event of a disk
|
|
failure, you can use
|
|
.Xr dd 1
|
|
to recover the failed disk.
|
|
.Pp
|
|
Note that a one-disk
|
|
.Nm
|
|
is not the same as the original partition. In particular, this means
|
|
if you have a filesystem on a two-disk mirrored
|
|
.Nm
|
|
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
|
|
.Nm .
|
|
You cannot replace a disk in a mirrored
|
|
.Nm
|
|
partition without first backing up the partition, then replacing the disk,
|
|
then restoring the partition.
|
|
.Sh WARNINGS
|
|
If just one (or more) of the disks in a
|
|
.Nm
|
|
fails, the entire
|
|
file system will be lost unless you are mirroring the disks.
|
|
.Pp
|
|
If one of the disks in a mirror is lost, you should still
|
|
be able to backup 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.
|
|
.Pp
|
|
Changing the interleave or other parameters for a
|
|
.Nm
|
|
disk usually destroys whatever data previously existed on that disk.
|
|
.Sh FILES
|
|
/dev/{,r}ccd* - ccd device special files.
|
|
.Pp
|
|
.Sh HISTORY
|
|
The concatenated disk driver was originally written at the University of
|
|
Utah.
|
|
.Sh SEE ALSO
|
|
.Xr dd 1 ,
|
|
.Xr ccdconfig 8 ,
|
|
.Xr config 8 ,
|
|
.Xr disklabel 8 ,
|
|
.Xr fsck 8 ,
|
|
.Xr MAKEDEV 8 ,
|
|
.Xr mount 8 ,
|
|
.Xr newfs 8 ,
|
|
.Xr vinum 8
|