This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

22.6. 一些例子

22.6. 一些例子

Vinum 维护着一个描述本系统中对象的 配置数据库。 开始时, 用户可以在 gvinum(8) 工具来从若干配置文件生成配置数据库。 Vinum 在其控制的每个磁盘分区 (在 Vinum 中称为 device) 上都保存配置数据库的副本。 这一数据库在每次状态变化时均会更新, 因而重启每个 Vinum 对象时, 都能够恢复其状态。

22.6.1. 配置文件

配置文件描述了独立的 Vinum.一个简单卷的定义可能是这样的:

    drive a device /dev/da3h
    volume myvol
      plex org concat
        sd length 512m drive a

这个文件描述了四个Vinum 目标:

  • drive 行描述了一个磁盘分区(驱动器) 和与下面的硬件相关的它的位置。它给出了一个符号名 a. 这个与设备名称分开的符号名允许 磁盘从一个位置移动到另一个位置而不会搞混。

  • volume 行描述了一个卷。 唯一的必须属性是名称,在这个例子中是 myvol.

  • plex 行定义了一个plex。 唯一需要的参数是组织,在这个例子中是 concat. 没有名称是必然的: 系统自动通过添加suffix .px 来从卷名称产生一个名字,这里的x 是在卷中的plex 的编号。而这个plex 将被 叫做myvol.p0

  • sd 行描述了一个subdisk。 最小的说明是存储subdisk 的驱动器名称,和subdisk 的长度。 对于plex,没有名称也是必然的:系统自动通过添加 suffix .sx 来分配源自plex 的名称,这里 x是plex 中subdisk 的编号。 Vinum 给这个subdisk 命名为myvol.p0.s0

处理完这个文件后, gvinum(8) 会产生下面的输出:

      # gvinum -> create config1
      Configuration summary
      Drives:         1 (4 configured)
      Volumes:        1 (4 configured)
      Plexes:         1 (8 configured)
      Subdisks:       1 (16 configured)

	D a                     State: up       Device /dev/da3h        Avail: 2061/2573 MB (80%)

	V myvol                 State: up       Plexes:       1 Size:        512 MB

	P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB

	S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB

这些输出内容展示了 gvinum(8) 的简要列表格式。 在 图 22.4 “一个简单的Vinum 卷” 中用图形展示了这个配置。

图 22.4. 一个简单的Vinum 卷
一个简单的Vinum 卷


下面这个图显示了一个由按顺序排列的subdisk 组成的plex。 在这个小小的例子中,卷包含一个plex,plex 包含一个subdisk。

这个卷本身和普通的磁盘分区相比并没有什么特别的优越性, 它包含了一个 plex, 因此不是冗余的。 这个 plex 中包括了一个子磁盘, 因此这和从磁盘分区分配存储没什么两样。 接下来的几节, 将介绍一些更有用的配置方法。

22.6.2. 提高容错性: 镜像

卷的容错性可以通过镜像来提高。 在配置镜像卷时, 确保 plex 分布在不同的驱动器上十分重要, 这样一个驱动器坏掉时, 就不会同时影响两个 plex。 下面的配置将映射卷:

	drive b device /dev/da4h
	volume mirror
      plex org concat
        sd length 512m drive a
	  plex org concat
	    sd length 512m drive b

上面的例子中, 并不需要再次指定驱动器 a, 因为 Vinum 监控所有其配置数据库的对象。 完成定义之后, 配置如下所示:

	Drives:         2 (4 configured)
	Volumes:        2 (4 configured)
	Plexes:         3 (8 configured)
	Subdisks:       3 (16 configured)

	D a                     State: up       Device /dev/da3h        Avail: 1549/2573 MB (60%)
	D b                     State: up       Device /dev/da4h        Avail: 2061/2573 MB (80%)

    V myvol                 State: up       Plexes:       1 Size:        512 MB
    V mirror                State: up       Plexes:       2 Size:        512 MB

    P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p0           C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p1           C State: initializing     Subdisks:     1 Size:        512 MB

    S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB
	S mirror.p0.s0          State: up       PO:        0  B Size:        512 MB
	S mirror.p1.s0          State: empty    PO:        0  B Size:        512 MB

图 22.5 “镜像 Vinum 卷” 以图形方式展示了其结构。

图 22.5. 镜像 Vinum 卷
镜像 Vinum 卷


这个例子中, 每一个 plex 包含了完整的 512 MB 地址空间。 在前面的例子中, plex 则只包括一个子盘。

22.6.3. 优化性能

前面例子中的镜像卷要比没有镜像的卷具有更好的容灾能力, 但它的性能要差一些: 每一次写入卷时, 需要同时写到两个驱动器上, 因而也就需要更大的磁盘访问带宽。 如果希望非常好的性能, 则需要另外一种方式: 不做镜像, 而将数据分成条带放到尽可能多的、不同的磁盘上。 下面给出了一个跨越四个磁盘驱动器的 plex 卷:

	drive c device /dev/da5h
	drive d device /dev/da6h
	volume stripe
	plex org striped 512k
	  sd length 128m drive a
	  sd length 128m drive b
	  sd length 128m drive c
	  sd length 128m drive d

和之前类似, 并不需要定义 Vinum 已经知道的驱动器。 在完成定义之后, 将得到如下配置:

	Drives:         4 (4 configured)
	Volumes:        3 (4 configured)
	Plexes:         4 (8 configured)
	Subdisks:       7 (16 configured)

    D a                     State: up       Device /dev/da3h        Avail: 1421/2573 MB (55%)
    D b                     State: up       Device /dev/da4h        Avail: 1933/2573 MB (75%)
    D c                     State: up       Device /dev/da5h        Avail: 2445/2573 MB (95%)
    D d                     State: up       Device /dev/da6h        Avail: 2445/2573 MB (95%)

    V myvol                 State: up       Plexes:       1 Size:        512 MB
    V mirror                State: up       Plexes:       2 Size:        512 MB
    V striped               State: up       Plexes:       1 Size:        512 MB

    P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p0           C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p1           C State: initializing     Subdisks:     1 Size:        512 MB
    P striped.p1            State: up       Subdisks:     1 Size:        512 MB

    S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB
    S mirror.p0.s0          State: up       PO:        0  B Size:        512 MB
    S mirror.p1.s0          State: empty    PO:        0  B Size:        512 MB
    S striped.p0.s0         State: up       PO:        0  B Size:        128 MB
    S striped.p0.s1         State: up       PO:      512 kB Size:        128 MB
    S striped.p0.s2         State: up       PO:     1024 kB Size:        128 MB
    S striped.p0.s3         State: up       PO:     1536 kB Size:        128 MB

图 22.6. 条带化的 Vinum 卷
条带化的 Vinum 卷


这个卷在 图 22.6 “条带化的 Vinum 卷” 中给出。 条带的阴影部分, 表示在 plex 地址空间中的位置: 颜色最浅的在最前面, 而最深的在最后。

22.6.4. 高性能容在

如果硬件足够多, 也能够构建比标准 UNIX® 分区同时提高了容灾性和性能的卷。 典型的配置文件类似:

	volume raid10
      plex org striped 512k
        sd length 102480k drive a
        sd length 102480k drive b
        sd length 102480k drive c
        sd length 102480k drive d
        sd length 102480k drive e
      plex org striped 512k
        sd length 102480k drive c
        sd length 102480k drive d
        sd length 102480k drive e
        sd length 102480k drive a
        sd length 102480k drive b

第二个 plex 中的子盘和第一个 plex 中的错开了两个驱动器: 这能够帮助确保即使同时访问两个驱动器, 写操作也不会同时发生在同一个盘上。

图 22.7 “镜像并条带化的 Vinum 卷” 给出了该卷的结构。

图 22.7. 镜像并条带化的 Vinum 卷
镜像并条带化的 Vinum 卷


本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.