xref: /freebsd/share/man/man4/ccd.4 (revision edf8578117e8844e02c0121147f45e4609b30680)
1.\"	$NetBSD: ccd.4,v 1.5 1995/10/09 06:09:09 thorpej Exp $
2.\"
3.\" Copyright (c) 1994 Jason Downs.
4.\" Copyright (c) 1994, 1995 Jason R. Thorpe.
5.\" All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\" 3. All advertising materials mentioning features or use of this software
16.\"    must display the following acknowledgement:
17.\"	This product includes software developed for the NetBSD Project
18.\"	by Jason Downs and Jason R. Thorpe.
19.\" 4. Neither the name of the author nor the names of its contributors
20.\"    may be used to endorse or promote products derived from this software
21.\"    without specific prior written permission.
22.\"
23.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
27.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
30.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
31.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33.\" SUCH DAMAGE.
34.\"
35.Dd August 9, 1995
36.Dt CCD 4
37.Os
38.Sh NAME
39.Nm ccd
40.Nd Concatenated Disk driver
41.Sh SYNOPSIS
42.Cd "device ccd"
43.Sh DESCRIPTION
44The
45.Nm
46driver provides the capability of combining one or more disks/partitions
47into one virtual disk.
48.Pp
49This document assumes that you are familiar with how to generate kernels,
50how to properly configure disks and devices in a kernel
51configuration file, and how to partition disks.
52.Pp
53In order to compile in support for the
54.Nm ,
55you must add a line similar
56to the following to your kernel configuration file:
57.Pp
58.Dl "device	ccd		# concatenated disk devices"
59.Pp
60As of the
61.Fx 3.0
62release, you do not need to
63configure your kernel with
64.Nm
65but may instead use it as a kernel loadable
66module.
67Simply running
68.Xr ccdconfig 8
69will load the module into the kernel.
70.Pp
71A
72.Nm
73may be either serially concatenated or interleaved.
74To serially
75concatenate the partitions, specify the interleave factor of 0.
76Note that mirroring may not be used with an interleave factor of 0.
77.Pp
78There is a run-time utility that is used for configuring
79.Nm Ns s .
80See
81.Xr ccdconfig 8
82for more information.
83.Ss The Interleave Factor
84If a
85.Nm
86is interleaved correctly, a
87.Dq striping
88effect is achieved, which can increase sequential read/write
89performance.
90The interleave factor is expressed in units of
91.Dv DEV_BSIZE
92(usually 512 bytes).
93For large writes, the optimum interleave factor
94is typically the size of a track, while for large reads, it is about a
95quarter of a track.
96(Note that this changes greatly depending on the
97number and speed of disks.)
98For instance, with eight 7,200 RPM drives
99on two Fast-Wide SCSI buses, this translates to about 128 for writes
100and 32 for reads.
101A larger interleave tends to work better when the
102disk is taking a multitasking load by localizing the file I/O from
103any given process onto a single disk.
104You lose sequential performance when
105you do this, but sequential performance is not usually an issue with a
106multitasking load.
107.Pp
108An interleave factor must be specified when using a mirroring configuration,
109even when you have only two disks (i.e., the layout winds up being the same
110no matter what the interleave factor).
111The interleave factor will determine
112how I/O is broken up, however, and a value 128 or greater is recommended.
113.Pp
114.Nm
115has an option for a parity disk, but does not currently implement it.
116.Pp
117The best performance is achieved if all component disks have the same
118geometry and size.
119Optimum striping cannot occur with different
120disk types.
121.Pp
122For random-access oriented workloads, such as news servers, a larger
123interleave factor (e.g., 65,536) is more desirable.
124Note that there
125is not much
126.Nm
127can do to speed up applications that are seek-time limited.
128Larger
129interleave factors will at least reduce the chance of having to seek
130two disk-heads to read one directory or a file.
131.Ss Disk Mirroring
132You can configure the
133.Nm
134to
135.Dq mirror
136any even number of disks.
137See
138.Xr ccdconfig 8
139for how to specify the necessary flags.
140For example, if you have a
141.Nm
142configuration specifying four disks, the first two disks will be mirrored with
143the second two disks.
144A write will be run to both sides of
145the mirror.
146A read will be run to either side of the mirror depending
147on what the driver believes to be most optimal.
148If the read fails,
149the driver will automatically attempt to read the same sector from the
150other side of the mirror.
151Currently
152.Nm
153uses a dual seek zone model to optimize reads for a multi-tasking load
154rather than a sequential load.
155.Pp
156In an event of a disk
157failure, you can use
158.Xr dd 1
159to recover the failed disk.
160.Pp
161Note that a one-disk
162.Nm
163is not the same as the original partition.
164In particular, this means
165if you have a file system on a two-disk mirrored
166.Nm
167and one of the disks fail, you cannot mount and use the remaining
168partition as itself; you have to configure it as a one-disk
169.Nm .
170You cannot replace a disk in a mirrored
171.Nm
172partition without first backing up the partition, then replacing the disk,
173then restoring the partition.
174.Ss Linux Compatibility
175The
176.Tn Linux
177compatibility mode does not try to read the label that
178.Tn Linux Ns '
179.Xr md 4
180driver leaves on the raw devices.
181You will have to give the order
182of devices and the interleave factor on your own.
183When in
184.Tn Linux
185compatibility mode,
186.Nm
187will convert the interleave factor from
188.Tn Linux
189terminology.
190That means you give the same interleave factor that you
191gave as chunk size in
192.Tn Linux .
193.Pp
194If you have a
195.Tn Linux
196.Xr md 4
197device in
198.Dq legacy
199mode, do not use the
200.Dv CCDF_LINUX
201flag in
202.Xr ccdconfig 8 .
203Use the
204.Dv CCDF_NO_OFFSET
205flag instead.
206In that case you have to convert
207the interleave factor on your own, usually it is
208.Tn Linux Ns '
209chunk size multiplied by two.
210.Pp
211Using a
212.Tn Linux
213RAID this way is potentially dangerous and can destroy
214the data in there.
215Since
216.Fx
217does not read the label used by
218.Tn Linux ,
219changes in
220.Tn Linux
221might invalidate the compatibility layer.
222.Pp
223However, using this is reasonably safe if you test the compatibility
224before mounting a RAID read-write for the first time.
225Just using
226.Xr ccdconfig 8
227without mounting does not write anything to the
228.Tn Linux
229RAID.
230Then you do a
231.Nm fsck.ext2fs Pq Pa ports/sysutils/e2fsprogs
232on the
233.Nm
234device using the
235.Fl n
236flag.
237You can mount the file system read-only to check files in there.
238If all this works, it is unlikely that there is a problem with
239.Nm .
240Keep in mind that even when the
241.Tn Linux
242compatibility mode in
243.Nm
244is working correctly, bugs in
245.Fx Ap s
246.Nm ex2fs
247implementation would still destroy
248your data.
249.Sh WARNINGS
250If just one (or more) of the disks in a
251.Nm
252fails, the entire
253file system will be lost unless you are mirroring the disks.
254.Pp
255If one of the disks in a mirror is lost, you should still
256be able to back up your data.
257If a write error occurs, however, data
258read from that sector may be non-deterministic.
259It may return the data
260prior to the write or it may return the data that was written.
261When a
262write error occurs, you should recover and regenerate the data as soon
263as possible.
264.Pp
265Changing the interleave or other parameters for a
266.Nm
267disk usually destroys whatever data previously existed on that disk.
268.Sh FILES
269.Bl -tag -width ".Pa /dev/ccd*"
270.It Pa /dev/ccd*
271.Nm
272device special files
273.El
274.Sh SEE ALSO
275.Xr dd 1 ,
276.Xr ccdconfig 8 ,
277.Xr config 8 ,
278.Xr disklabel 8 ,
279.Xr fsck 8 ,
280.Xr gvinum 8 ,
281.Xr mount 8 ,
282.Xr newfs 8
283.Sh HISTORY
284The concatenated disk driver was originally written at the University of
285Utah.
286