aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books/handbook/geom
diff options
context:
space:
mode:
authorFukang Chen <loader@FreeBSD.org>2008-12-31 16:34:28 +0000
committerFukang Chen <loader@FreeBSD.org>2008-12-31 16:34:28 +0000
commit42f55cdc02665c69fc8814e0fb2281a73d4d45c0 (patch)
tree2e951bb93716ba4eb11c6ea005e8000401e17851 /zh_CN.GB2312/books/handbook/geom
parent21b4554a6abdb5d0cb7c5b9494d56912d62c846a (diff)
Notes
Diffstat (limited to 'zh_CN.GB2312/books/handbook/geom')
-rw-r--r--zh_CN.GB2312/books/handbook/geom/chapter.sgml164
1 files changed, 126 insertions, 38 deletions
diff --git a/zh_CN.GB2312/books/handbook/geom/chapter.sgml b/zh_CN.GB2312/books/handbook/geom/chapter.sgml
index 798098198c..deeb48f497 100644
--- a/zh_CN.GB2312/books/handbook/geom/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/geom/chapter.sgml
@@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
- Original Revision: 1.43
+ Original Revision: 1.47
$FreeBSD$
-->
@@ -138,7 +138,7 @@
<procedure>
<title>在未格式化的 ATA 磁盘上建立条带</title>
- <step><para>加载 <filename>geom_stripe</filename>
+ <step><para>加载 <filename>geom_stripe.ko</filename>
模块:</para>
<screen>&prompt.root; <userinput>kldload geom_stripe</userinput></screen>
@@ -157,13 +157,11 @@
<filename>/dev/ad2</filename> 和
<filename>/dev/ad3</filename> 做成一个条带设备:</para>
- <screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput></screen>
+ <screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput>
+Metadata value stored on /dev/ad2.
+Metadata value stored on /dev/ad3.
+Done.</screen>
-<!--
- <para>A message should be returned explaining that meta data has
- been stored on the devices.
-XXX: What message? Put it inside the screen output above.
--->
</step>
<step><para>接着需要写标准的 label, 也就是通常所说的分区表到新卷上,
@@ -194,12 +192,15 @@ XXX: What message? Put it inside the screen output above.
<para>要在启动过程中自动挂接这个条带上的文件系统,
需要把关于卷的信息放到
- <filename>/etc/fstab</filename> 文件中:</para>
+ <filename>/etc/fstab</filename> 文件中。为达到此目的,
+ 需要创建一个叫 <filename class="directory">stripe</filename>
+ 永久的挂载点:</para>
- <screen>&prompt.root; <userinput>echo "/dev/stripe/st0a /mnt ufs rw 2 2" \</userinput>
+ <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</filename> 模块也必须通过在
+ <para>此外, <filename>geom_stripe.ko</filename> 模块也必须通过在
<filename>/boot/loader.conf</filename> 中增加下述设置,
以便在系统初始化过程中自动加载。</para>
@@ -247,6 +248,12 @@ XXX: What message? Put it inside the screen output above.
也就是用下面的命令来创建
<filename class="devicefile">/dev/mirror/gm</filename> 设备:</para>
+ <warning>
+ <para>如果有数据被存放在磁盘最后的扇区,
+ 并在启动设备上创建镜像的话可能导致数据丢失。
+ 在新安装 &os; 之后立即创建镜像可以减低此风险。</para>
+ </warning>
+
<screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
<para>系统应给出下面的回应:</para>
@@ -272,17 +279,21 @@ Done.</screen>
<para>编辑 <filename>/etc/fstab</filename> 文件,
将其中先前的 <devicename>da0</devicename> 改为新的镜像设备
- <devicename>gm0</devicename>。 以 <username>root</username> 用户身份编辑
- <filename>/etc/fstab</filename>:</para>
+ <devicename>gm0</devicename>。</para>
+
+ <note>
+ <para>如果 &man.vi.1; 是你喜欢的编辑器,
+ 以下则是完成此项任务的一个简便方法:</para>
- <screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
+ <screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
- <para>在 &man.vi.1; 中备份现有的
- <filename>fstab</filename> 内容, 具体操作是
- <userinput>:w /etc/fstab.bak</userinput>。 接着,
- 把所有旧的 <devicename>da0</devicename> 替换成 <devicename>gm0</devicename>,
- 也就是输入命令
- <userinput>:%s/da/mirror\/gm/g</userinput>。<para>
+ <para>在 &man.vi.1; 中备份现有的
+ <filename>fstab</filename> 内容, 具体操作是
+ <userinput>:w /etc/fstab.bak</userinput>。 接着,
+ 把所有旧的 <devicename>da0</devicename> 替换成 <devicename>gm0</devicename>,
+ 也就是输入命令
+ <userinput>:%s/da/mirror\/gm/g</userinput>。</para>
+ </note>
<para>修改完后的 <filename>fstab</filename> 文件应该是下面的样子。
磁盘驱动器是 <acronym>SCSI</acronym> 或 <acronym>ATA</acronym>
@@ -290,10 +301,12 @@ Done.</screen>
<devicename>gm</devicename>。</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
-/dev/mirror/gm0s2b none swap sw 0 0
-/dev/mirror/gm0s2a / ufs rw 1 1
-#/dev/mirror/gm0s2d /store ufs rw 2 2
-/dev/mirror/gm0s2e /usr ufs rw 2 2
+/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>
@@ -354,7 +367,8 @@ mountroot></programlisting>
OK? <userinput>boot</userinput></screen>
<para>如果这样做能解决问题, 则说明由于某种原因模块没有被正确加载。
- 可以通过在内核配置文件中加入:</para>
+ 检查 <filename>/boot/loader.conf</filename> 中相关条目是否正确。
+ 如果问题仍然存在,可以在内核配置文件中加入:</para>
<programlisting>options GEOM_MIRROR</programlisting>
@@ -475,25 +489,28 @@ ggate0
<title>标签类型和使用示范</title>
<para>有两种类型的标签, 一种是普通标签, 另一种是文件系统标签。
- 两者的差异体现在是否能够自动检测, 以及是否在重启后保持。 这些标签会放到
- <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>
- 目录中。</para>
+ 目录中。永久性的标签还可以使用 <command>glabel label</command>
+ 创建。它们不再是文件系统特定的,而是会在
+ <filename class="directory">/dev/label</filename>
+ 目录中被创建。</para>
- <para>普通标签在系统下次重启时会消失, 这些标签会创建到
+ <para>暂时性的标签在系统下次重启时会消失, 这些标签会创建到
<filename class="directory">/dev/label</filename> 目录中,
- 很适合测试之用。</para>
+ 很适合测试之用。可以使用 <command>glabel create</command>
+ 创建暂时性的标签。请参阅 &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)? -->
- <para>永久性标签可以使用
- <command>tunefs</command> 或 <command>newfs</command>
- 工具来创建。 要为
- <acronym>UFS</acronym>2 文件系统创建标签, 而不破坏其上的数据,
- 可以使用下面的命令:</para>
+ <para>要为一个 <acronym>UFS</acronym>2 文件系统创建永久性标签,
+ 而不破坏其上的数据,可以使用下面的命令:</para>
<screen>&prompt.root; <userinput>tunefs -L <replaceable>home</replaceable> <replaceable>/dev/da3</replaceable></userinput></screen>
@@ -528,6 +545,60 @@ ggate0
<para>下列命令可以清除标签:</para>
<screen>&prompt.root; <userinput>glabel destroy home</userinput></screen>
+
+ <para>以下的例子展示了如何为一个启动磁盘打上标签。</para>
+
+ <example>
+ <title>为启动磁盘打上标签</title>
+
+ <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>
+
+ <screen>&prompt.root; <userinput>glabel label rootfs /dev/ad0s1a</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
+&prompt.root; <userinput>glabel label var /dev/ad0s1d</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
+&prompt.root; <userinput>glabel label usr /dev/ad0s1f</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
+&prompt.root; <userinput>glabel label tmp /dev/ad0s1e</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
+&prompt.root; <userinput>glabel label swap /dev/ad0s1b</userinput>
+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>
+
+ <programlisting># Device Mountpoint FStype Options Dump Pass#
+/dev/label/swap none swap sw 0 0
+/dev/label/rootfs / ufs rw 1 1
+/dev/label/tmp /tmp ufs rw 2 2
+/dev/label/usr /usr ufs rw 2 2
+/dev/label/var /var ufs rw 2 2</programlisting>
+
+ <para>现在可以重启系统了。 如果一切顺利的话,
+ 系统可以正常启动并且 <command>mount</command> 命令显示:</para>
+
+ <screen>&prompt.root; <userinput>mount</userinput>
+/dev/label/rootfs on / (ufs, local)
+devfs on /dev (devfs, local)
+/dev/label/tmp on /tmp (ufs, local, soft-updates)
+/dev/label/usr on /usr (ufs, local, soft-updates)
+/dev/label/var on /var (ufs, local, soft-updates)</screen>
+ </example>
</sect2>
</sect1>
@@ -551,8 +622,9 @@ ggate0
以避免文件系统出现不一致的问题。</para>
<para>这种方法是另一种阻止文件系统丢失数据并发生不一致的方法。 与 Soft Updates
- 追踪并确保元数据更新顺序这种方法不同, 它会实际地将日志保存到磁盘最后的扇区,
- 或另外一块磁盘上。</para>
+ 追踪并确保元数据更新顺序这种方法不同,
+ 它会实际地将日志保存到指定为此项任务保留的磁盘空间上,
+ 在某些情况下可全部存放到另外一块磁盘上。</para>
<para>与其他文件系统的日志实现不同,
<command>gjournal</command> 采用的是基于块, 而不是作为文件系统的一部分的方式 -
@@ -564,6 +636,17 @@ ggate0
<programlisting>options UFS_GJOURNAL</programlisting>
+ <para>如果使用日志的卷需要在启动的时候被挂载, 还需加载
+ <filename>geom_journal.ko</filename> 内核模块,
+ 将以下着行加入 <filename>/boot/loader.conf</filename>:</para>
+
+ <programlisting>geom_journal_load="YES"</programlisting>
+
+ <para>这个功能也可被编译进一个定制的内核,
+ 需在内核配置文件中加入以下这行:</para>
+
+ <programlisting>options GEOM_JOURNAL</programlisting>
+
<para>现在, 可以为空闲的文件系统创建日志了。 对于新增的 <acronym>SCSI</acronym> 磁盘
<devicename>da4</devicename>, 具体的操作步骤为:</para>
@@ -601,6 +684,11 @@ ggate0
在尝试修改文件系统之前, 您应对其进行备份。 多数情况下,
<command>gjournal</command> 会因为无法建立日志而失败, 在误用
<command>tunefs</command> 时, 这可能导致失败。</para>
+
+ <para>对于 &os; 系统的启动磁盘使用日志也是可能的。
+ 请参阅 <ulink
+ url="&url.articles.gjournal-desktop;">Implementing UFS Journaling on
+ a Desktop PC</ulink> 以获得更多详细信息。</para>
</sect1>
</chapter>