aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books
diff options
context:
space:
mode:
authorGabor Kovesdan <gabor@FreeBSD.org>2012-09-04 21:35:17 +0000
committerGabor Kovesdan <gabor@FreeBSD.org>2012-09-04 21:35:17 +0000
commit0421ffc1796a3cb0985c25637e2590893408dc5e (patch)
treebcc729bd1e6d2242d975e31b942ec15f937251d0 /zh_CN.GB2312/books
parent6b67dd8ee646af0ef7f0361d2db687806bc172f2 (diff)
downloaddoc-0421ffc1796a3cb0985c25637e2590893408dc5e.tar.gz
doc-0421ffc1796a3cb0985c25637e2590893408dc5e.zip
- MFH
Approved by: doceng (implicit)
Notes
Notes: svn path=/projects/sgml2xml/; revision=39499
Diffstat (limited to 'zh_CN.GB2312/books')
-rw-r--r--zh_CN.GB2312/books/handbook/geom/chapter.sgml304
1 files changed, 231 insertions, 73 deletions
diff --git a/zh_CN.GB2312/books/handbook/geom/chapter.sgml b/zh_CN.GB2312/books/handbook/geom/chapter.sgml
index 5d1af468fc..7b632e4e5d 100644
--- a/zh_CN.GB2312/books/handbook/geom/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/geom/chapter.sgml
@@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
- Original Revision: 1.50
+ Original Revision: r38401
$FreeBSD$
-->
@@ -152,11 +152,12 @@
<screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen>
</step>
- <step><para>确定将被做成条带卷的磁盘的设备名,
- 并创建新的条带设备。 举例而言,
- 要将两个未用的、 尚未分区的 <acronym>ATA</acronym> 磁盘
- <filename>/dev/ad2</filename> 和
- <filename>/dev/ad3</filename> 做成一个条带设备:</para>
+ <step>
+ <para>确定将被做成条带卷的磁盘的设备名,
+ 并创建新的条带设备。 举例而言,
+ 要将两个未用的、 尚未分区的 <acronym>ATA</acronym> 磁盘
+ <filename>/dev/ad2</filename> 和
+ <filename>/dev/ad3</filename> 做成一个条带设备:</para>
<screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput>
Metadata value stored on /dev/ad2.
@@ -165,45 +166,48 @@ Done.</screen>
</step>
- <step><para>接着需要写标准的 label, 也就是通常所说的分区表到新卷上,
- 并安装标准的引导代码:</para>
+ <step>
+ <para>接着需要写标准的 label, 也就是通常所说的分区表到新卷上,
+ 并安装标准的引导代码:</para>
<screen>&prompt.root; <userinput>bsdlabel -wB /dev/stripe/st0</userinput></screen>
-
</step>
- <step><para>上述过程将在
- <filename class="directory">/dev/stripe</filename>
- 目录中的 <devicename>st0</devicename> 设备基础上建立两个新设备。
- 这包括 <devicename>st0a</devicename> 和
- <devicename>st0c</devicename>。 这时, 就可以在
- <devicename>st0a</devicename> 设备上用下述
- <command>newfs</command> 命令来建立文件系统了:</para>
+ <step>
+ <para>上述过程将在
+ <filename class="directory">/dev/stripe</filename>
+ 目录中的 <devicename>st0</devicename> 设备基础上建立两个新设备。
+ 这包括 <devicename>st0a</devicename> 和
+ <devicename>st0c</devicename>。 这时, 就可以在
+ <devicename>st0a</devicename> 设备上用下述
+ <command>newfs</command> 命令来建立文件系统了:</para>
+
+ <screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen>
- <screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen>
+ <para>在屏幕上将滚过一些数字, 整个操作应该能在数秒内完成。
+ 现在可以挂接刚刚做好的卷了。</para>
+ </step>
- <para>在屏幕上将滚过一些数字, 整个操作应该能在数秒内完成。
- 现在可以挂接刚刚做好的卷了。</para>
- </step>
</procedure>
<para>要挂接刚创建的条带盘:</para>
<screen>&prompt.root; <userinput>mount /dev/stripe/st0a /mnt</userinput></screen>
- <para>要在启动过程中自动挂接这个条带上的文件系统,
- 需要把关于卷的信息放到
- <filename>/etc/fstab</filename> 文件中。为达到此目的,
- 需要创建一个叫 <filename class="directory">stripe</filename>
- 永久的挂载点:</para>
+ <para>要在启动过程中自动挂接这个条带上的文件系统,
+ 需要把关于卷的信息放到
+ <filename>/etc/fstab</filename> 文件中。为达到此目的,
+ 需要创建一个叫
+ <filename class="directory">stripe</filename>
+ 的永久的挂载点:</para>
<screen>&prompt.root; <userinput>mkdir /stripe</userinput>
&prompt.root; <userinput>echo "/dev/stripe/st0a /stripe ufs rw 2 2" \</userinput>
<userinput>&gt;&gt; /etc/fstab</userinput></screen>
- <para>此外, <filename>geom_stripe.ko</filename> 模块也必须通过在
- <filename>/boot/loader.conf</filename> 中增加下述设置,
- 以便在系统初始化过程中自动加载。</para>
+ <para>此外, <filename>geom_stripe.ko</filename> 模块也必须通过在
+ <filename>/boot/loader.conf</filename> 中增加下述设置,
+ 以便在系统初始化过程中自动加载:</para>
<screen>&prompt.root; <userinput>echo 'geom_stripe_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
@@ -220,8 +224,8 @@ Done.</screen>
</indexterm>
<para>镜像是许多公司和家庭用户使用的一种无须中断的备份技术。
- 简单地说, 镜像的概念就是 磁盘B 是同步复制 (replicate) 的 磁盘A 的副本, 或者 磁盘C+D
- 是 diskA+B 的同步复制副本, 等等。 无论磁盘配置如何,
+ 简单地说, 镜像的概念就是 磁盘B 是同步复制 (replicate) 的 磁盘A 的副本,
+ 或者 磁盘C+D 是 diskA+B 的同步复制副本, 等等。 无论磁盘配置如何,
这种技术的共同特点都是一块磁盘或分区的内容会同步复制到另外的地方。
这样, 除了能够很容易地恢复信息之外,
还能够在无须中断服务或访问的情况下进行备份,
@@ -250,9 +254,13 @@ Done.</screen>
<filename class="devicefile">/dev/mirror/gm</filename> 设备:</para>
<warning>
- <para>如果有数据被存放在磁盘最后的扇区,
- 并在启动设备上创建镜像的话可能导致数据丢失。
- 在新安装 &os; 之后立即创建镜像可以减低此风险。</para>
+ <para>在引导用的设备基础上新建镜像时,
+ 有可能会导致保存在磁盘上最后一个扇区的数据丢失。
+ 在新安装 &os; 之后立即创建镜像可以减低此风险。
+ 下面的操作与默认的 &os;&nbsp;9.<replaceable>X</replaceable>
+ 安装过程不兼容, 因为它采用了新的 <acronym>GPT</acronym>
+ 分区格式。 GEOM 会覆盖 <acronym>GPT</acronym> 元数据,
+ 这会导致数据丢失, 并有可能导致系统无法引导。</para>
</warning>
<screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
@@ -288,11 +296,11 @@ Done.</screen>
<screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
- <para>在 &man.vi.1; 中备份现有的
+ <para>在 &man.vi.1; 中备份现有的
<filename>fstab</filename> 内容, 具体操作是
<userinput>:w /etc/fstab.bak</userinput>。 接着,
- 把所有旧的 <devicename>da0</devicename> 替换成 <devicename>gm0</devicename>,
- 也就是输入命令
+ 把所有旧的 <devicename>da0</devicename>
+ 替换成 <devicename>gm0</devicename>, 也就是输入命令
<userinput>:%s/da/mirror\/gm/g</userinput>。</para>
</note>
@@ -301,14 +309,14 @@ Done.</screen>
甚至 <acronym>RAID</acronym> 都没有关系, 最终的结果都是
<devicename>gm</devicename>。</para>
- <programlisting># Device Mountpoint FStype Options Dump Pass#
-/dev/mirror/gm0s1b none swap sw 0 0
-/dev/mirror/gm0s1a / ufs rw 1 1
-/dev/mirror/gm0s1d /usr ufs rw 0 0
-/dev/mirror/gm0s1f /home ufs rw 2 2
-#/dev/mirror/gm0s2d /store ufs rw 2 2
-/dev/mirror/gm0s1e /var ufs rw 2 2
-/dev/acd0 /cdrom cd9660 ro,noauto 0 0</programlisting>
+ <programlisting># Device Mountpoint FStype Options Dump Pass#
+/dev/mirror/gm0s1b none swap sw 0 0
+/dev/mirror/gm0s1a / ufs rw 1 1
+/dev/mirror/gm0s1d /usr ufs rw 0 0
+/dev/mirror/gm0s1f /home ufs rw 2 2
+#/dev/mirror/gm0s2d /store ufs rw 2 2
+/dev/mirror/gm0s1e /var ufs rw 2 2
+/dev/acd0 /cdrom cd9660 ro,noauto 0 0</programlisting>
<para>重启系统:</para>
@@ -368,8 +376,8 @@ mountroot></programlisting>
OK? <userinput>boot</userinput></screen>
<para>如果这样做能解决问题, 则说明由于某种原因模块没有被正确加载。
- 检查 <filename>/boot/loader.conf</filename> 中相关条目是否正确。
- 如果问题仍然存在,可以在内核配置文件中加入:</para>
+ 检查 <filename>/boot/loader.conf</filename> 中相关条目是否正确。
+ 如果问题仍然存在,可以在内核配置文件中加入:</para>
<programlisting>options GEOM_MIRROR</programlisting>
@@ -399,6 +407,156 @@ OK? <userinput>boot</userinput></screen>
</sect2>
</sect1>
+ <sect1 id="GEOM-raid3">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Mark</firstname>
+ <surname>Gladman</surname>
+ <contrib>Written by </contrib>
+ </author>
+ <author>
+ <firstname>Daniel</firstname>
+ <surname>Gerzo</surname>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Based on documentation by </contrib>
+ </author>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title><acronym>RAID</acronym>3 - 使用专用校验设备的字节级条带</title>
+
+ <indexterm>
+ <primary>GEOM</primary>
+ </indexterm>
+ <indexterm>
+ <primary>RAID3</primary>
+ </indexterm>
+
+ <para><acronym>RAID</acronym>3 是一种将多个磁盘组成一个卷的技术,
+ 在这个配置中包含一个专用于校验的盘。
+ 在 <acronym>RAID</acronym>3 系统中,
+ 数据会以字节为单位拆分并写入除校验盘之外的全部驱动器中。 这意味着从
+ <acronym>RAID</acronym>3 中读取数据时将会访问所有的驱动器。
+ 采用多个磁盘控制器可以进一步改善性能。 <acronym>RAID</acronym>3
+ 阵列最多可以容忍其中的 1 个驱动器出现故障,
+ 它可以提供全部驱动器总容量的 1 - 1/n,
+ 此处 n 是阵列中的磁盘数量。 这类配置比较适合保存大容量的数据,
+ 例如多媒体文件。</para>
+
+ <para>在建立
+ <acronym>RAID</acronym>3 阵列时, 至少需要 3 块磁盘。
+ 所有的盘的尺寸必须一致, 因为 I/O 请求会并发分派到不同的盘上。
+ 另外, 由于
+ <acronym>RAID</acronym>3 本身的设计,
+ 盘的数量必须恰好是 3, 5, 9, 17, 等等 (2^n + 1)。</para>
+
+ <sect2>
+ <title>建立专用的 <acronym>RAID</acronym>3 阵列</title>
+
+ <para>在 &os; 中, <acronym>RAID</acronym>3
+ 是通过 &man.graid3.8; <acronym>GEOM</acronym>
+ class 实现的。 在 &os; 中建立专用的
+ <acronym>RAID</acronym>3 阵列需要下述步骤。</para>
+
+ <note>
+ <para>虽然理论上从
+ <acronym>RAID</acronym>3 阵列启动 &os; 是可行的,
+ 但这并不常见, 也不推荐您这样做。</para>
+ </note>
+
+ <procedure>
+ <step>
+ <para>首先, 在引导加载器中用下面的命令加载 <filename>geom_raid3.ko</filename>
+ 内核模块:</para>
+
+ <screen>&prompt.root; <userinput>graid3 load</userinput></screen>
+
+ <para>此外, 也可以通过命令行手工加载
+ <filename>geom_raid3.ko</filename> 模块:</para>
+
+ <screen>&prompt.root; <userinput>kldload geom_raid3.ko</userinput></screen>
+ </step>
+
+ <step>
+ <para>创建用于挂载卷的挂点目录:</para>
+
+ <screen>&prompt.root; <userinput>mkdir <replaceable>/multimedia/</replaceable></userinput></screen>
+ </step>
+
+ <step>
+ <para>确定将要加入阵列的磁盘设备名, 并创建新的
+ <acronym>RAID</acronym>3 设备。 最终, 这个设备将代表整个阵列。
+ 下面的例子使用三个未经分区的
+ <acronym>ATA</acronym> 磁盘:
+ <devicename><replaceable>ada1</replaceable></devicename>
+ 和 <devicename><replaceable>ada2</replaceable></devicename>
+ 保存数据, 而
+ <devicename><replaceable>ada3</replaceable></devicename>
+ 用于校验。</para>
+
+ <screen>&prompt.root; <userinput>graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3</userinput>
+Metadata value stored on /dev/ada1.
+Metadata value stored on /dev/ada2.
+Metadata value stored on /dev/ada3.
+Done.</screen>
+ </step>
+
+ <step>
+ <para>为新建的
+ <devicename>gr0</devicename> 设备分区,
+ 并在其上创建 UFS 文件系统:</para>
+
+ <screen>&prompt.root; <userinput>gpart create -s GPT /dev/raid3/gr0</userinput>
+&prompt.root; <userinput>gpart add -t freebsd-ufs /dev/raid3/gr0</userinput>
+&prompt.root; <userinput>newfs -j /dev/raid3/gr0p1</userinput></screen>
+
+ <para>屏幕上会滚过许多数字, 这个过程需要一段时间才能完成。
+ 此后, 您就完成了创建卷的全部操作,
+ 可以挂载它了。</para>
+ </step>
+
+ <step>
+ <para>最后一步是挂载文件系统:</para>
+
+ <screen>&prompt.root; <userinput>mount /dev/raid3/gr0p1 /multimedia/</userinput></screen>
+
+ <para>现在可以使用 <acronym>RAID</acronym>3 阵列了。</para>
+ </step>
+ </procedure>
+
+ <para>为了让上述配置在系统重启后继续可用, 还需要进行一些额外的配置操作。</para>
+
+ <procedure>
+ <step>
+ <para>在挂载卷之前必须首先加载 <filename>geom_raid3.ko</filename> 模块。
+ 将下面的配置添加到
+ <filename>/boot/loader.conf</filename> 文件中,
+ 可以让系统在引导过程中自动加载这个模块:</para>
+
+ <programlisting>geom_raid3_load="YES"</programlisting>
+ </step>
+
+ <step>
+ <para>您需要在
+ <filename>/etc/fstab</filename> 文件中加入下列配置,
+ 以便让系统引导时自动挂载阵列上的文件系统:</para>
+
+ <programlisting>/dev/raid3/gr0p1 /multimedia ufs rw 2 2</programlisting>
+ </step>
+ </procedure>
+ </sect2>
+ </sect1>
+
<sect1 id="geom-ggate">
<title>GEOM Gate 网络设备</title>
@@ -490,25 +648,25 @@ ggate0
<title>标签类型和使用示范</title>
<para>有两种类型的标签, 一种是普通标签, 另一种是文件系统标签。
- 标签可以是永久性的或暂时性的。永久性的标签可以通过
- &man.tunefs.8; 或 &man.newfs.8; 命令创键。根据文件系统的类型,
- 它们将在 <filename class="directory">/dev</filename>
- 下的一个子目录中被创建。例如,
+ 标签可以是永久性的或暂时性的。永久性的标签可以通过
+ &man.tunefs.8; 或 &man.newfs.8; 命令创键。根据文件系统的类型,
+ 它们将在 <filename class="directory">/dev</filename>
+ 下的一个子目录中被创建。例如,
<acronym>UFS</acronym>2 文件系统的标签会创建到
<filename class="directory">/dev/ufs</filename>
目录中。永久性的标签还可以使用 <command>glabel label</command>
- 创建。它们不再是文件系统特定的,而是会在
- <filename class="directory">/dev/label</filename>
- 目录中被创建。</para>
+ 创建。它们不再是文件系统特定的,而是会在
+ <filename class="directory">/dev/label</filename>
+ 目录中被创建。</para>
<para>暂时性的标签在系统下次重启时会消失, 这些标签会创建到
<filename class="directory">/dev/label</filename> 目录中,
很适合测试之用。可以使用 <command>glabel create</command>
- 创建暂时性的标签。请参阅 &man.glabel.8;
- 手册页以获取更多详细信息。</para>
+ 创建暂时性的标签。请参阅 &man.glabel.8;
+ 手册页以获取更多详细信息。</para>
<!-- XXXTR: How do you create a file system label without running newfs
- or when there is no newfs (e.g.: cd9660)? -->
+ or when there is no newfs (e.g.: cd9660)? -->
<para>要为一个 <acronym>UFS</acronym>2 文件系统创建永久性标签,
而不破坏其上的数据,可以使用下面的命令:</para>
@@ -552,20 +710,20 @@ ggate0
<example>
<title>为启动磁盘打上标签</title>
- <para>为启动磁盘打上永久性标签, 系统应该能够正常启动,
- 即使磁盘被移动到了另外一个控制器或者转移到了一个不同的系统上。
- 此例中我们假设使用了一个 <acronym>ATA</acronym> 磁盘,
- 当前这个设备被系统识别为 <devicename>ad0</devicename>。
- 还假设使用了标准的 &os; 分区划分方案,
+ <para>为启动磁盘打上永久性标签, 系统应该能够正常启动,
+ 即使磁盘被移动到了另外一个控制器或者转移到了一个不同的系统上。
+ 此例中我们假设使用了一个 <acronym>ATA</acronym> 磁盘,
+ 当前这个设备被系统识别为 <devicename>ad0</devicename>。
+ 还假设使用了标准的 &os; 分区划分方案,
<filename class="directory">/</filename>,
<filename class="directory">/var</filename>,
<filename class="directory">/usr</filename> 和
<filename class="directory">/tmp</filename> 文件系统,
还有一个 swap 分区。</para>
- <para>重启系统,在 &man.loader.8; 提示符下键入
- <keycap>4</keycap> 启动到单用户模式。
- 然后输入以下的命令:</para>
+ <para>重启系统,在 &man.loader.8; 提示符下键入
+ <keycap>4</keycap> 启动到单用户模式。
+ 然后输入以下的命令:</para>
<screen>&prompt.root; <userinput>glabel label rootfs /dev/ad0s1a</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
@@ -579,9 +737,9 @@ GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
&prompt.root; <userinput>exit</userinput></screen>
- <para>系统加继续启动进入多用户模式。 在启动完毕后, 编辑
- <filename>/etc/fstab</filename> 用各自的标签替换下常规的设备名。
- 最终 <filename>/etc/fstab</filename> 看起来差不多是这样的:</para>
+ <para>系统加继续启动进入多用户模式。 在启动完毕后, 编辑
+ <filename>/etc/fstab</filename> 用各自的标签替换下常规的设备名。
+ 最终 <filename>/etc/fstab</filename> 看起来差不多是这样的:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/label/swap none swap sw 0 0
@@ -590,8 +748,8 @@ GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
/dev/label/usr /usr ufs rw 2 2
/dev/label/var /var ufs rw 2 2</programlisting>
- <para>现在可以重启系统了。 如果一切顺利的话,
- 系统可以正常启动并且 <command>mount</command> 命令显示:</para>
+ <para>现在可以重启系统了。 如果一切顺利的话,
+ 系统可以正常启动并且 <command>mount</command> 命令显示:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/dev/label/rootfs on / (ufs, local)
@@ -668,7 +826,7 @@ ufsid/486b6fc16926168e N/A ad4s1f</screen>
<para>如果使用日志的卷需要在启动的时候被挂载, 还需加载
<filename>geom_journal.ko</filename> 内核模块,
- 将以下着行加入 <filename>/boot/loader.conf</filename>:</para>
+ 将以下这行加入 <filename>/boot/loader.conf</filename>:</para>
<programlisting>geom_journal_load="YES"</programlisting>
@@ -707,11 +865,11 @@ ufsid/486b6fc16926168e N/A ad4s1f</screen>
</note>
<para>出于性能考虑, 可能会希望在其他磁盘上保存日志。 对于这类情形,
- 日志提供者或存储设备, 应在启用日志的设备后给出。 在暨存的文件系统上,
+ 应该在启用日志的设备后面,给出日志提供者或存储设备。 在暨存的文件系统上,
可以用 <command>tunefs</command> 来启用日志; 不过,
在尝试修改文件系统之前, 您应对其进行备份。 多数情况下,
- <command>gjournal</command> 会因为无法建立日志而失败, 在误用
- <command>tunefs</command> 时, 这可能导致失败。</para>
+ 如果无法创建实际的日志, <command>gjournal</command> 就会失败,
+ 并且不会防止由于不当使用 <command>tunefs</command> 而造成的数据丢失。</para>
<para>对于 &os; 系统的启动磁盘使用日志也是可能的。
请参阅 <ulink