From d30dd1dd49b0589a8c224b3052ff738bc3e40dc5 Mon Sep 17 00:00:00 2001 From: Xin LI Date: Sun, 26 Mar 2006 01:31:02 +0000 Subject: MFen 1.37 -> 1.40 Obtained from: The FreeBSD Simplified Chinese Project --- zh_CN.GB2312/books/handbook/vinum/chapter.sgml | 185 +++++++++++-------------- 1 file changed, 78 insertions(+), 107 deletions(-) (limited to 'zh_CN.GB2312/books') diff --git a/zh_CN.GB2312/books/handbook/vinum/chapter.sgml b/zh_CN.GB2312/books/handbook/vinum/chapter.sgml index 1aa23a7c86..2fbe3e429b 100644 --- a/zh_CN.GB2312/books/handbook/vinum/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/vinum/chapter.sgml @@ -8,7 +8,7 @@ For the FreeBSD Documentation Project The FreeBSD Simplified Chinese Project - Original Revision: 1.37 + Original Revision: 1.40 $FreeBSD$ --> @@ -55,6 +55,20 @@ FreeBSD 这一章对传统磁盘存储的潜在问题进行了简要说明,并介绍了 Vinum 卷管理器。 + 从 FreeBSD 5 开始, 对 Vinum 进行了重写, + 以便使其符合 GEOM 架构 (), + 而保留其原有的设计创意、 术语, 以及保存在磁盘上的元数据格式。 + 这一重写的版本称为 gvinum (表示 + GEOM vinum)。 接下来的文字中 + Vinum 是一个抽象的名字, 通常并不具体指某一特定的实现。 + 新版本中所有的指令都应通过 gvinum 命令来操作, + 而对应的内核模块的名字, 也由 + vinum.ko 改为了 + geom_vinum.ko, 而在 + /dev/vinum 中的所有设备节点, + 也改为放到了 /dev/gvinum。 + 从 FreeBSD 6 开始, 旧版的 Vinum 实现已不再提供。 + @@ -397,13 +411,12 @@ FreeBSD 一些例子 - Vinum 维护着一个描述以一个独立系统为目标 - 配置数据库的。最初,用户通过&man.vinum.8; - 工具的帮助从一个或多个配置文件创建配置数据库。Vinum 在它的控制 - 下在每个磁盘(Vinum 叫 device) 上存储一个 - 它的配置数据库的拷贝。这个数据库在每个状态变化的时候被升级, - 以便能精确地回复每个Vinum 目标的状态。 - + Vinum 维护着一个描述本系统中对象的 配置数据库。 + 开始时, 用户可以在 &man.gvinum.8; 工具来从若干配置文件生成配置数据库。 + Vinum 在其控制的每个磁盘分区 (在 + Vinum 中称为 device) 上都保存配置数据库的副本。 + 这一数据库在每次状态变化时均会更新, 因而重启每个 Vinum 对象时, + 都能够恢复其状态。 配置文件 @@ -455,10 +468,10 @@ FreeBSD - 处理完这个文件后, &man.vinum.8会产生下面的输出: + 处理完这个文件后, &man.gvinum.8; 会产生下面的输出: - &prompt.root; vinum -> create config1 + &prompt.root; gvinum -> create config1 Configuration summary Drives: 1 (4 configured) Volumes: 1 (4 configured) @@ -473,8 +486,8 @@ FreeBSD S myvol.p0.s0 State: up PO: 0 B Size: 512 MB - 这个输出显示了&man.vinum.8简要的列表格式。 - 图中它用图形来表示这一点。 + 这些输出内容展示了 &man.gvinum.8; 的简要列表格式。 + 在 中用图形展示了这个配置。
@@ -664,59 +677,48 @@ FreeBSD 32 个字符。 Vinum 对象会在 - /dev/vinum 之下生成设备接点。 + /dev/gvinum 之下生成设备接点。 前述的配置将使 Vinum 创建以下设备节点: + 这些内容仅适用于旧式的 Vinum + 实现。 + 控制设备 /dev/vinum/control/dev/vinum/controld, - 分别由 &man.vinum.8; 和 Vinum 服务使用。 + 分别由 &man.gvinum.8; 和 Vinum 服务使用。 - 每一个卷缩对应的块设备和字符设备。 - 这些是 Vinum 中用到的主要设备。 块设备的名字就是卷的名字, - 而字符设备的名字, 则遵循 BSD 的习惯, 在卷的名字前面增加 - r。 因此, 前面的配置对应的块设备是 - /dev/vinum/myvol, - /dev/vinum/mirror, - /dev/vinum/striped, - /dev/vinum/raid5 和 - /dev/vinum/raid10, 而字符设备则是 - /dev/vinum/rmyvol, - /dev/vinum/rmirror, - /dev/vinum/rstriped, - /dev/vinum/rraid5 和 - /dev/vinum/rraid10。 - 显然, 这有时会造成问题: 有可能有两个卷, - 分别叫做 rrr, - 这样, 在创建设备节点 - /dev/vinum/rr 时就会产生冲突: - 它到底是卷 r 对应的字符设备, - 还是卷 rr 的块设备? - 目前, Vinum 并不处理这样的冲突: 先定义的卷, - 将得到希望的设备名。 + 每个卷对应的设备项。 这些是 Vinum 使用的主要设备。 + 因此, 前述配置包括下列设备: + /dev/gvinum/myvol、 + /dev/gvinum/mirror、 + /dev/gvinum/striped、 + /dev/gvinum/raid5 以及 + /dev/gvinum/raid10 + 这些内容仅适用于旧式的 Vinum + 实现。 + 一个包含每个驱动器对应项的 /dev/vinum/drive 目录。 这些项事实上是指向对应磁盘节点的符号连接。 - 包含每个卷对应项的 /dev/vinum/volume - 目录。 每一个 plex 对应一个子目录, 而这些目录中, - 则是组成它们的子盘。 + 所有卷的直接项都存放在 + /dev/gvinum/ 中。 目录 - /dev/vinum/plex, - /dev/vinum/sd, 以及 - /dev/vinum/rsd, 它们中包括了每一个 plex - 的设备节点, 以及每一个子盘的块设备和字符设备。 + /dev/gvinum/plex, 以及 + /dev/gvinum/sd 中相应地存放了每个 plex + 以及子盘的设备节点。 @@ -733,67 +735,24 @@ FreeBSD sd length 100m drive drive3 sd length 100m drive drive4 - 处理这个文件之后, &man.vinum.8; 将在 - /dev/vinum 中建立下面的结构: + 处理这个文件之后, &man.gvinum.8; 将在 + /dev/gvinum 中建立下面的结构: - brwx------ 1 root wheel 25, 0x40000001 Apr 13 16:46 Control - brwx------ 1 root wheel 25, 0x40000002 Apr 13 16:46 control - brwx------ 1 root wheel 25, 0x40000000 Apr 13 16:46 controld - drwxr-xr-x 2 root wheel 512 Apr 13 16:46 drive drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex - crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 rs64 - drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rsd - drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rvol - brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64 + crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64 drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd - drwxr-xr-x 3 root wheel 512 Apr 13 16:46 vol - /dev/vinum/drive: - total 0 - lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive1 -> /dev/sd1h - lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive2 -> /dev/sd2h - lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive3 -> /dev/sd3h - lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive4 -> /dev/sd4h - /dev/vinum/plex: total 0 - brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 + crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 - /dev/vinum/rsd: + /dev/vinum/sd: total 0 crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0 crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1 crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2 - crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3 - - /dev/vinum/rvol: - total 0 - crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64 - - /dev/vinum/sd: - total 0 - brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0 - brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1 - brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2 - brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3 - - /dev/vinum/vol: - total 1 - brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64 - drwxr-xr-x 3 root wheel 512 Apr 13 16:46 s64.plex - - /dev/vinum/vol/s64.plex: - total 1 - brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 - drwxr-xr-x 2 root wheel 512 Apr 13 16:46 s64.p0.sd - - /dev/vinum/vol/s64.plex/s64.p0.sd: - total 0 - brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0 - brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1 - brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2 - brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3 + crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3 虽然 plex 和子盘一般并不推荐指定名字, 但还是必须给 Vinum 驱动器命名。 这样, 当把驱动器转移到不同的地方时, @@ -814,19 +773,22 @@ FreeBSD 以及第三个 (2) SCSI 磁盘 (da) 上的第八个分区 (h)。 于此相反, Vinum 卷可能叫做 - /dev/vinum/concat, + /dev/gvinum/concat, 这个名字和分区名没有什么关系。 一般而言, &man.newfs.8; 会试图解释磁盘的名字, 如果它无法理解这个名字, 则会给出错误提示。 例如: - &prompt.root; newfs /dev/vinum/concat -newfs: /dev/vinum/concat: can't figure out file system partition + &prompt.root; newfs /dev/gvinum/concat +newfs: /dev/gvinum/concat: can't figure out file system partition + + 要在这个卷上创建文件系统, 则需要使用 + &man.newfs.8;: - 对于 FreeBSD 5.0 之前的版本: + &prompt.root; newfs /dev/gvinum/concat - 要在卷上创建文件系统, 应使用 &man.newfs.8; 的 - 参数: + 对于 &os; 5.0 之前的版本, &man.newfs.8; 还需要指定一个 + -v 参数, 而且其设备命名方式也是旧式的: &prompt.root; newfs -v /dev/vinum/concat @@ -841,7 +803,7 @@ newfs: /dev/vinum/concat: can't figure out file system partition Vinum 的内核, 然而并不推荐这样做。 启动 Vinum 的标准方法, 是使用内核模块 (kld)。 甚至不需要使用 &man.kldload.8; 来启动 Vinum: 在启动 - &man.vinum.8; 时, 它会检查这一模块是否已经加载, + &man.gvinum.8; 时, 它会检查这一模块是否已经加载, 如果没有, 则会自动地加载它。 @@ -883,6 +845,10 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr 自动启动 + 这些内容仅适用于旧式的 + Vinum 实现。 在 Gvinum 内核模块加载时, + 总会执行自动启动操作。 + 要在引导系统时自动启动 Vinum, 需要在 /etc/rc.conf 中加入下面的配置: @@ -952,13 +918,18 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr linkend="boot-loader">) 来尽早加载 vinum 内核模块, 这一操作发生在内核加载之前。 这可以通过将下面的配置: - vinum_load="YES" + geom_vinum_load="YES" 加入到 /boot/loader.conf 文件中来实现。 + Gvinum 而言, + 所有的启动过程都是在内核模块加载时自动进行的, 因此上面的操作, + 也就是所要进行的全部工作了。 下面的文字介绍的是旧式的 Vinum + 系统, 保留它们的主要是为了方便那些使用旧版系统的用户。 + Vinum 必须尽早初始化, 因为需要由它来提供根文件系统的卷。 默认情况下, Vinum 的内核部分并不主动地查找可能包含 Vinum 卷信息的驱动器, 而会等待管理员 @@ -967,7 +938,7 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr 下面介绍的是 FreeBSD 5.X 和更高版本所需的配置。 对于 FreeBSD 4.X 的配置方法与此不同, 在 中有所买噢书。 + linkend="vinum-root-4x"> 中有所描述。 通过将下面的配置: @@ -1027,7 +998,7 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr 使用下面的命令来了解根卷成员子盘的位置 (从设备开始的偏移量) 和尺寸: - &prompt.root; vinum l -rv root + &prompt.root; gvinum l -rv root 需要注意的是, Vinum 偏移量和尺寸的单位是字节。 它们必须是 512 的整数倍, 才能得到 @@ -1092,14 +1063,14 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr 在内核初始化过程的结尾部分, 在所有的设备都被宣示之后, 如果显示了下面的信息, 则表示配置成功: - Mounting root from ufs:/dev/vinum/root + Mounting root from ufs:/dev/gvinum/root 基于 Vinum 的根文件系统的配置范例 在 Vinum 根卷配置好之后, - vinum l -rv root 的输出可能类似下面的样子: + gvinum l -rv root 的输出可能类似下面的样子: ... @@ -1167,8 +1138,8 @@ Subdisk root.p1.s0: unset 命令来设置。 如果遇到的问题是由于 Vinum 的内核模块没有列入预加载的列表, - 而没有正确加载, 则可以简单使用 - load vinum 会有所帮助。 + 而没有正确加载, 则简单使用 + load geom_vinum 会有所帮助。 此后, 可以使用 boot -as 来继续启动过程。 选项 @@ -1182,7 +1153,7 @@ Subdisk root.p1.s0: 可以输入任何一个包含根文件系统的设备。 如果正确地配置了 /etc/fstab, 则默认的应该是类似 - ufs:/dev/vinum/root。 + ufs:/dev/gvinum/root。 一般可以使用类似 ufs:da0d 这样的设备来代替它, 因为它通常包括了 Vinum 之前的根文件系统。 -- cgit v1.2.3