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>.