Sync usage with man page.
[netbsd-mini2440.git] / share / man / man4 / raid.4
blob61b60af7a407136cfbd501e0758d4e327e6d66ac
1 .\"     $NetBSD: raid.4,v 1.35 2008/05/02 18:11:05 martin Exp $
2 .\"
3 .\" Copyright (c) 1998 The NetBSD Foundation, Inc.
4 .\" All rights reserved.
5 .\"
6 .\" This code is derived from software contributed to The NetBSD Foundation
7 .\" by Greg Oster
8 .\"
9 .\" Redistribution and use in source and binary forms, with or without
10 .\" modification, are permitted provided that the following conditions
11 .\" are met:
12 .\" 1. Redistributions of source code must retain the above copyright
13 .\"    notice, this list of conditions and the following disclaimer.
14 .\" 2. Redistributions in binary form must reproduce the above copyright
15 .\"    notice, this list of conditions and the following disclaimer in the
16 .\"    documentation and/or other materials provided with the distribution.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 .\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22 .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 .\" POSSIBILITY OF SUCH DAMAGE.
29 .\"
30 .\"
31 .\" Copyright (c) 1995 Carnegie-Mellon University.
32 .\" All rights reserved.
33 .\"
34 .\" Author: Mark Holland
35 .\"
36 .\" Permission to use, copy, modify and distribute this software and
37 .\" its documentation is hereby granted, provided that both the copyright
38 .\" notice and this permission notice appear in all copies of the
39 .\" software, derivative works or modified versions, and any portions
40 .\" thereof, and that both notices appear in supporting documentation.
41 .\"
42 .\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
43 .\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
44 .\" FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
45 .\"
46 .\" Carnegie Mellon requests users of this software to return to
47 .\"
48 .\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
49 .\"  School of Computer Science
50 .\"  Carnegie Mellon University
51 .\"  Pittsburgh PA 15213-3890
52 .\"
53 .\" any improvements or extensions that they make and grant Carnegie the
54 .\" rights to redistribute these changes.
55 .\"
56 .Dd August 6, 2007
57 .Dt RAID 4
58 .Os
59 .Sh NAME
60 .Nm raid
61 .Nd RAIDframe disk driver
62 .Sh SYNOPSIS
63 .Cd options RAID_AUTOCONFIG
64 .Cd options RAID_DIAGNOSTIC
65 .Cd options RF_ACC_TRACE=n
66 .Cd options RF_DEBUG_MAP=n
67 .Cd options RF_DEBUG_PSS=n
68 .Cd options RF_DEBUG_QUEUE=n
69 .Cd options RF_DEBUG_QUIESCE=n
70 .Cd options RF_DEBUG_RECON=n
71 .Cd options RF_DEBUG_STRIPELOCK=n
72 .Cd options RF_DEBUG_VALIDATE_DAG=n
73 .Cd options RF_DEBUG_VERIFYPARITY=n
74 .Cd options RF_INCLUDE_CHAINDECLUSTER=n
75 .Cd options RF_INCLUDE_EVENODD=n
76 .Cd options RF_INCLUDE_INTERDECLUSTER=n
77 .Cd options RF_INCLUDE_PARITY_DECLUSTERING=n
78 .Cd options RF_INCLUDE_PARITY_DECLUSTERING_DS=n
79 .Cd options RF_INCLUDE_PARITYLOGGING=n
80 .Cd options RF_INCLUDE_RAID5_RS=n
81 .Pp
82 .Cd "pseudo-device raid" Op Ar count
83 .Sh DESCRIPTION
84 The
85 .Nm
86 driver provides RAID 0, 1, 4, and 5 (and more!) capabilities to
87 .Nx .
88 This
89 document assumes that the reader has at least some familiarity with RAID
90 and RAID concepts.
91 The reader is also assumed to know how to configure
92 disks and pseudo-devices into kernels, how to generate kernels, and how
93 to partition disks.
94 .Pp
95 RAIDframe provides a number of different RAID levels including:
96 .Bl -tag -width indent
97 .It RAID 0
98 provides simple data striping across the components.
99 .It RAID 1
100 provides mirroring.
101 .It RAID 4
102 provides data striping across the components, with parity
103 stored on a dedicated drive (in this case, the last component).
104 .It RAID 5
105 provides data striping across the components, with parity
106 distributed across all the components.
109 There are a wide variety of other RAID levels supported by RAIDframe.
110 The configuration file options to enable them are briefly outlined
111 at the end of this section.
113 Depending on the parity level configured, the device driver can
114 support the failure of component drives.
115 The number of failures
116 allowed depends on the parity level selected.
117 If the driver is able
118 to handle drive failures, and a drive does fail, then the system is
119 operating in "degraded mode".
120 In this mode, all missing data must be
121 reconstructed from the data and parity present on the other
122 components.
123 This results in much slower data accesses, but
124 does mean that a failure need not bring the system to a complete halt.
126 The RAID driver supports and enforces the use of
127 .Sq component labels .
129 .Sq component label
130 contains important information about the component, including a
131 user-specified serial number, the row and column of that component in
132 the RAID set, and whether the data (and parity) on the component is
133 .Sq clean .
134 The component label currently lives at the half-way point of the
135 .Sq reserved section
136 located at the beginning of each component.
137 This
138 .Sq reserved section
139 is RF_PROTECTED_SECTORS in length (64 blocks or 32Kbytes) and the
140 component label is currently 1Kbyte in size.
142 If the driver determines that the component labels are very inconsistent with
143 respect to each other (e.g. two or more serial numbers do not match)
144 or that the component label is not consistent with its assigned place
145 in the set (e.g. the component label claims the component should be
146 the 3rd one in a 6-disk set, but the RAID set has it as the 3rd component
147 in a 5-disk set) then the device will fail to configure.
148 If the
149 driver determines that exactly one component label seems to be
150 incorrect, and the RAID set is being configured as a set that supports
151 a single failure, then the RAID set will be allowed to configure, but
152 the incorrectly labeled component will be marked as
153 .Sq failed ,
154 and the RAID set will begin operation in degraded mode.
155 If all of the components are consistent among themselves, the RAID set
156 will configure normally.
158 Component labels are also used to support the auto-detection and
159 autoconfiguration of RAID sets.
160 A RAID set can be flagged as
161 autoconfigurable, in which case it will be configured automatically
162 during the kernel boot process.
163 RAID file systems which are
164 automatically configured are also eligible to be the root file system.
165 There is currently only limited support (alpha, amd64, i386, pmax,
166 sparc, sparc64, and vax architectures)
167 for booting a kernel directly from a RAID 1 set, and no support for
168 booting from any other RAID sets.
169 To use a RAID set as the root
170 file system, a kernel is usually obtained from a small non-RAID
171 partition, after which any autoconfiguring RAID set can be used for the
172 root file system.
174 .Xr raidctl 8
175 for more information on autoconfiguration of RAID sets.
176 Note that with autoconfiguration of RAID sets, it is no longer
177 necessary to hard-code SCSI IDs of drives.
178 The autoconfiguration code will
179 correctly configure a device even after any number of the components
180 have had their device IDs changed or device names changed.
182 The driver supports
183 .Sq hot spares ,
184 disks which are on-line, but are not
185 actively used in an existing file system.
186 Should a disk fail, the
187 driver is capable of reconstructing the failed disk onto a hot spare
188 or back onto a replacement drive.
189 If the components are hot swappable, the failed disk can then be
190 removed, a new disk put in its place, and a copyback operation
191 performed.
192 The copyback operation, as its name indicates, will copy
193 the reconstructed data from the hot spare to the previously failed
194 (and now replaced) disk.
195 Hot spares can also be hot-added using
196 .Xr raidctl 8 .
198 If a component cannot be detected when the RAID device is configured,
199 that component will be simply marked as 'failed'.
201 The user-land utility for doing all
203 configuration and other operations
205 .Xr raidctl 8 .
206 Most importantly,
207 .Xr raidctl 8
208 must be used with the
209 .Fl i
210 option to initialize all RAID sets.
211 In particular, this
212 initialization includes re-building the parity data.
213 This rebuilding
214 of parity data is also required when either a) a new RAID device is
215 brought up for the first time or b) after an un-clean shutdown of a
216 RAID device.
217 By using the
218 .Fl P
219 option to
220 .Xr raidctl 8 ,
221 and performing this on-demand recomputation of all parity
222 before doing a
223 .Xr fsck 8
224 or a
225 .Xr newfs 8 ,
226 file system integrity and parity integrity can be ensured.
227 It bears repeating again that parity recomputation is
228 .Ar required
229 before any file systems are created or used on the RAID device.
230 If the
231 parity is not correct, then missing data cannot be correctly recovered.
233 RAID levels may be combined in a hierarchical fashion.
234 For example, a RAID 0
235 device can be constructed out of a number of RAID 5 devices (which, in turn,
236 may be constructed out of the physical disks, or of other RAID devices).
238 The first step to using the
240 driver is to ensure that it is suitably configured in the kernel.
241 This is done by adding a line similar to:
242 .Bd -unfilled -offset indent
243 pseudo-device   raid   4       # RAIDframe disk device
246 to the kernel configuration file.
248 .Sq count
249 argument
250 .Sq ( 4 ,
251 in this case), specifies the number of RAIDframe drivers to configure.
252 To turn on component auto-detection and autoconfiguration of RAID
253 sets, simply add:
254 .Bd -unfilled -offset indent
255 options RAID_AUTOCONFIG
258 to the kernel configuration file.
260 All component partitions must be of the type
261 .Dv FS_BSDFFS
262 (e.g. 4.2BSD) or
263 .Dv FS_RAID .
264 The use of the latter is strongly encouraged, and is required if
265 autoconfiguration of the RAID set is desired.
266 Since RAIDframe leaves
267 room for disklabels, RAID components can be simply raw disks, or
268 partitions which use an entire disk.
270 A more detailed treatment of actually using a
272 device is found in
273 .Xr raidctl 8 .
274 It is highly recommended that the steps to reconstruct, copyback, and
275 re-compute parity are well understood by the system administrator(s)
276 .Ar before
277 a component failure.
278 Doing the wrong thing when a component fails may
279 result in data loss.
281 Additional internal consistency checking can be enabled by specifying:
282 .Bd -unfilled -offset indent
283 options RAID_DIAGNOSTIC
286 These assertions are disabled by default in order to improve
287 performance.
289 RAIDframe supports an access tracing facility for tracking both
290 requests made and performance of various parts of the RAID systems
291 as the request is processed.
292 To enable this tracing the following option may be specified:
293 .Bd -unfilled -offset indent
294 options RF_ACC_TRACE=1
297 For extensive debugging there are a number of kernel options which
298 will aid in performing extra diagnosis of various parts of the
299 RAIDframe sub-systems.
300 Note that in order to make full use of these options it is often
301 necessary to enable one or more debugging options as listed in
302 .Pa src/sys/dev/raidframe/rf_options.h .
303 As well, these options are also only typically useful for people who wish
304 to debug various parts of RAIDframe.
305 The options include:
307 For debugging the code which maps RAID addresses to physical
308 addresses:
309 .Bd -unfilled -offset indent
310 options RF_DEBUG_MAP=1
313 Parity stripe status debugging is enabled with:
314 .Bd -unfilled -offset indent
315 options RF_DEBUG_PSS=1
318 Additional debugging for queuing is enabled with:
319 .Bd -unfilled -offset indent
320 options RF_DEBUG_QUEUE=1
323 Problems with non-quiescent file systems should be easier to debug if
324 the following is enabled:
325 .Bd -unfilled -offset indent
326 options RF_DEBUG_QUIESCE=1
329 Stripelock debugging is enabled with:
330 .Bd -unfilled -offset indent
331 options RF_DEBUG_STRIPELOCK=1
334 Additional diagnostic checks during reconstruction are enabled with:
335 .Bd -unfilled -offset indent
336 options RF_DEBUG_RECON=1
339 Validation of the DAGs (Directed Acyclic Graphs) used to describe an
340 I/O access can be performed when the following is enabled:
341 .Bd -unfilled -offset indent
342 options RF_DEBUG_VALIDATE_DAG=1
345 Additional diagnostics during parity verification are enabled with:
346 .Bd -unfilled -offset indent
347 options RF_DEBUG_VERIFYPARITY=1
350 There are a number of less commonly used RAID levels supported by
351 RAIDframe.
352 These additional RAID types should be considered experimental, and
353 may not be ready for production use.
354 The various types and the options to enable them are shown here:
356 For Even-Odd parity:
357 .Bd -unfilled -offset indent
358 options RF_INCLUDE_EVENODD=1
361 For RAID level 5 with rotated sparing:
362 .Bd -unfilled -offset indent
363 options RF_INCLUDE_RAID5_RS=1
366 For Parity Logging (highly experimental):
367 .Bd -unfilled -offset indent
368 options RF_INCLUDE_PARITYLOGGING=1
371 For Chain Declustering:
372 .Bd -unfilled -offset indent
373 options RF_INCLUDE_CHAINDECLUSTER=1
376 For Interleaved Declustering:
377 .Bd -unfilled -offset indent
378 options RF_INCLUDE_INTERDECLUSTER=1
381 For Parity Declustering:
382 .Bd -unfilled -offset indent
383 options RF_INCLUDE_PARITY_DECLUSTERING=1
386 For Parity Declustering with Distributed Spares:
387 .Bd -unfilled -offset indent
388 options RF_INCLUDE_PARITY_DECLUSTERING_DS=1
391 The reader is referred to the RAIDframe documentation mentioned in the
392 .Sx HISTORY
393 section for more detail on these various RAID configurations.
394 .Sh WARNINGS
395 Certain RAID levels (1, 4, 5, 6, and others) can protect against some
396 data loss due to component failure.
397 However the loss of two
398 components of a RAID 4 or 5 system, or the loss of a single component
399 of a RAID 0 system, will result in the entire file systems on that RAID
400 device being lost.
401 RAID is
402 .Ar NOT
403 a substitute for good backup practices.
405 Recomputation of parity
406 .Ar MUST
407 be performed whenever there is a chance that it may have been
408 compromised.
409 This includes after system crashes, or before a RAID
410 device has been used for the first time.
411 Failure to keep parity
412 correct will be catastrophic should a component ever fail -- it is
413 better to use RAID 0 and get the additional space and speed, than it
414 is to use parity, but not keep the parity correct.
415 At least with RAID
416 0 there is no perception of increased data security.
417 .Sh FILES
418 .Bl -tag -width /dev/XXrXraidX -compact
419 .It Pa /dev/{,r}raid*
421 device special files.
423 .Sh SEE ALSO
424 .Xr config 1 ,
425 .Xr sd 4 ,
426 .Xr fsck 8 ,
427 .Xr MAKEDEV 8 ,
428 .Xr mount 8 ,
429 .Xr newfs 8 ,
430 .Xr raidctl 8
431 .Sh HISTORY
434 driver in
436 is a port of RAIDframe, a framework for rapid prototyping of RAID
437 structures developed by the folks at the Parallel Data Laboratory at
438 Carnegie Mellon University (CMU).
439 RAIDframe, as originally distributed
440 by CMU, provides a RAID simulator for a number of different
441 architectures, and a user-level device driver and a kernel device
442 driver for Digital Unix.
445 driver is a kernelized version of RAIDframe v1.1.
447 A more complete description of the internals and functionality of
448 RAIDframe is found in the paper "RAIDframe: A Rapid Prototyping Tool
449 for RAID Systems", by William V. Courtright II, Garth Gibson, Mark
450 Holland, LeAnn Neal Reilly, and Jim Zelenka, and published by the
451 Parallel Data Laboratory of Carnegie Mellon University.
454 driver first appeared in
455 .Nx 1.4 .
456 .Sh COPYRIGHT
457 .Bd -unfilled
458 The RAIDframe Copyright is as follows:
460 Copyright (c) 1994-1996 Carnegie-Mellon University.
461 All rights reserved.
463 Permission to use, copy, modify and distribute this software and
464 its documentation is hereby granted, provided that both the copyright
465 notice and this permission notice appear in all copies of the
466 software, derivative works or modified versions, and any portions
467 thereof, and that both notices appear in supporting documentation.
469 CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
470 CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
471 FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
473 Carnegie Mellon requests users of this software to return to
475  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
476  School of Computer Science
477  Carnegie Mellon University
478  Pittsburgh PA 15213-3890
480 any improvements or extensions that they make and grant Carnegie the
481 rights to redistribute these changes.