summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorgrog <grog@FreeBSD.org>2000-11-14 20:54:37 +0000
committergrog <grog@FreeBSD.org>2000-11-14 20:54:37 +0000
commit455a2b4476f04055dcf5bf8a71c56c3a4cfcd610 (patch)
tree875439d24225265c9e6f89bd387bffd8114ad490 /sbin
parenta4b965de593867f6cf960d508f56bbc76f210e26 (diff)
downloadFreeBSD-src-455a2b4476f04055dcf5bf8a71c56c3a4cfcd610.zip
FreeBSD-src-455a2b4476f04055dcf5bf8a71c56c3a4cfcd610.tar.gz
Document the correct default states for additional plexes of a
multi-plex volume. Confusion reported by: many Clarify recommendations for default plex stripe size.
Diffstat (limited to 'sbin')
-rw-r--r--sbin/vinum/vinum.854
1 files changed, 31 insertions, 23 deletions
diff --git a/sbin/vinum/vinum.8 b/sbin/vinum/vinum.8
index ad9862f..a10bc8e 100644
--- a/sbin/vinum/vinum.8
+++ b/sbin/vinum/vinum.8
@@ -273,7 +273,7 @@ Set the state of the object to \fIstate\fP\|
.Cd setdaemon
.Op value
.in +1i
-Set daemon configuration.
+Set dæmon configuration.
.in
.Cd setstate
.Ar state
@@ -1219,7 +1219,7 @@ care: it can result in total loss of data on a volume.
.Nm setdaemon
sets a variable bitmask for the
.Nm
-daemon. This command is temporary and will be replaced. Currently, the bit mask
+dæmon. This command is temporary and will be replaced. Currently, the bit mask
may contain the bits 1 (log every action to syslog) and 4 (don't update
configuration). Option bit 4 can be useful for error recovery.
.It Nm setstate
@@ -1685,15 +1685,23 @@ read policy reads from the specified plex every time.
.It Nm setupstate
.Pp
When creating a multi-plex volume, assume that the contents of all the plexes
-are consistent. This is normally not the case, and correctly you should use the
-.Nm init
+are consistent. This is normally not the case, so by default
+.Nm
+sets all plexes except the first one to the
+.Em faulty
+state. Use the
+.Nm start
command to first bring them to a consistent state. In the case of striped and
concatenated plexes, however, it does not normally cause problems to leave them
inconsistent: when using a volume for a file system or a swap partition, the
previous contents of the disks are not of interest, so they may be ignored.
-If you want to take this risk, use this keyword. It will only apply to the
-plexes defined immediately after the volume in the configuration file. If you
-add plexes to a volume at a later time, you must integrate them.
+If you want to take this risk, use the
+.Nm setupstate
+keyword. It will only apply to the plexes defined immediately after the volume
+in the configuration file. If you add plexes to a volume at a later time, you
+must integrate them manually with the
+.Nm start
+command.
.Pp
Note that you \fImust\fP\| use the
.Nm init
@@ -1743,7 +1751,8 @@ smaller will result in a significant increase in I/O activity due to mapping of
individual requests over multiple disks. The performance improvement due to the
increased number of concurrent transfers caused by this mapping will not make up
for the performance drop due to the increase in latency. A good guideline for
-stripe size is between 256 kB and 512 kB.
+stripe size is between 256 kB and 512 kB. Avoid powers of 2, however: they tend
+to cause all superblocks to be placed on the first subdisk.
.Pp
A striped plex must have at least two subdisks (otherwise it is a concatenated
plex), and each must be the same size. A RAID-5 plex must have at least three
@@ -2306,24 +2315,23 @@ performance. In particular, most systems use far too small a stripe size. The
following discussion applies to all RAID systems, not just to
.Nm vinum .
.Pp
-The
-.Fx
-block I/O system issues requests of between .5kB and 60 kB; a
+The FreeBSD block I/O system issues requests of between .5kB and 128 kB; a
typical mix is somewhere round 8 kB. You can't stop any striping system from
-breaking a request into two physical requests, and if you do it wrong it can be
-broken into several. This will result in a significant drop in performance: the
-decrease in transfer time per disk is offset by the order of magnitude greater
-increase in latency.
-.Pp
-With modern disk sizes and the
-.Fx
-I/O system, you can expect to have a
+breaking a request into two physical requests, and if you make the stripe small
+enough, it can be broken into several. This will result in a significant drop
+in performance: the decrease in transfer time per disk is offset by the order of
+magnitude greater increase in latency.
+.Pp
+With modern disk sizes and the FreeBSD I/O system, you can expect to have a
reasonably small number of fragmented requests with a stripe size between 256 kB
and 512 kB; with correct RAID implementations there is no obvious reason not to
increase the size to 2 or 4 MB on a large disk.
.Pp
When choosing a stripe size, consider that most current ufs file systems have
-cylinder groups 32 MB in size.
+cylinder groups 32 MB in size. If you have a stripe size and number of disks
+both of which are a power of two, it is probable that all superblocks and inodes
+will be placed on the same subdisk, which will impact performance significantly.
+Choose an odd number instead, for example 479 kB.
.Pp
The easiest way to consider the impact of any transfer in a multi-access system
is to look at it from the point of view of the potential bottleneck, the disk
@@ -2471,7 +2479,7 @@ use the
command. Normally other states are created automatically by the relationship
between objects. For example, if you add a plex to a volume, the subdisks of
the plex will be set in the
-.Em stale
+.Em empty
state, indicating that, though the hardware is accessible, the data on the
subdisk is invalid. As a result of this state, the plex will be set in the
.Em faulty
@@ -2534,10 +2542,10 @@ does not automatically initialize the plexes. This means that the contents are
not known, but they are certainly not consistent. As a result, by default
.Nm
sets the state of all newly-created plexes except the first to
-.Ar stale .
+.Ar faulty .
In order to synchronize them with the first plex, you must
.Nm start
-their subdisks, which causes
+them, which causes
.Nm
to copy the data from a plex which is in the
.Ar up
OpenPOWER on IntegriCloud