diff options
Diffstat (limited to 'documentation/content/en/articles/vinum/_index.po')
-rw-r--r-- | documentation/content/en/articles/vinum/_index.po | 1652 |
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 "" |