No matching activity found.
|The <filename>vinum</filename> Volume Manager|
|<personname> <firstname>Greg</firstname> <surname>Lehey</surname> </personname> <contrib>Originally written by </contrib>|
|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.|
|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 <acronym>RAID</acronym> systems, the base FreeBSD system includes the <filename>vinum</filename> volume manager, a block device driver that implements virtual disk drives and addresses these three problems. <filename>vinum</filename> provides more flexibility, performance, and reliability than traditional disk storage and implements <acronym>RAID</acronym>-0, <acronym>RAID</acronym>-1, and <acronym>RAID</acronym>-5 models, both individually and in combination.|
|This chapter provides an overview of potential problems with traditional disk storage, and an introduction to the <filename>vinum</filename> volume manager.|
|Starting with FreeBSD 5, <filename>vinum</filename> has been rewritten in order to fit into the <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/geom.html">GEOM architecture</link>, while retaining the original ideas, terminology, and on-disk metadata. This rewrite is called <emphasis>gvinum</emphasis> (for <emphasis> GEOM vinum</emphasis>). While this chapter uses the term <filename>vinum</filename>, any command invocations should be performed with <command>gvinum</command>. The name of the kernel module has changed from the original <filename>vinum.ko</filename> to <filename>geom_vinum.ko</filename>, and all device nodes reside under <filename class="directory">/dev/gvinum</filename> instead of <filename class="directory">/dev/vinum</filename>. As of FreeBSD 6, the original <filename>vinum</filename> implementation is no longer available in the code base.|
|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.|
|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.|
|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.|
|<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.|
No matching activity found.