The translation is temporarily closed for contributions due to maintenance, please come back later.

Source string Read only

(itstool) path: sect1/title
Context English State
<anchor xml:id="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.
The traditional and obvious solution to this bottleneck is <quote>more spindles</quote>: 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.
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.
<primary>disk concatenation</primary>
<primary>Vinum</primary> <secondary>concatenation</secondary>
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 <emphasis>concatenation</emphasis> 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. <xref linkend="vinum-concat"/> illustrates the sequence in which storage units are allocated in a concatenated organization.
Concatenated Organization
_ external ref='vinum-concat' md5='__failed__'
<primary>disk striping</primary>
<primary>Vinum</primary> <secondary>striping</secondary>
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 <emphasis>striping</emphasis> or <acronym>RAID-0</acronym>.
<acronym>RAID</acronym> offers various forms of fault tolerance, though <acronym>RAID-0</acronym> 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. <xref linkend="vinum-striped"/> illustrates the sequence in which storage units are allocated in a striped organization.
Striped Organization
_ external ref='vinum-striped' md5='__failed__'
Data Integrity
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.
<primary>disk mirroring</primary>
<primary>vinum</primary> <secondary>mirroring</secondary>
One approach to this problem is <emphasis>mirroring</emphasis>, or <acronym>RAID-1</acronym>, 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.
Mirroring has two problems:
It requires twice as much disk storage as a non-redundant solution.
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.
An alternative solution is <emphasis>parity</emphasis>, implemented in <acronym>RAID</acronym> levels 2, 3, 4 and 5. Of these, <acronym>RAID-5</acronym> is the most interesting. As implemented in <filename>vinum</filename>, 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</filename>, a <acronym>RAID-5</acronym> plex is similar to a striped plex, except that it implements <acronym>RAID-5</acronym> by including a parity block in each stripe. As required by <acronym>RAID-5</acronym>, the location of this parity block changes from one stripe to the next. The numbers in the data blocks indicate the relative block numbers.
<acronym>RAID</acronym>-5 Organization
_ external ref='vinum-raid5-org' md5='__failed__'
Compared to mirroring, <acronym>RAID-5</acronym> 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.
<filename>vinum</filename> Objects
In order to address these problems, <filename>vinum</filename> implements a four-level hierarchy of objects:


No matching activity found.

Browse all component changes

Source information

Source string comment
(itstool) path: sect1/title
Source string location
String age
a year ago
Source string age
a year ago
Translation file
articles/vinum.pot, string 28