aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/en/articles/vinum/_index.po
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/content/en/articles/vinum/_index.po')
-rw-r--r--documentation/content/en/articles/vinum/_index.po1652
1 files changed, 1652 insertions, 0 deletions
diff --git a/documentation/content/en/articles/vinum/_index.po b/documentation/content/en/articles/vinum/_index.po
new file mode 100644
index 0000000000..ed9a0c336e
--- /dev/null
+++ b/documentation/content/en/articles/vinum/_index.po
@@ -0,0 +1,1652 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR The FreeBSD Project
+# This file is distributed under the same license as the FreeBSD Documentation package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: FreeBSD Documentation VERSION\n"
+"POT-Creation-Date: 2023-05-21 14:43-0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: YAML Front Matter: description
+#: documentation/content/en/articles/vinum/_index.adoc:1
+#, no-wrap
+msgid "The vinum Volume Manager in FreeBSD"
+msgstr ""
+
+#. The Vinum Volume Manager
+#. By Greg Lehey (grog at lemis dot com)
+#. Added to the Handbook by Hiten Pandya <hmp@FreeBSD.org>
+#. and Tom Rhodes <trhodes@FreeBSD.org>
+#. For the FreeBSD Documentation Project
+#. type: Title =
+#: documentation/content/en/articles/vinum/_index.adoc:1
+#: documentation/content/en/articles/vinum/_index.adoc:19
+#, no-wrap
+msgid "The vinum Volume Manager"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:51
+msgid "'''"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:55
+#, no-wrap
+msgid "Synopsis"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:62
+msgid ""
+"No matter the type of disks, there are always potential problems. The disks "
+"can be too small, too slow, or too unreliable to meet the system's "
+"requirements. While disks are getting bigger, so are data storage "
+"requirements. Often a file system is needed that is bigger than a disk's "
+"capacity. Various solutions to these problems have been proposed and "
+"implemented."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:66
+msgid ""
+"One method is through the use of multiple, and sometimes redundant, disks. "
+"In addition to supporting various cards and controllers for hardware "
+"Redundant Array of Independent Disks RAID systems, the base FreeBSD system "
+"includes the [.filename]#vinum# volume manager, a block device driver that "
+"implements virtual disk drives and addresses these three problems. [."
+"filename]#vinum# provides more flexibility, performance, and reliability "
+"than traditional disk storage and implements `RAID`-0, `RAID`-1, and "
+"`RAID`-5 models, both individually and in combination."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:68
+msgid ""
+"This chapter provides an overview of potential problems with traditional "
+"disk storage, and an introduction to the [.filename]#vinum# volume manager."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/vinum/_index.adoc:76
+msgid ""
+"Starting with FreeBSD 5, [.filename]#vinum# has been rewritten to fit into "
+"the extref:{handbook}[GEOM architecture, geom], while retaining the original "
+"ideas, terminology, and on-disk metadata. This rewrite is called _gvinum_ "
+"(for _GEOM vinum_). While this chapter uses the term [.filename]#vinum#, "
+"any command invocations should be performed with `gvinum`. The name of the "
+"kernel module has changed from the original [.filename]#vinum.ko# to [."
+"filename]#geom_vinum.ko#, and all device nodes reside under [.filename]#/dev/"
+"gvinum# instead of [.filename]#/dev/vinum#. As of FreeBSD 6, the original [."
+"filename]#vinum# implementation is no longer available in the code base."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:79
+#, no-wrap
+msgid "Access Bottlenecks"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:83
+msgid ""
+"Modern systems frequently need to access data in a highly concurrent "
+"manner. For example, large FTP or HTTP servers can maintain thousands of "
+"concurrent sessions and have multiple 100 Mbit/s connections to the outside "
+"world, well beyond the sustained transfer rate of most disks."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:87
+msgid ""
+"Current disk drives can transfer data sequentially at up to 70 MB/s, but "
+"this value is of little importance in an environment where many independent "
+"processes access a drive, and where they may achieve only a fraction of "
+"these values. In such cases, it is more interesting to view the problem "
+"from the viewpoint of the disk subsystem. The important parameter is the "
+"load that a transfer places on the subsystem, or the time for which a "
+"transfer occupies the drives involved in the transfer."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:90
+msgid ""
+"In any disk transfer, the drive must first position the heads, wait for the "
+"first sector to pass under the read head, and then perform the transfer. "
+"These actions can be considered to be atomic as it does not make any sense "
+"to interrupt them."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:95
+msgid ""
+"[[vinum-latency]] Consider a typical transfer of about 10 kB: the current "
+"generation of high-performance disks can position the heads in an average of "
+"3.5 ms. The fastest drives spin at 15,000 rpm, so the average rotational "
+"latency (half a revolution) is 2 ms. At 70 MB/s, the transfer itself takes "
+"about 150 μs, almost nothing compared to the positioning time. In such a "
+"case, the effective transfer rate drops to a little over 1 MB/s and is "
+"clearly highly dependent on the transfer size."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:98
+msgid ""
+"The traditional and obvious solution to this bottleneck is \"more "
+"spindles\": rather than using one large disk, use several smaller disks with "
+"the same aggregate storage space. Each disk is capable of positioning and "
+"transferring independently, so the effective throughput increases by a "
+"factor close to the number of disks used."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:102
+msgid ""
+"The actual throughput improvement is smaller than the number of disks "
+"involved. Although each drive is capable of transferring in parallel, there "
+"is no way to ensure that the requests are evenly distributed across the "
+"drives. Inevitably the load on one drive will be higher than on another."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:110
+msgid ""
+"The evenness of the load on the disks is strongly dependent on the way the "
+"data is shared across the drives. In the following discussion, it is "
+"convenient to think of the disk storage as a large number of data sectors "
+"which are addressable by number, rather like the pages in a book. The most "
+"obvious method is to divide the virtual disk into groups of consecutive "
+"sectors the size of the individual physical disks and store them in this "
+"manner, rather like taking a large book and tearing it into smaller "
+"sections. This method is called _concatenation_ and has the advantage that "
+"the disks are not required to have any specific size relationships. It "
+"works well when the access to the virtual disk is spread evenly about its "
+"address space. When access is concentrated on a smaller area, the "
+"improvement is less marked. <<vinum-concat, Concatenated Organization>> "
+"illustrates the sequence in which storage units are allocated in a "
+"concatenated organization."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:112
+#, no-wrap
+msgid "Concatenated Organization"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:113
+#, no-wrap
+msgid "vinum-concat.png"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:119
+msgid ""
+"An alternative mapping is to divide the address space into smaller, equal-"
+"sized components and store them sequentially on different devices. For "
+"example, the first 256 sectors may be stored on the first disk, the next 256 "
+"sectors on the next disk and so on. After filling the last disk, the "
+"process repeats until the disks are full. This mapping is called _striping_ "
+"or RAID-0."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:123
+msgid ""
+"`RAID` offers various forms of fault tolerance, though RAID-0 is somewhat "
+"misleading as it provides no redundancy. Striping requires somewhat more "
+"effort to locate the data, and it can cause additional I/O load where a "
+"transfer is spread over multiple disks, but it can also provide a more "
+"constant load across the disks. <<vinum-striped, Striped Organization>> "
+"illustrates the sequence in which storage units are allocated in a striped "
+"organization."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:125
+#, no-wrap
+msgid "Striped Organization"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:126
+#, no-wrap
+msgid "vinum-striped.png"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:129
+#, no-wrap
+msgid "Data Integrity"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:134
+msgid ""
+"The final problem with disks is that they are unreliable. Although "
+"reliability has increased tremendously over the last few years, disk drives "
+"are still the most likely core component of a server to fail. When they do, "
+"the results can be catastrophic and replacing a failed disk drive and "
+"restoring data can result in server downtime."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:137
+msgid ""
+"One approach to this problem is _mirroring_, or `RAID-1`, which keeps two "
+"copies of the data on different physical hardware. Any write to the volume "
+"writes to both disks; a read can be satisfied from either, so if one drive "
+"fails, the data is still available on the other drive."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:139
+msgid "Mirroring has two problems:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:141
+msgid "It requires twice as much disk storage as a non-redundant solution."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:142
+msgid ""
+"Writes must be performed to both drives, so they take up twice the bandwidth "
+"of a non-mirrored volume. Reads do not suffer from a performance penalty and "
+"can even be faster."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:149
+msgid ""
+"An alternative solution is _parity_, implemented in `RAID` levels 2, 3, 4 "
+"and 5. Of these, `RAID-5` is the most interesting. As implemented in [."
+"filename]#vinum#, it is a variant on a striped organization which dedicates "
+"one block of each stripe to parity one of the other blocks. As implemented "
+"by [.filename]#vinum#, a `RAID-5` plex is similar to a striped plex, except "
+"that it implements `RAID-5` by including a parity block in each stripe. As "
+"required by `RAID-5`, the location of this parity block changes from one "
+"stripe to the next. The numbers in the data blocks indicate the relative "
+"block numbers."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:151
+#, no-wrap
+msgid "`RAID`-5 Organization"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:152
+#, no-wrap
+msgid "vinum-raid5-org.png"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:157
+msgid ""
+"Compared to mirroring, `RAID-5` has the advantage of requiring significantly "
+"less storage space. Read access is similar to that of striped "
+"organizations, but write access is significantly slower, approximately 25% "
+"of the read performance. If one drive fails, the array can continue to "
+"operate in degraded mode where a read from one of the remaining accessible "
+"drives continues normally, but a read from the failed drive is recalculated "
+"from the corresponding block from all the remaining drives."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:159
+#, no-wrap
+msgid "[.filename]#vinum# Objects"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:162
+msgid ""
+"To address these problems, [.filename]#vinum# implements a four-level "
+"hierarchy of objects:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:164
+msgid ""
+"The most visible object is the virtual disk, called a _volume_. Volumes have "
+"essentially the same properties as a UNIX(R) disk drive, though there are "
+"some minor differences. For one, they have no size limitations."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:165
+msgid ""
+"Volumes are composed of _plexes_, each of which represent the total address "
+"space of a volume. This level in the hierarchy provides redundancy. Think of "
+"plexes as individual disks in a mirrored array, each containing the same "
+"data."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:166
+msgid ""
+"Since [.filename]#vinum# exists within the UNIX(R) disk storage framework, "
+"it would be possible to use UNIX(R) partitions as the building block for "
+"multi-disk plexes. In fact, this turns out to be too inflexible as UNIX(R) "
+"disks can have only a limited number of partitions. Instead, [."
+"filename]#vinum# subdivides a single UNIX(R) partition, the _drive_, into "
+"contiguous areas called _subdisks_, which are used as building blocks for "
+"plexes."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:167
+msgid ""
+"Subdisks reside on [.filename]#vinum#_drives_, currently UNIX(R) partitions. "
+"[.filename]#vinum# drives can contain any number of subdisks. With the "
+"exception of a small area at the beginning of the drive, which is used for "
+"storing configuration and state information, the entire drive is available "
+"for data storage."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:169
+msgid ""
+"The following sections describe the way these objects provide the "
+"functionality required of [.filename]#vinum#."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:170
+#, no-wrap
+msgid "Volume Size Considerations"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:174
+msgid ""
+"Plexes can include multiple subdisks spread over all drives in the [."
+"filename]#vinum# configuration. As a result, the size of an individual "
+"drive does not limit the size of a plex or a volume."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:175
+#, no-wrap
+msgid "Redundant Data Storage"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:180
+msgid ""
+"[.filename]#vinum# implements mirroring by attaching multiple plexes to a "
+"volume. Each plex is a representation of the data in a volume. A volume "
+"may contain between one and eight plexes."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:183
+msgid ""
+"Although a plex represents the complete data of a volume, it is possible for "
+"parts of the representation to be physically missing, either by design (by "
+"not defining a subdisk for parts of the plex) or by accident (as a result of "
+"the failure of a drive). As long as at least one plex can provide the data "
+"for the complete address range of the volume, the volume is fully functional."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:184
+#, no-wrap
+msgid "Which Plex Organization?"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:187
+msgid ""
+"[.filename]#vinum# implements both concatenation and striping at the plex "
+"level:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:189
+msgid ""
+"A _concatenated plex_ uses the address space of each subdisk in turn. "
+"Concatenated plexes are the most flexible as they can contain any number of "
+"subdisks, and the subdisks may be of different length. The plex may be "
+"extended by adding additional subdisks. They require less CPU time than "
+"striped plexes, though the difference in CPU overhead is not measurable. On "
+"the other hand, they are most susceptible to hot spots, where one disk is "
+"very active and others are idle."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:190
+msgid ""
+"A _striped plex_ stripes the data across each subdisk. The subdisks must all "
+"be the same size and there must be at least two subdisks to distinguish it "
+"from a concatenated plex. The greatest advantage of striped plexes is that "
+"they reduce hot spots. By choosing an optimum sized stripe, about 256 kB, "
+"the load can be evened out on the component drives. Extending a plex by "
+"adding new subdisks is so complicated that [.filename]#vinum# does not "
+"implement it."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:192
+msgid ""
+"<<vinum-comparison, [.filename]#vinum# Plex Organizations>> summarizes the "
+"advantages and disadvantages of each plex organization."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:194
+#, no-wrap
+msgid "[.filename]#vinum# Plex Organizations"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:198
+#, no-wrap
+msgid "Plex type"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:199
+#, no-wrap
+msgid "Minimum subdisks"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:200
+#, no-wrap
+msgid "Can add subdisks"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:201
+#, no-wrap
+msgid "Must be equal size"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:203
+#, no-wrap
+msgid "Application"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:204
+#, no-wrap
+msgid "concatenated"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:205
+#, no-wrap
+msgid "1"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:206
+#: documentation/content/en/articles/vinum/_index.adoc:213
+#, no-wrap
+msgid "yes"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:207
+#: documentation/content/en/articles/vinum/_index.adoc:212
+#, no-wrap
+msgid "no"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:209
+#, no-wrap
+msgid "Large data storage with maximum placement flexibility and moderate performance"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:210
+#, no-wrap
+msgid "striped"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:211
+#, no-wrap
+msgid "2"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/articles/vinum/_index.adoc:214
+#, no-wrap
+msgid "High performance in combination with highly concurrent access"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:217
+#, no-wrap
+msgid "Some Examples"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:223
+msgid ""
+"[.filename]#vinum# maintains a _configuration database_ which describes the "
+"objects known to an individual system. Initially, the user creates the "
+"configuration database from one or more configuration files using man:"
+"gvinum[8]. [.filename]#vinum# stores a copy of its configuration database "
+"on each disk _device_ under its control. This database is updated on each "
+"state change, so that a restart accurately restores the state of each [."
+"filename]#vinum# object."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:224
+#, no-wrap
+msgid "The Configuration File"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:228
+msgid ""
+"The configuration file describes individual [.filename]#vinum# objects. The "
+"definition of a simple volume might be:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:235
+#, no-wrap
+msgid ""
+" drive a device /dev/da3h\n"
+" volume myvol\n"
+" plex org concat\n"
+" sd length 512m drive a\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:238
+msgid "This file describes four [.filename]#vinum# objects:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:240
+msgid ""
+"The _drive_ line describes a disk partition (_drive_) and its location "
+"relative to the underlying hardware. It is given the symbolic name _a_. This "
+"separation of symbolic names from device names allows disks to be moved from "
+"one location to another without confusion."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:241
+msgid ""
+"The _volume_ line describes a volume. The only required attribute is the "
+"name, in this case _myvol_."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:242
+msgid ""
+"The _plex_ line defines a plex. The only required parameter is the "
+"organization, in this case _concat_. No name is necessary as the system "
+"automatically generates a name from the volume name by adding the suffix _."
+"px_, where _x_ is the number of the plex in the volume. Thus this plex will "
+"be called _myvol.p0_."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:243
+msgid ""
+"The _sd_ line describes a subdisk. The minimum specifications are the name "
+"of a drive on which to store it, and the length of the subdisk. No name is "
+"necessary as the system automatically assigns names derived from the plex "
+"name by adding the suffix _.sx_, where _x_ is the number of the subdisk in "
+"the plex. Thus [.filename]#vinum# gives this subdisk the name _myvol.p0.s0_."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:245
+msgid ""
+"After processing this file, man:gvinum[8] produces the following output:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:255
+#, no-wrap
+msgid ""
+"# gvinum -> create config1\n"
+"Configuration summary\n"
+"Drives: 1 (4 configured)\n"
+"Volumes: 1 (4 configured)\n"
+"Plexes: 1 (8 configured)\n"
+"Subdisks: 1 (16 configured)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:257
+#, no-wrap
+msgid " D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:259
+#, no-wrap
+msgid " V myvol State: up Plexes: 1 Size: 512 MB\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:261
+#, no-wrap
+msgid " P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:263
+#, no-wrap
+msgid " S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:267
+msgid ""
+"This output shows the brief listing format of man:gvinum[8]. It is "
+"represented graphically in <<vinum-simple-vol, A Simple [.filename]#vinum# "
+"Volume>>."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:269
+#, no-wrap
+msgid "A Simple [.filename]#vinum# Volume"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:270
+#, no-wrap
+msgid "vinum-simple-vol.png"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:274
+msgid ""
+"This figure, and the ones which follow, represent a volume, which contains "
+"the plexes, which in turn contains the subdisks. In this example, the "
+"volume contains one plex, and the plex contains one subdisk."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:279
+msgid ""
+"This particular volume has no specific advantage over a conventional disk "
+"partition. It contains a single plex, so it is not redundant. The plex "
+"contains a single subdisk, so there is no difference in storage allocation "
+"from a conventional disk partition. The following sections illustrate "
+"various more interesting configuration methods."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:280
+#, no-wrap
+msgid "Increased Resilience: Mirroring"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:285
+msgid ""
+"The resilience of a volume can be increased by mirroring. When laying out a "
+"mirrored volume, it is important to ensure that the subdisks of each plex "
+"are on different drives, so that a drive failure will not take down both "
+"plexes. The following configuration mirrors a volume:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:294
+#, no-wrap
+msgid ""
+"\tdrive b device /dev/da4h\n"
+"\tvolume mirror\n"
+" plex org concat\n"
+" sd length 512m drive a\n"
+"\t plex org concat\n"
+"\t sd length 512m drive b\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:298
+msgid ""
+"In this example, it was not necessary to specify a definition of drive _a_ "
+"again, since [.filename]#vinum# keeps track of all objects in its "
+"configuration database. After processing this definition, the configuration "
+"looks like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:306
+#, no-wrap
+msgid ""
+"\tDrives: 2 (4 configured)\n"
+"\tVolumes: 2 (4 configured)\n"
+"\tPlexes: 3 (8 configured)\n"
+"\tSubdisks: 3 (16 configured)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:309
+#, no-wrap
+msgid ""
+"\tD a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)\n"
+"\tD b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:312
+#, no-wrap
+msgid ""
+" V myvol State: up Plexes: 1 Size: 512 MB\n"
+" V mirror State: up Plexes: 2 Size: 512 MB\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:316
+#, no-wrap
+msgid ""
+" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n"
+" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n"
+" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:320
+#, no-wrap
+msgid ""
+" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n"
+"\tS mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n"
+"\tS mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:323
+msgid ""
+"<<vinum-mirrored-vol, A Mirrored [.filename]#vinum# Volume>> shows the "
+"structure graphically."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:325
+#, no-wrap
+msgid "A Mirrored [.filename]#vinum# Volume"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:326
+#, no-wrap
+msgid "vinum-mirrored-vol.png"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:330
+msgid ""
+"In this example, each plex contains the full 512 MB of address space. As in "
+"the previous example, each plex contains only a single subdisk."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:331
+#, no-wrap
+msgid "Optimizing Performance"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:336
+msgid ""
+"The mirrored volume in the previous example is more resistant to failure "
+"than an unmirrored volume, but its performance is less as each write to the "
+"volume requires a write to both drives, using up a greater proportion of the "
+"total disk bandwidth. Performance considerations demand a different "
+"approach: instead of mirroring, the data is striped across as many disk "
+"drives as possible. The following configuration shows a volume with a plex "
+"striped across four disk drives:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:347
+#, no-wrap
+msgid ""
+" drive c device /dev/da5h\n"
+"\tdrive d device /dev/da6h\n"
+"\tvolume stripe\n"
+"\tplex org striped 512k\n"
+"\t sd length 128m drive a\n"
+"\t sd length 128m drive b\n"
+"\t sd length 128m drive c\n"
+"\t sd length 128m drive d\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:351
+msgid ""
+"As before, it is not necessary to define the drives which are already known "
+"to [.filename]#vinum#. After processing this definition, the configuration "
+"looks like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:359
+#, no-wrap
+msgid ""
+"\tDrives: 4 (4 configured)\n"
+"\tVolumes: 3 (4 configured)\n"
+"\tPlexes: 4 (8 configured)\n"
+"\tSubdisks: 7 (16 configured)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:364
+#, no-wrap
+msgid ""
+" D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)\n"
+" D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)\n"
+" D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)\n"
+" D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:368
+#, no-wrap
+msgid ""
+" V myvol State: up Plexes: 1 Size: 512 MB\n"
+" V mirror State: up Plexes: 2 Size: 512 MB\n"
+" V striped State: up Plexes: 1 Size: 512 MB\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:373
+#, no-wrap
+msgid ""
+" P myvol.p0 C State: up Subdisks: 1 Size: 512 MB\n"
+" P mirror.p0 C State: up Subdisks: 1 Size: 512 MB\n"
+" P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB\n"
+" P striped.p1 State: up Subdisks: 1 Size: 512 MB\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:381
+#, no-wrap
+msgid ""
+" S myvol.p0.s0 State: up PO: 0 B Size: 512 MB\n"
+" S mirror.p0.s0 State: up PO: 0 B Size: 512 MB\n"
+" S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB\n"
+" S striped.p0.s0 State: up PO: 0 B Size: 128 MB\n"
+" S striped.p0.s1 State: up PO: 512 kB Size: 128 MB\n"
+" S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB\n"
+" S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB\n"
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:384
+#, no-wrap
+msgid "A Striped [.filename]#vinum# Volume"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:385
+#, no-wrap
+msgid "vinum-striped-vol.png"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:389
+msgid ""
+"This volume is represented in <<vinum-striped-vol, A Striped [."
+"filename]#vinum# Volume>>. The darkness of the stripes indicates the "
+"position within the plex address space, where the lightest stripes come "
+"first and the darkest last."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:390
+#, no-wrap
+msgid "Resilience and Performance"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:394
+msgid ""
+"[[vinum-resilience]]With sufficient hardware, it is possible to build "
+"volumes which show both increased resilience and increased performance "
+"compared to standard UNIX(R) partitions. A typical configuration file might "
+"be:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:410
+#, no-wrap
+msgid ""
+"\tvolume raid10\n"
+" plex org striped 512k\n"
+" sd length 102480k drive a\n"
+" sd length 102480k drive b\n"
+" sd length 102480k drive c\n"
+" sd length 102480k drive d\n"
+" sd length 102480k drive e\n"
+" plex org striped 512k\n"
+" sd length 102480k drive c\n"
+" sd length 102480k drive d\n"
+" sd length 102480k drive e\n"
+" sd length 102480k drive a\n"
+" sd length 102480k drive b\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:414
+msgid ""
+"The subdisks of the second plex are offset by two drives from those of the "
+"first plex. This helps to ensure that writes do not go to the same subdisks "
+"even if a transfer goes over two drives."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:416
+msgid ""
+"<<vinum-raid10-vol, A Mirrored, Striped [.filename]#vinum# Volume>> "
+"represents the structure of this volume."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/articles/vinum/_index.adoc:418
+#, no-wrap
+msgid "A Mirrored, Striped [.filename]#vinum# Volume"
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/articles/vinum/_index.adoc:419
+#, no-wrap
+msgid "vinum-raid10-vol.png"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:422
+#, no-wrap
+msgid "Object Naming"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:426
+msgid ""
+"[.filename]#vinum# assigns default names to plexes and subdisks, although "
+"they may be overridden. Overriding the default names is not recommended as "
+"it does not bring a significant advantage and it can cause confusion."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:429
+msgid ""
+"Names may contain any non-blank character, but it is recommended to restrict "
+"them to letters, digits and the underscore characters. The names of "
+"volumes, plexes, and subdisks may be up to 64 characters long, and the names "
+"of drives may be up to 32 characters long."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:432
+msgid ""
+"[.filename]#vinum# objects are assigned device nodes in the hierarchy [."
+"filename]#/dev/gvinum#. The configuration shown above would cause [."
+"filename]#vinum# to create the following device nodes:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:434
+msgid ""
+"Device entries for each volume. These are the main devices used by [."
+"filename]#vinum#. The configuration above would include the devices [."
+"filename]#/dev/gvinum/myvol#, [.filename]#/dev/gvinum/mirror#, [.filename]#/"
+"dev/gvinum/striped#, [.filename]#/dev/gvinum/raid5# and [.filename]#/dev/"
+"gvinum/raid10#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:435
+msgid "All volumes get direct entries under [.filename]#/dev/gvinum/#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:436
+msgid ""
+"The directories [.filename]#/dev/gvinum/plex#, and [.filename]#/dev/gvinum/"
+"sd#, which contain device nodes for each plex and for each subdisk, "
+"respectively."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:438
+msgid "For example, consider the following configuration file:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:451
+#, no-wrap
+msgid ""
+"\tdrive drive1 device /dev/sd1h\n"
+"\tdrive drive2 device /dev/sd2h\n"
+"\tdrive drive3 device /dev/sd3h\n"
+"\tdrive drive4 device /dev/sd4h\n"
+" volume s64 setupstate\n"
+" plex org striped 64k\n"
+" sd length 100m drive drive1\n"
+" sd length 100m drive drive2\n"
+" sd length 100m drive drive3\n"
+" sd length 100m drive drive4\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:454
+msgid ""
+"After processing this file, man:gvinum[8] creates the following structure in "
+"[.filename]#/dev/gvinum#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:461
+#, no-wrap
+msgid ""
+"\tdrwxr-xr-x 2 root wheel 512 Apr 13\n"
+"16:46 plex\n"
+"\tcrwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64\n"
+"\tdrwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:465
+#, no-wrap
+msgid ""
+" /dev/vinum/plex:\n"
+" total 0\n"
+" crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:472
+#, no-wrap
+msgid ""
+" /dev/vinum/sd:\n"
+" total 0\n"
+" crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0\n"
+" crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1\n"
+" crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2\n"
+" crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:477
+msgid ""
+"Although it is recommended that plexes and subdisks should not be allocated "
+"specific names, [.filename]#vinum# drives must be named. This makes it "
+"possible to move a drive to a different location and still recognize it "
+"automatically. Drive names may be up to 32 characters long."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:478
+#, no-wrap
+msgid "Creating File Systems"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:486
+msgid ""
+"Volumes appear to the system to be identical to disks, with one exception. "
+"Unlike UNIX(R) drives, [.filename]#vinum# does not partition volumes, which "
+"thus do not contain a partition table. This has required modification to "
+"some disk utilities, notably man:newfs[8], so that it does not try to "
+"interpret the last letter of a [.filename]#vinum# volume name as a partition "
+"identifier. For example, a disk drive may have a name like [.filename]#/dev/"
+"ad0a# or [.filename]#/dev/da2h#. These names represent the first partition "
+"([.filename]#a#) on the first (0) IDE disk ([.filename]#ad#) and the eighth "
+"partition ([.filename]#h#) on the third (2) SCSI disk ([.filename]#da#) "
+"respectively. By contrast, a [.filename]#vinum# volume might be called [."
+"filename]#/dev/gvinum/concat#, which has no relationship with a partition "
+"name."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:488
+msgid "To create a file system on this volume, use man:newfs[8]:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:492
+#, no-wrap
+msgid "# newfs /dev/gvinum/concat\n"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:495
+#, no-wrap
+msgid "Configuring [.filename]#vinum#"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:501
+msgid ""
+"The [.filename]#GENERIC# kernel does not contain [.filename]#vinum#. It is "
+"possible to build a custom kernel which includes [.filename]#vinum#, but "
+"this is not recommended. The standard way to start [.filename]#vinum# is as "
+"a kernel module. man:kldload[8] is not needed because when man:gvinum[8] "
+"starts, it checks whether the module has been loaded, and if it is not, it "
+"loads it automatically."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:502
+#, no-wrap
+msgid "Startup"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:507
+msgid ""
+"[.filename]#vinum# stores configuration information on the disk slices in "
+"essentially the same form as in the configuration files. When reading from "
+"the configuration database, [.filename]#vinum# recognizes a number of "
+"keywords which are not allowed in the configuration files. For example, a "
+"disk configuration might contain the following text:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:529
+#, no-wrap
+msgid ""
+"volume myvol state up\n"
+"volume bigraid state down\n"
+"plex name myvol.p0 state up org concat vol myvol\n"
+"plex name myvol.p1 state up org concat vol myvol\n"
+"plex name myvol.p2 state init org striped 512b vol myvol\n"
+"plex name bigraid.p0 state initializing org raid5 512b vol bigraid\n"
+"sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b\n"
+"sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b\n"
+"sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b\n"
+"sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b\n"
+"sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b\n"
+"sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b\n"
+"sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b\n"
+"sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b\n"
+"sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b\n"
+"sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b\n"
+"sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b\n"
+"sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b\n"
+"sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:535
+msgid ""
+"The obvious differences here are the presence of explicit location "
+"information and naming, both of which are allowed but discouraged, and the "
+"information on the states. [.filename]#vinum# does not store information "
+"about drives in the configuration information. It finds the drives by "
+"scanning the configured disk drives for partitions with a [.filename]#vinum# "
+"label. This enables [.filename]#vinum# to identify drives correctly even if "
+"they have been assigned different UNIX(R) drive IDs."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/articles/vinum/_index.adoc:537
+#, no-wrap
+msgid "Automatic Startup"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:541
+msgid ""
+"_Gvinum_ always features an automatic startup once the kernel module is "
+"loaded, via man:loader.conf[5]. To load the _Gvinum_ module at boot time, "
+"add `geom_vinum_load=\"YES\"` to [.filename]#/boot/loader.conf#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:546
+msgid ""
+"When [.filename]#vinum# is started with `gvinum start`, [.filename]#vinum# "
+"reads the configuration database from one of the [.filename]#vinum# drives. "
+"Under normal circumstances, each drive contains an identical copy of the "
+"configuration database, so it does not matter which drive is read. After a "
+"crash, however, [.filename]#vinum# must determine which drive was updated "
+"most recently and read the configuration from this drive. It then updates "
+"the configuration, if necessary, from progressively older drives."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/articles/vinum/_index.adoc:548
+#, no-wrap
+msgid "Using [.filename]#vinum# for the Root File System"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:552
+msgid ""
+"For a machine that has fully-mirrored file systems using [.filename]#vinum#, "
+"it is desirable to also mirror the root file system. Setting up such a "
+"configuration is less trivial than mirroring an arbitrary file system "
+"because:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:554
+msgid ""
+"The root file system must be available very early during the boot process, "
+"so the [.filename]#vinum# infrastructure must already be available at this "
+"time."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:555
+msgid ""
+"The volume containing the root file system also contains the system "
+"bootstrap and the kernel. These must be read using the host system's native "
+"utilities, such as the BIOS, which often cannot be taught about the details "
+"of [.filename]#vinum#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:557
+msgid ""
+"In the following sections, the term \"root volume\" is generally used to "
+"describe the [.filename]#vinum# volume that contains the root file system."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:558
+#, no-wrap
+msgid "Starting up [.filename]#vinum# Early Enough for the Root File System"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:562
+msgid ""
+"[.filename]#vinum# must be available early in the system boot as man:"
+"loader[8] must be able to load the vinum kernel module before starting the "
+"kernel. This can be accomplished by putting this line in [.filename]#/boot/"
+"loader.conf#:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:566
+#, no-wrap
+msgid "geom_vinum_load=\"YES\"\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:568
+#, no-wrap
+msgid "Making a [.filename]#vinum#-based Root Volume Accessible to the Bootstrap"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:573
+msgid ""
+"The current FreeBSD bootstrap is only 7.5 KB of code and does not understand "
+"the internal [.filename]#vinum# structures. This means that it cannot parse "
+"the [.filename]#vinum# configuration data or figure out the elements of a "
+"boot volume. Thus, some workarounds are necessary to provide the bootstrap "
+"code with the illusion of a standard `a` partition that contains the root "
+"file system."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:575
+msgid ""
+"For this to be possible, the following requirements must be met for the root "
+"volume:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:577
+msgid "The root volume must not be a stripe or `RAID`-5."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:578
+msgid ""
+"The root volume must not contain more than one concatenated subdisk per plex."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:584
+msgid ""
+"Note that it is desirable and possible to use multiple plexes, each "
+"containing one replica of the root file system. The bootstrap process will "
+"only use one replica for finding the bootstrap and all boot files, until the "
+"kernel mounts the root file system. Each single subdisk within these plexes "
+"needs its own `a` partition illusion, for the respective device to be "
+"bootable. It is not strictly needed that each of these faked `a` partitions "
+"is located at the same offset within its device, compared with other devices "
+"containing plexes of the root volume. However, it is probably a good idea "
+"to create the [.filename]#vinum# volumes that way so the resulting mirrored "
+"devices are symmetric, to avoid confusion."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:586
+msgid ""
+"To set up these `a` partitions for each device containing part of the root "
+"volume, the following is required:"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/vinum/_index.adoc:590
+msgid ""
+"The location, offset from the beginning of the device, and size of this "
+"device's subdisk that is part of the root volume needs to be examined, using "
+"the command:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:594
+#, no-wrap
+msgid "# gvinum l -rv root\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:598
+msgid ""
+"[.filename]#vinum# offsets and sizes are measured in bytes. They must be "
+"divided by 512 to obtain the block numbers that are to be used by `bsdlabel`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:599
+msgid "Run this command for each device that participates in the root volume:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:603
+#, no-wrap
+msgid "# bsdlabel -e devname\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:606
+msgid ""
+"_devname_ must be either the name of the disk, like [.filename]#da0# for "
+"disks without a slice table, or the name of the slice, like [."
+"filename]#ad0s1#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:609
+msgid ""
+"If there is already an `a` partition on the device from a pre-[."
+"filename]#vinum# root file system, it should be renamed to something else so "
+"that it remains accessible (just in case), but will no longer be used by "
+"default to bootstrap the system. A currently mounted root file system "
+"cannot be renamed, so this must be executed either when being booted from a "
+"\"Fixit\" media, or in a two-step process where, in a mirror, the disk that "
+"is not been currently booted is manipulated first."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:615
+msgid ""
+"The offset of the [.filename]#vinum# partition on this device (if any) must "
+"be added to the offset of the respective root volume subdisk on this "
+"device. The resulting value will become the `offset` value for the new `a` "
+"partition. The `size` value for this partition can be taken verbatim from "
+"the calculation above. The `fstype` should be `4.2BSD`. The `fsize`, "
+"`bsize`, and `cpg` values should be chosen to match the actual file system, "
+"though they are fairly unimportant within this context."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:618
+msgid ""
+"That way, a new `a` partition will be established that overlaps the [."
+"filename]#vinum# partition on this device. `bsdlabel` will only allow for "
+"this overlap if the [.filename]#vinum# partition has properly been marked "
+"using the `vinum` fstype."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:619
+msgid ""
+"A faked `a` partition now exists on each device that has one replica of the "
+"root volume. It is highly recommendable to verify the result using a command "
+"like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:623
+#, no-wrap
+msgid "# fsck -n /dev/devnamea\n"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/vinum/_index.adoc:628
+msgid ""
+"It should be remembered that all files containing control information must "
+"be relative to the root file system in the [.filename]#vinum# volume which, "
+"when setting up a new [.filename]#vinum# root volume, might not match the "
+"root file system that is currently active. So in particular, [.filename]#/"
+"etc/fstab# and [.filename]#/boot/loader.conf# need to be taken care of."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/vinum/_index.adoc:631
+msgid ""
+"At next reboot, the bootstrap should figure out the appropriate control "
+"information from the new [.filename]#vinum#-based root file system, and act "
+"accordingly. At the end of the kernel initialization process, after all "
+"devices have been announced, the prominent notice that shows the success of "
+"this setup is a message like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:635
+#, no-wrap
+msgid "Mounting root from ufs:/dev/gvinum/root\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:637
+#, no-wrap
+msgid "Example of a [.filename]#vinum#-based Root Setup"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:640
+msgid ""
+"After the [.filename]#vinum# root volume has been set up, the output of "
+"`gvinum l -rv root` could look like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:649
+#, no-wrap
+msgid ""
+"...\n"
+"Subdisk root.p0.s0:\n"
+"\t\tSize: 125829120 bytes (120 MB)\n"
+"\t\tState: up\n"
+"\t\tPlex root.p0 at offset 0 (0 B)\n"
+"\t\tDrive disk0 (/dev/da0h) at offset 135680 (132 kB)\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:655
+#, no-wrap
+msgid ""
+"Subdisk root.p1.s0:\n"
+"\t\tSize: 125829120 bytes (120 MB)\n"
+"\t\tState: up\n"
+"\t\tPlex root.p1 at offset 0 (0 B)\n"
+"\t\tDrive disk1 (/dev/da1h) at offset 135680 (132 kB)\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:661
+msgid ""
+"The values to note are `135680` for the offset, relative to partition [."
+"filename]#/dev/da0h#. This translates to 265 512-byte disk blocks in "
+"`bsdlabel`'s terms. Likewise, the size of this root volume is 245760 512-"
+"byte blocks. [.filename]#/dev/da1h#, containing the second replica of this "
+"root volume, has a symmetric setup."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:663
+msgid "The bsdlabel for these devices might look like:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/vinum/_index.adoc:672
+#, no-wrap
+msgid ""
+"...\n"
+"8 partitions:\n"
+"# size offset fstype [fsize bsize bps/cpg]\n"
+" a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)\n"
+" c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)\n"
+" h: 71771672 16 vinum # (Cyl. 0*- 4467*)\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:677
+msgid ""
+"It can be observed that the `size` parameter for the faked `a` partition "
+"matches the value outlined above, while the `offset` parameter is the sum of "
+"the offset within the [.filename]#vinum# partition `h`, and the offset of "
+"this partition within the device or slice. This is a typical setup that is "
+"necessary to avoid the problem described in <<vinum-root-panic, Nothing "
+"Boots, the Bootstrap Panics>>. The entire `a` partition is completely "
+"within the `h` partition containing all the [.filename]#vinum# data for this "
+"device."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:679
+msgid ""
+"In the above example, the entire device is dedicated to [.filename]#vinum# "
+"and there is no leftover pre-[.filename]#vinum# root partition."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/vinum/_index.adoc:680
+#, no-wrap
+msgid "Troubleshooting"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:683
+msgid "The following list contains a few known pitfalls and solutions."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/articles/vinum/_index.adoc:684
+#, no-wrap
+msgid "System Bootstrap Loads, but System Does Not Boot"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:688
+msgid ""
+"If for any reason the system does not continue to boot, the bootstrap can be "
+"interrupted by pressing kbd:[space] at the 10-seconds warning. The loader "
+"variable `vinum.autostart` can be examined by typing `show` and manipulated "
+"using `set` or `unset`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:690
+msgid ""
+"If the [.filename]#vinum# kernel module was not yet in the list of modules "
+"to load automatically, type `load geom_vinum`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:693
+msgid ""
+"When ready, the boot process can be continued by typing `boot -as` which `-"
+"as` requests the kernel to ask for the root file system to mount (`-a`) and "
+"make the boot process stop in single-user mode (`-s`), where the root file "
+"system is mounted read-only. That way, even if only one plex of a multi-"
+"plex volume has been mounted, no data inconsistency between plexes is being "
+"risked."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:699
+msgid ""
+"At the prompt asking for a root file system to mount, any device that "
+"contains a valid root file system can be entered. If [.filename]#/etc/"
+"fstab# is set up correctly, the default should be something like `ufs:/dev/"
+"gvinum/root`. A typical alternate choice would be something like `ufs:da0d` "
+"which could be a hypothetical partition containing the pre-[."
+"filename]#vinum# root file system. Care should be taken if one of the alias "
+"`a` partitions is entered here, that it actually references the subdisks of "
+"the [.filename]#vinum# root device, because in a mirrored setup, this would "
+"only mount one piece of a mirrored root device. If this file system is to "
+"be mounted read-write later on, it is necessary to remove the other plex(es) "
+"of the [.filename]#vinum# root volume since these plexes would otherwise "
+"carry inconsistent data."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/articles/vinum/_index.adoc:700
+#, no-wrap
+msgid "Only Primary Bootstrap Loads"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:705
+msgid ""
+"If [.filename]#/boot/loader# fails to load, but the primary bootstrap still "
+"loads (visible by a single dash in the left column of the screen right after "
+"the boot process starts), an attempt can be made to interrupt the primary "
+"bootstrap by pressing kbd:[space]. This will make the bootstrap stop in "
+"extref:{handbook}[stage two, boot-boot1]. An attempt can be made here to "
+"boot off an alternate partition, like the partition containing the previous "
+"root file system that has been moved away from `a`."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/articles/vinum/_index.adoc:707
+#, no-wrap
+msgid "Nothing Boots, the Bootstrap Panics"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:713
+msgid ""
+"This situation will happen if the bootstrap had been destroyed by the [."
+"filename]#vinum# installation. Unfortunately, [.filename]#vinum# "
+"accidentally leaves only 4 KB at the beginning of its partition free before "
+"starting to write its [.filename]#vinum# header information. However, the "
+"stage one and two bootstraps plus the bsdlabel require 8 KB. So if a [."
+"filename]#vinum# partition was started at offset 0 within a slice or disk "
+"that was meant to be bootable, the [.filename]#vinum# setup will trash the "
+"bootstrap."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/vinum/_index.adoc:716
+msgid ""
+"Similarly, if the above situation has been recovered, by booting from a "
+"\"Fixit\" media, and the bootstrap has been re-installed using `bsdlabel -B` "
+"as described in extref:{handbook}[stage two, boot-boot1], the bootstrap will "
+"trash the [.filename]#vinum# header, and [.filename]#vinum# will no longer "
+"find its disk(s). Though no actual [.filename]#vinum# configuration data or "
+"data in [.filename]#vinum# volumes will be trashed, and it would be possible "
+"to recover all the data by entering exactly the same [.filename]#vinum# "
+"configuration data again, the situation is hard to fix. It is necessary to "
+"move the entire [.filename]#vinum# partition by at least 4 KB, to have the [."
+"filename]#vinum# header and the system bootstrap no longer collide."
+msgstr ""