MFen 1.37 -> 1.40
Obtained from: The FreeBSD Simplified Chinese Project
This commit is contained in:
parent
7bdc6c1ec9
commit
d30dd1dd49
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=27418
1 changed files with 78 additions and 107 deletions
|
@ -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
|
|||
|
||||
<para>这一章对传统磁盘存储的潜在问题进行了简要说明,并介绍了 Vinum 卷管理器。</para>
|
||||
|
||||
<note><para>从 FreeBSD 5 开始, 对 Vinum 进行了重写,
|
||||
以便使其符合 GEOM 架构 (<xref linkend="GEOM">),
|
||||
而保留其原有的设计创意、 术语, 以及保存在磁盘上的元数据格式。
|
||||
这一重写的版本称为 <emphasis>gvinum</emphasis> (表示 <emphasis>
|
||||
GEOM vinum</emphasis>)。 接下来的文字中
|
||||
<emphasis>Vinum</emphasis> 是一个抽象的名字, 通常并不具体指某一特定的实现。
|
||||
新版本中所有的指令都应通过 <command>gvinum</command> 命令来操作,
|
||||
而对应的内核模块的名字, 也由
|
||||
<filename>vinum.ko</filename> 改为了
|
||||
<filename>geom_vinum.ko</filename>, 而在
|
||||
<filename>/dev/vinum</filename> 中的所有设备节点,
|
||||
也改为放到了 <filename>/dev/gvinum</filename>。
|
||||
从 FreeBSD 6 开始, 旧版的 Vinum 实现已不再提供。</para></note>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="vinum-intro">
|
||||
|
@ -397,13 +411,12 @@ FreeBSD
|
|||
<sect1 id="vinum-examples">
|
||||
<title>一些例子</title>
|
||||
|
||||
<para>Vinum 维护着一个描述以一个独立系统为目标
|
||||
<emphasis>配置数据库</emphasis>的。最初,用户通过&man.vinum.8;
|
||||
工具的帮助从一个或多个配置文件创建配置数据库。Vinum 在它的控制
|
||||
下在每个磁盘(Vinum 叫 <emphasis>device</emphasis>) 上存储一个
|
||||
它的配置数据库的拷贝。这个数据库在每个状态变化的时候被升级,
|
||||
以便能精确地回复每个Vinum 目标的状态。
|
||||
</para>
|
||||
<para>Vinum 维护着一个描述本系统中对象的 <emphasis>配置数据库</emphasis>。
|
||||
开始时, 用户可以在 &man.gvinum.8; 工具来从若干配置文件生成配置数据库。
|
||||
Vinum 在其控制的每个磁盘分区 (在
|
||||
Vinum 中称为 <emphasis>device</emphasis>) 上都保存配置数据库的副本。
|
||||
这一数据库在每次状态变化时均会更新, 因而重启每个 Vinum 对象时,
|
||||
都能够恢复其状态。</para>
|
||||
|
||||
<sect2>
|
||||
<title>配置文件</title>
|
||||
|
@ -455,10 +468,10 @@ FreeBSD
|
|||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>处理完这个文件后, &man.vinum.8会产生下面的输出:</para>
|
||||
<para>处理完这个文件后, &man.gvinum.8; 会产生下面的输出:</para>
|
||||
|
||||
<programlisting width="97">
|
||||
&prompt.root; vinum -> <userinput>create config1</userinput>
|
||||
&prompt.root; gvinum -> <userinput>create config1</userinput>
|
||||
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</programlisting>
|
||||
|
||||
<para>这个输出显示了&man.vinum.8简要的列表格式。
|
||||
图<xref linkend="vinum-simple-vol">中它用图形来表示这一点。</para>
|
||||
<para>这些输出内容展示了 &man.gvinum.8; 的简要列表格式。
|
||||
在 <xref linkend="vinum-simple-vol"> 中用图形展示了这个配置。</para>
|
||||
|
||||
<para>
|
||||
<figure id="vinum-simple-vol">
|
||||
|
@ -664,59 +677,48 @@ FreeBSD
|
|||
32 个字符。</para>
|
||||
|
||||
<para>Vinum 对象会在
|
||||
<filename>/dev/vinum</filename> 之下生成设备接点。
|
||||
<filename>/dev/gvinum</filename> 之下生成设备接点。
|
||||
前述的配置将使 Vinum 创建以下设备节点:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<note><para>这些内容仅适用于旧式的 Vinum
|
||||
实现。</para></note>
|
||||
|
||||
<para>控制设备
|
||||
<filename>/dev/vinum/control</filename> 和
|
||||
<filename>/dev/vinum/controld</filename>,
|
||||
分别由 &man.vinum.8; 和 Vinum 服务使用。</para>
|
||||
分别由 &man.gvinum.8; 和 Vinum 服务使用。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>每一个卷缩对应的块设备和字符设备。
|
||||
这些是 Vinum 中用到的主要设备。 块设备的名字就是卷的名字,
|
||||
而字符设备的名字, 则遵循 BSD 的习惯, 在卷的名字前面增加
|
||||
<emphasis>r</emphasis>。 因此, 前面的配置对应的块设备是
|
||||
<filename>/dev/vinum/myvol</filename>,
|
||||
<filename>/dev/vinum/mirror</filename>,
|
||||
<filename>/dev/vinum/striped</filename>,
|
||||
<filename>/dev/vinum/raid5</filename> 和
|
||||
<filename>/dev/vinum/raid10</filename>, 而字符设备则是
|
||||
<filename>/dev/vinum/rmyvol</filename>,
|
||||
<filename>/dev/vinum/rmirror</filename>,
|
||||
<filename>/dev/vinum/rstriped</filename>,
|
||||
<filename>/dev/vinum/rraid5</filename> 和
|
||||
<filename>/dev/vinum/rraid10</filename>。
|
||||
显然, 这有时会造成问题: 有可能有两个卷,
|
||||
分别叫做 <emphasis>r</emphasis> 和 <emphasis>rr</emphasis>,
|
||||
这样, 在创建设备节点
|
||||
<filename>/dev/vinum/rr</filename> 时就会产生冲突:
|
||||
它到底是卷 <emphasis>r</emphasis> 对应的字符设备,
|
||||
还是卷 <emphasis>rr</emphasis> 的块设备?
|
||||
目前, Vinum 并不处理这样的冲突: 先定义的卷,
|
||||
将得到希望的设备名。</para>
|
||||
<para>每个卷对应的设备项。 这些是 Vinum 使用的主要设备。
|
||||
因此, 前述配置包括下列设备:
|
||||
<filename>/dev/gvinum/myvol</filename>、
|
||||
<filename>/dev/gvinum/mirror</filename>、
|
||||
<filename>/dev/gvinum/striped</filename>、
|
||||
<filename>/dev/gvinum/raid5</filename> 以及
|
||||
<filename>/dev/gvinum/raid10</filename>。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<note><para>这些内容仅适用于旧式的 Vinum
|
||||
实现。</para></note>
|
||||
|
||||
<para>一个包含每个驱动器对应项的 <filename>/dev/vinum/drive</filename>
|
||||
目录。 这些项事实上是指向对应磁盘节点的符号连接。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>包含每个卷对应项的 <filename>/dev/vinum/volume</filename>
|
||||
目录。 每一个 plex 对应一个子目录, 而这些目录中,
|
||||
则是组成它们的子盘。</para>
|
||||
<para>所有卷的直接项都存放在
|
||||
<filename>/dev/gvinum/</filename> 中。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>目录
|
||||
<filename>/dev/vinum/plex</filename>,
|
||||
<filename>/dev/vinum/sd</filename>, 以及
|
||||
<filename>/dev/vinum/rsd</filename>, 它们中包括了每一个 plex
|
||||
的设备节点, 以及每一个子盘的块设备和字符设备。</para>
|
||||
<filename>/dev/gvinum/plex</filename>, 以及
|
||||
<filename>/dev/gvinum/sd</filename> 中相应地存放了每个 plex
|
||||
以及子盘的设备节点。</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
|
@ -733,67 +735,24 @@ FreeBSD
|
|||
sd length 100m drive drive3
|
||||
sd length 100m drive drive4</programlisting>
|
||||
|
||||
<para>处理这个文件之后, &man.vinum.8; 将在
|
||||
<filename>/dev/vinum</filename> 中建立下面的结构:</para>
|
||||
<para>处理这个文件之后, &man.gvinum.8; 将在
|
||||
<filename>/dev/gvinum</filename> 中建立下面的结构:</para>
|
||||
|
||||
<programlisting>
|
||||
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</programlisting>
|
||||
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3</programlisting>
|
||||
|
||||
<para>虽然 plex 和子盘一般并不推荐指定名字, 但还是必须给 Vinum
|
||||
驱动器命名。 这样, 当把驱动器转移到不同的地方时,
|
||||
|
@ -814,19 +773,22 @@ FreeBSD
|
|||
以及第三个 (2) SCSI 磁盘 (<devicename>da</devicename>)
|
||||
上的第八个分区 (<devicename>h</devicename>)。
|
||||
于此相反, Vinum 卷可能叫做
|
||||
<filename>/dev/vinum/concat</filename>,
|
||||
<filename>/dev/gvinum/concat</filename>,
|
||||
这个名字和分区名没有什么关系。</para>
|
||||
|
||||
<para>一般而言, &man.newfs.8; 会试图解释磁盘的名字,
|
||||
如果它无法理解这个名字, 则会给出错误提示。 例如:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>newfs /dev/vinum/concat</userinput>
|
||||
newfs: /dev/vinum/concat: can't figure out file system partition</screen>
|
||||
<screen>&prompt.root; <userinput>newfs /dev/gvinum/concat</userinput>
|
||||
newfs: /dev/gvinum/concat: can't figure out file system partition</screen>
|
||||
|
||||
<note><para>对于 FreeBSD 5.0 之前的版本:</para></note>
|
||||
<para>要在这个卷上创建文件系统, 则需要使用
|
||||
&man.newfs.8;:</para>
|
||||
|
||||
<para>要在卷上创建文件系统, 应使用 &man.newfs.8; 的
|
||||
<option>-v</option> 参数:</para>
|
||||
<screen>&prompt.root; <userinput>newfs /dev/gvinum/concat</userinput></screen>
|
||||
|
||||
<note><para>对于 &os; 5.0 之前的版本, &man.newfs.8; 还需要指定一个
|
||||
-v 参数, 而且其设备命名方式也是旧式的:</para></note>
|
||||
|
||||
<screen>&prompt.root; <userinput>newfs -v /dev/vinum/concat</userinput></screen>
|
||||
|
||||
|
@ -841,7 +803,7 @@ newfs: /dev/vinum/concat: can't figure out file system partition</screen>
|
|||
Vinum 的内核, 然而并不推荐这样做。 启动
|
||||
Vinum 的标准方法, 是使用内核模块 (<acronym>kld</acronym>)。
|
||||
甚至不需要使用 &man.kldload.8; 来启动 Vinum: 在启动
|
||||
&man.vinum.8; 时, 它会检查这一模块是否已经加载,
|
||||
&man.gvinum.8; 时, 它会检查这一模块是否已经加载,
|
||||
如果没有, 则会自动地加载它。</para>
|
||||
|
||||
|
||||
|
@ -883,6 +845,10 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr
|
|||
<sect3 id="vinum-rc-startup">
|
||||
<title>自动启动</title>
|
||||
|
||||
<note><para>这些内容仅适用于旧式的
|
||||
Vinum 实现。 在 <emphasis>Gvinum</emphasis> 内核模块加载时,
|
||||
总会执行自动启动操作。</para></note>
|
||||
|
||||
<para>要在引导系统时自动启动 Vinum, 需要在
|
||||
<filename>/etc/rc.conf</filename> 中加入下面的配置:</para>
|
||||
|
||||
|
@ -952,13 +918,18 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr
|
|||
linkend="boot-loader">) 来尽早加载 vinum 内核模块,
|
||||
这一操作发生在内核加载之前。 这可以通过将下面的配置:</para>
|
||||
|
||||
<programlisting>vinum_load="YES"</programlisting>
|
||||
<programlisting>geom_vinum_load="YES"</programlisting>
|
||||
|
||||
<para>加入到
|
||||
<filename>/boot/loader.conf</filename> 文件中来实现。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<note><para>对 <emphasis>Gvinum</emphasis> 而言,
|
||||
所有的启动过程都是在内核模块加载时自动进行的, 因此上面的操作,
|
||||
也就是所要进行的全部工作了。 下面的文字介绍的是旧式的 Vinum
|
||||
系统, 保留它们的主要是为了方便那些使用旧版系统的用户。</para></note>
|
||||
|
||||
<para>Vinum 必须尽早初始化, 因为需要由它来提供根文件系统的卷。
|
||||
默认情况下, Vinum 的内核部分并不主动地查找可能包含 Vinum
|
||||
卷信息的驱动器, 而会等待管理员
|
||||
|
@ -967,7 +938,7 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr
|
|||
|
||||
<note><para>下面介绍的是 FreeBSD 5.X 和更高版本所需的配置。 对于
|
||||
FreeBSD 4.X 的配置方法与此不同, 在 <xref
|
||||
linkend="vinum-root-4x"> 中有所买噢书。</para></note>
|
||||
linkend="vinum-root-4x"> 中有所描述。</para></note>
|
||||
|
||||
<para>通过将下面的配置:</para>
|
||||
|
||||
|
@ -1027,7 +998,7 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr
|
|||
<para>使用下面的命令来了解根卷成员子盘的位置
|
||||
(从设备开始的偏移量) 和尺寸:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>vinum l -rv root</userinput></screen>
|
||||
<screen>&prompt.root; <userinput>gvinum l -rv root</userinput></screen>
|
||||
|
||||
<para>需要注意的是, Vinum 偏移量和尺寸的单位是字节。
|
||||
它们必须是 512 的整数倍, 才能得到
|
||||
|
@ -1092,14 +1063,14 @@ sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b dr
|
|||
在内核初始化过程的结尾部分, 在所有的设备都被宣示之后,
|
||||
如果显示了下面的信息, 则表示配置成功:</para>
|
||||
|
||||
<screen>Mounting root from ufs:/dev/vinum/root</screen>
|
||||
<screen>Mounting root from ufs:/dev/gvinum/root</screen>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>基于 Vinum 的根文件系统的配置范例</title>
|
||||
|
||||
<para>在 Vinum 根卷配置好之后,
|
||||
<command>vinum l -rv root</command> 的输出可能类似下面的样子:</para>
|
||||
<command>gvinum l -rv root</command> 的输出可能类似下面的样子:</para>
|
||||
|
||||
<screen>
|
||||
...
|
||||
|
@ -1167,8 +1138,8 @@ Subdisk root.p1.s0:
|
|||
<command>unset</command> 命令来设置。</para>
|
||||
|
||||
<para>如果遇到的问题是由于 Vinum 的内核模块没有列入预加载的列表,
|
||||
而没有正确加载, 则可以简单使用
|
||||
<command>load vinum</command> 会有所帮助。</para>
|
||||
而没有正确加载, 则简单使用
|
||||
<command>load geom_vinum</command> 会有所帮助。</para>
|
||||
|
||||
<para>此后, 可以使用
|
||||
<command>boot -as</command> 来继续启动过程。 选项
|
||||
|
@ -1182,7 +1153,7 @@ Subdisk root.p1.s0:
|
|||
可以输入任何一个包含根文件系统的设备。
|
||||
如果正确地配置了 <filename>/etc/fstab</filename>,
|
||||
则默认的应该是类似
|
||||
<literal>ufs:/dev/vinum/root</literal>。
|
||||
<literal>ufs:/dev/gvinum/root</literal>。
|
||||
一般可以使用类似
|
||||
<literal>ufs:da0d</literal> 这样的设备来代替它,
|
||||
因为它通常包括了 Vinum 之前的根文件系统。
|
||||
|
|
Loading…
Reference in a new issue