Update articles/gjournal-desktop to fix a few minor issues I found
during its translation recently: - Fix capitalization issues in titles according to the Chicago Manual of Style - Update Manolis' e-mail address to his FreeBSD.org one - Correct some misspelled words, like "filesystem" or "soft updates" according to the word list in FDP Primer [1] - Add <replaceable> elements to minor versions in "FreeBSD 7.X" - Replace bogus <filename role="device"> markups with <filename class="devicefile"> elements - Rewrite "NGb" constructs to "N GB" - Rename sysinstall's disk label editor to <application>Disklabel</application> partition editor, in reflect of the corresponding sections of the FreeBSD Handbook [2] - Replace <keycap>up</keycap> and <keycap>down</keycap> markups with a more general form, similar to the Handbook [2] - Mark up user commands with <userinput> inside <screen> elements - Use <filename> and <devicename> where applicable - Fix typos (like "ads1s1d") - Mark up Enter key with <keycap>Enter</keycap> - Mark up Ivan Voras (ivoras@) with his now-official Handbook entity - Mark up usernames with <username> [1] http://www.freebsd.org/doc/en/books/fdp-primer/writing-style-word-list.html [2] http://www.freebsd.org/doc/en/books/handbook/install-steps.html Reviewed by: manolis, keramida Approved by: gabor (mentor)
This commit is contained in:
parent
81fdafe181
commit
6f7df44f49
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=32960
1 changed files with 110 additions and 110 deletions
|
@ -13,19 +13,19 @@
|
|||
|
||||
<article lang="en">
|
||||
<articleinfo>
|
||||
<title>Implementing UFS journaling on a desktop PC</title>
|
||||
<title>Implementing UFS Journaling on a Desktop PC</title>
|
||||
|
||||
<author>
|
||||
<firstname>Manolis</firstname>
|
||||
<surname>Kiagias</surname>
|
||||
<affiliation>
|
||||
<address><email>sonicy@otenet.gr</email></address>
|
||||
<address><email>manolis@FreeBSD.org</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>2008</year>
|
||||
<holder role="mailto:sonicy@otenet.gr">Manolis Kiagias</holder>
|
||||
<holder role="mailto:manolis@FreeBSD.org">Manolis Kiagias</holder>
|
||||
</copyright>
|
||||
|
||||
<releaseinfo>$FreeBSD$</releaseinfo>
|
||||
|
@ -36,16 +36,16 @@
|
|||
</legalnotice>
|
||||
|
||||
<abstract>
|
||||
<para>A journaling filesystem uses a log to record all transactions
|
||||
that take place in the filesystem, and preserves its integrity in the
|
||||
<para>A journaling file system uses a log to record all transactions
|
||||
that take place in the file system, and preserves its integrity in the
|
||||
event of a system crash or power failure. Although it is still
|
||||
possible to lose unsaved changes to files, journaling almost
|
||||
completely eliminates the possibility of filesystem corruption caused
|
||||
completely eliminates the possibility of file system corruption caused
|
||||
by an unclean shutdown. It also shortens to a minimum the time
|
||||
required for after-failure filesystem checking. Although the UFS
|
||||
filesystem employed by &os; does not implement journaling itself,
|
||||
the new journal class of the GEOM framework in &os; 7.X can be
|
||||
used to provide filesystem independent journaling. This article
|
||||
required for after-failure file system checking. Although the UFS
|
||||
file system employed by &os; does not implement journaling itself,
|
||||
the new journal class of the GEOM framework in &os; 7.<replaceable>X</replaceable> can be
|
||||
used to provide file system independent journaling. This article
|
||||
explains how to implement UFS journaling on a typical desktop PC
|
||||
scenario.</para>
|
||||
</abstract>
|
||||
|
@ -57,15 +57,15 @@
|
|||
<para>While professional servers are usually well protected from
|
||||
unforeseen shutdowns, the typical desktop is at the mercy of power
|
||||
failures, accidental resets, and other user related incidents that can
|
||||
lead to unclean shutdowns. Soft updates usually protect the filesystem
|
||||
lead to unclean shutdowns. Soft Updates usually protect the file system
|
||||
efficiently in such cases, although most of the times a lengthy
|
||||
background check is required. On rare occasions, filesystem corruption
|
||||
background check is required. On rare occasions, file system corruption
|
||||
reaches a point where user intervention is required and data may be
|
||||
lost.</para>
|
||||
|
||||
<para>The new journaling capability provided by GEOM can greatly assist
|
||||
in such scenarios, by virtually eliminating the time required for
|
||||
filesystem checking, and ensuring that the filesystem is quickly
|
||||
file system checking, and ensuring that the file system is quickly
|
||||
restored to a consistent state.</para>
|
||||
|
||||
<para>This article describes a procedure for implementing UFS journaling
|
||||
|
@ -88,7 +88,7 @@
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>How to convert your existing filesystems to utilize journaling,
|
||||
<para>How to convert your existing file systems to utilize journaling,
|
||||
and what options to use in <filename>/etc/fstab</filename> to mount
|
||||
them.</para>
|
||||
</listitem>
|
||||
|
@ -128,59 +128,59 @@
|
|||
</sect1>
|
||||
|
||||
<sect1 id="understanding-journaling">
|
||||
<title>Understanding journaling in &os;</title>
|
||||
<title>Understanding Journaling in &os;</title>
|
||||
|
||||
<para>The journaling provided by GEOM in &os; 7.X is not filesystem
|
||||
specific (unlike for example the ext3 filesystem in &linux;) but is
|
||||
<para>The journaling provided by GEOM in &os; 7.<replaceable>X</replaceable> is not file system
|
||||
specific (unlike for example the ext3 file system in &linux;) but is
|
||||
functioning at the block level. Though this means it can be applied
|
||||
to different filesystems, for &os; 7.0-RELEASE, it can only be used
|
||||
to different file systems, for &os; 7.0-RELEASE, it can only be used
|
||||
on UFS2.</para>
|
||||
|
||||
<para>This functionality is provided by loading the
|
||||
<filename>geom_journal.ko</filename> module into the kernel (or
|
||||
building it into a custom kernel) and using the
|
||||
<command>gjournal</command> command to configure the filesystems.
|
||||
In general, you would like to journal large filesystems, like
|
||||
<command>gjournal</command> command to configure the file systems.
|
||||
In general, you would like to journal large file systems, like
|
||||
<filename>/usr</filename>. You will need however (see the following
|
||||
section) to reserve some free disk space.</para>
|
||||
|
||||
<para>When a filesystem is journaled, some disk space is needed to keep
|
||||
<para>When a file system is journaled, some disk space is needed to keep
|
||||
the journal itself. The disk space that holds the actual data is
|
||||
referred to as the <emphasis>data provider</emphasis>, while the one
|
||||
that holds the journal is referred to as the
|
||||
<emphasis>journal provider</emphasis>. The data and journal providers
|
||||
need to be on different partitions when journaling an existing
|
||||
(non empty) partition. When journaling a new partition, you have the
|
||||
(non-empty) partition. When journaling a new partition, you have the
|
||||
option to use a single provider for both data and journal. In any case,
|
||||
the <command>gjournal</command> command combines both providers to
|
||||
create the final journaled filesystem. For example:</para>
|
||||
create the final journaled file system. For example:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>You wish to journal your <filename>/usr</filename> filesystem,
|
||||
stored in <filename role="device">/dev/ad0s1f</filename> (which
|
||||
<para>You wish to journal your <filename>/usr</filename> file system,
|
||||
stored in <filename class="devicefile">/dev/ad0s1f</filename> (which
|
||||
already contains data).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>You reserved some free disk space in a partition in
|
||||
<filename role="device">/dev/ad0s1g</filename>.</para>
|
||||
<filename class="devicefile">/dev/ad0s1g</filename>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Using <command>gjournal</command>, a new <filename
|
||||
role="device">/dev/ad0s1f.journal</filename> device is created
|
||||
where <filename role="device">/dev/ad0s1f</filename> is the data
|
||||
provider, and <filename role="device">/dev/ad0s1g</filename> is
|
||||
class="devicefile">/dev/ad0s1f.journal</filename> device is created
|
||||
where <filename class="devicefile">/dev/ad0s1f</filename> is the data
|
||||
provider, and <filename class="devicefile">/dev/ad0s1g</filename> is
|
||||
the journal provider. This new device is then used for all
|
||||
subsequent file operations.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>The amount of disk space you need to reserve for the journal
|
||||
provider depends on the usage load of the filesystem and not on the
|
||||
provider depends on the usage load of the file system and not on the
|
||||
size of the data provider. For example on a typical office desktop,
|
||||
a 1Gb journal provider for the <filename>/usr</filename> filesystem
|
||||
a 1 GB journal provider for the <filename>/usr</filename> file system
|
||||
will suffice, while a machine that deals with heavy disk I/O (i.e.
|
||||
video editing) may need more. A kernel panic will occur if the
|
||||
journal space is exhausted before it has a chance to be
|
||||
|
@ -191,10 +191,10 @@
|
|||
</sect1>
|
||||
|
||||
<sect1 id="reserve-space">
|
||||
<title>Steps during the installation of &os;</title>
|
||||
<title>Steps During the Installation of &os;</title>
|
||||
|
||||
<sect2>
|
||||
<title>Reserving space for journaling</title>
|
||||
<title>Reserving Space for Journaling</title>
|
||||
|
||||
<para>A typical desktop machine usually has one hard disk that stores
|
||||
both the OS and user data. Arguably, the default partitioning scheme
|
||||
|
@ -202,17 +202,17 @@
|
|||
suitable: A desktop machine does not need a large
|
||||
<filename>/var</filename> partition, while <filename>/usr</filename>
|
||||
is allocated the bulk of the disk space, since user data and a lot of
|
||||
packages are installed into its sub-directories.</para>
|
||||
packages are installed into its subdirectories.</para>
|
||||
|
||||
<para>The default partitioning (the one obtained by pressing
|
||||
<keycap>A</keycap> at the disklabel editor) does not leave any
|
||||
<keycap>A</keycap> at the &os; partition editor, called <application>Disklabel</application>) does not leave any
|
||||
unallocated space. Each partition that will be journaled, requires
|
||||
another partition for the journal. Since the <filename>/usr</filename>
|
||||
partition is the largest, it makes sense to shrink this partition
|
||||
slightly, to obtain the space required for journaling.</para>
|
||||
|
||||
<para>In our example, an 80Gb disk is used. The following screenshot
|
||||
shows the default partitions created by the disklabel editor during
|
||||
<para>In our example, an 80 GB disk is used. The following screenshot
|
||||
shows the default partitions created by <application>Disklabel</application> during
|
||||
installation:</para>
|
||||
|
||||
<mediaobject>
|
||||
|
@ -222,25 +222,25 @@
|
|||
</mediaobject>
|
||||
|
||||
<para>If this is more or less what you need, it is very easy to adjust
|
||||
for journaling. Simply use the <keycap>up</keycap> and
|
||||
<keycap>down</keycap> arrow keys to move the highlight to the
|
||||
for journaling. Simply use the
|
||||
arrow keys to move the highlight to the
|
||||
<filename>/usr</filename> partition and press <keycap>D</keycap> to
|
||||
delete it.</para>
|
||||
|
||||
<para>Now, move the highlight to the disk name at the top of the screen
|
||||
and press <keycap>C</keycap> to create a new partition for
|
||||
<filename>/usr</filename>. This new partition should be smaller by
|
||||
1Gb (if you intend to journal <filename>/usr</filename> only), or
|
||||
2Gb (if you intend to journal both <filename>/usr</filename> and
|
||||
1 GB (if you intend to journal <filename>/usr</filename> only), or
|
||||
2 GB (if you intend to journal both <filename>/usr</filename> and
|
||||
<filename>/var</filename>). From the pop-up that appears, opt to
|
||||
create a filesystem, and type <filename>/usr</filename> as the mount
|
||||
create a file system, and type <filename>/usr</filename> as the mount
|
||||
point.</para>
|
||||
|
||||
<note>
|
||||
<para>Should you journal the <filename>/var</filename> partition?
|
||||
Normally, journaling makes sense on quite large partitions. You may
|
||||
decide not to journal <filename>/var</filename>, although doing so
|
||||
on a typical desktop will cause no harm. If the filesystem is
|
||||
on a typical desktop will cause no harm. If the file system is
|
||||
lightly used (quite probable for a desktop) you may wish to
|
||||
allocate less disk space for its journal.</para>
|
||||
|
||||
|
@ -266,9 +266,9 @@
|
|||
<filename>/etc/fstab</filename> will have to be edited, and the extra
|
||||
swap space entries removed.</para>
|
||||
|
||||
<para>To create the swap, again use the <keycap>up</keycap> and
|
||||
<keycap>down</keycap> arrow keys to move the highlight to the top of
|
||||
the disklabel editor screen, so that the disk name itself is
|
||||
<para>To create the swap, again use the
|
||||
arrow keys to move the highlight to the top of
|
||||
<application>Disklabel</application> screen, so that the disk name itself is
|
||||
highlighted. Then press <keycap>N</keycap>, enter the desired size
|
||||
(<replaceable>1024M</replaceable>), and select
|
||||
<quote>swap space</quote> from the pop-up menu that appears. Repeat
|
||||
|
@ -290,12 +290,12 @@
|
|||
following table shows our notes for the sample configuration:</para>
|
||||
|
||||
<table pgwide="1">
|
||||
<title>Partitions and journals</title>
|
||||
<title>Partitions and Journals</title>
|
||||
<tgroup cols="3">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Partition</entry>
|
||||
<entry>Mount point</entry>
|
||||
<entry>Mount Point</entry>
|
||||
<entry>Journal</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
@ -316,7 +316,7 @@
|
|||
</table>
|
||||
|
||||
<para>Continue the installation as you would normally do. We would
|
||||
however suggest you postpone installation of add-on software
|
||||
however suggest you postpone installation of third party software
|
||||
(packages) until you have completely setup journaling.</para>
|
||||
</sect2>
|
||||
|
||||
|
@ -335,42 +335,42 @@
|
|||
</sect2>
|
||||
|
||||
<sect1 id="configure-journal">
|
||||
<title>Setting up journaling</title>
|
||||
<title>Setting Up Journaling</title>
|
||||
|
||||
<sect2 id="running-gjournal">
|
||||
<title>Executing gjournal</title>
|
||||
<title>Executing <command>gjournal</command></title>
|
||||
|
||||
<para>Having prepared all the required partitions, it is quite easy
|
||||
to configure journaling. We will need to switch to single user
|
||||
mode, so login as root and type:</para>
|
||||
mode, so login as <username>root</username> and type:</para>
|
||||
|
||||
<screen>&prompt.root; shutdown now</screen>
|
||||
<screen>&prompt.root; <userinput>shutdown now</userinput></screen>
|
||||
|
||||
<para>Press enter to get the default shell. We will need to unmount
|
||||
<para>Press <keycap>Enter</keycap> to get the default shell. We will need to unmount
|
||||
the partitions that will be journaled, in our example
|
||||
<filename>/usr </filename> and <filename>/var</filename>:</para>
|
||||
<filename>/usr</filename> and <filename>/var</filename>:</para>
|
||||
|
||||
<screen>&prompt.root; umount /usr /var</screen>
|
||||
<screen>&prompt.root; <userinput>umount /usr /var</userinput></screen>
|
||||
|
||||
<para>Load the module required for journaling:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal load</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal load</userinput></screen>
|
||||
|
||||
<para>Now, use your notes to determine which partition will be used
|
||||
for each journal. In our example, <filename>/usr</filename> is
|
||||
<filename role="device">ad0s1f</filename> and its journal will be
|
||||
<filename role="device">ad0s1g</filename>, while
|
||||
<filename class="devicefile">ad0s1f</filename> and its journal will be
|
||||
<filename class="devicefile">ad0s1g</filename>, while
|
||||
<filename>/var</filename> is <filename
|
||||
role="device">ad0s1d</filename> and will
|
||||
be journaled to <filename role="device">ad0s1h</filename>.
|
||||
class="devicefile">ad0s1d</filename> and will
|
||||
be journaled to <filename class="devicefile">ad0s1h</filename>.
|
||||
The following commands are required:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal label ad0s1f ad0s1g
|
||||
<screen>&prompt.root; <userinput>gjournal label ad0s1f ad0s1g</userinput>
|
||||
|
||||
GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
|
||||
GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
|
||||
|
||||
&prompt.root; gjournal label ad0s1d ad0s1h
|
||||
&prompt.root; <userinput>gjournal label ad0s1d ad0s1h</userinput>
|
||||
|
||||
GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.
|
||||
GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.</screen>
|
||||
|
@ -381,34 +381,34 @@ GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.</screen>
|
|||
to run the command using the <option>-f</option> flag to force an
|
||||
overwrite, i.e.:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal label -f ad0s1d ad0s1h</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal label -f ad0s1d ad0s1h</userinput></screen>
|
||||
|
||||
<para>Since this is a new installation, it is highly unlikely that
|
||||
anything will be actually overwritten.</para></note>
|
||||
|
||||
<para>At this point, two new devices are created, namely
|
||||
<filename role="device">ad0s1d.journal</filename> and
|
||||
<filename role="device">ad0s1f.journal</filename>. These represent
|
||||
<filename class="devicefile">ad0s1d.journal</filename> and
|
||||
<filename class="devicefile">ad0s1f.journal</filename>. These represent
|
||||
the <filename>/var</filename> and <filename>/usr</filename>
|
||||
partitions we have to mount. Before mounting, we must however set
|
||||
the journal flag on them and clear the soft updates flag:</para>
|
||||
the journal flag on them and clear the Soft Updates flag:</para>
|
||||
|
||||
<screen>&prompt.root; tunefs -J enable -n disable ad0s1d.journal
|
||||
<screen>&prompt.root; <userinput>tunefs -J enable -n disable ad0s1d.journal</userinput>
|
||||
|
||||
tunefs: gjournal set
|
||||
tunefs: soft updates cleared
|
||||
|
||||
&prompt.root; tunefs -J enable -n disable ad0s1f.journal
|
||||
&prompt.root; <userinput>tunefs -J enable -n disable ad0s1f.journal</userinput>
|
||||
|
||||
tunefs: gjournal set
|
||||
tunefs: soft updates cleared</screen>
|
||||
|
||||
<para>Now, mount the new devices manually at their respective places
|
||||
(note that we can now use the <quote>async</quote> mount
|
||||
(note that we can now use the <option>async</option> mount
|
||||
option):</para>
|
||||
|
||||
<screen>&prompt.root; mount -o async /dev/ad0s1d.journal /var
|
||||
&prompt.root; mount -o async /dev/ad0s1f.journal /usr</screen>
|
||||
<screen>&prompt.root; <userinput>mount -o async /dev/ad0s1d.journal /var</userinput>
|
||||
&prompt.root; <userinput>mount -o async /dev/ad0s1f.journal /usr</userinput></screen>
|
||||
|
||||
<para>Edit <filename>/etc/fstab</filename> and update the entries for
|
||||
<filename>/usr</filename> and <filename>/var</filename>:</para>
|
||||
|
@ -428,7 +428,7 @@ tunefs: soft updates cleared</screen>
|
|||
<programlisting>geom_journal_load="YES"</programlisting>
|
||||
|
||||
<para>Congratulations! Your system is now set for journaling. You can
|
||||
either type <quote>exit</quote> to return to multi-user mode, or
|
||||
either type <userinput>exit</userinput> to return to multi-user mode, or
|
||||
reboot to test your configuration (recommended). During the boot you
|
||||
will see messages like the following:</para>
|
||||
|
||||
|
@ -446,42 +446,42 @@ GEOM_JOURNAL: Journal ad0s1f clean.</screen>
|
|||
<screen>GEOM_JOURNAL: Journal ad0s1d consistent.</screen>
|
||||
|
||||
<para>This usually means that &man.gjournal.8; used the information in
|
||||
the journal provider to return the filesystem to a consistent
|
||||
the journal provider to return the file system to a consistent
|
||||
state.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="gjournal-new">
|
||||
<title>Journaling newly created partitions</title>
|
||||
<title>Journaling Newly Created Partitions</title>
|
||||
|
||||
<para>While the above procedure is necessary for journaling partitions
|
||||
that already contain data, journaling an empty partition is somewhat
|
||||
easier, since both the data and the journal provider can be stored
|
||||
in the same partition. For example, assume a new disk was installed,
|
||||
and a new partition <filename role="device">/dev/ads1s1d</filename>
|
||||
and a new partition <filename class="devicefile">/dev/ad1s1d</filename>
|
||||
was created. Creating the journal would be as simple as:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal label ad1s1d</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal label ad1s1d</userinput></screen>
|
||||
|
||||
<para>The journal size will be 1GB by default. You may adjust it by
|
||||
<para>The journal size will be 1 GB by default. You may adjust it by
|
||||
using the <option>-s</option> option. The value can be given in
|
||||
bytes, or appended by <literal>K</literal>, <literal>M</literal> or
|
||||
<literal>G</literal> to denote Kilobytes, Megabytes or Gigabytes
|
||||
respectively. Note that <command>gjournal</command> will not allow
|
||||
you to create unsuitably small journal sizes.</para>
|
||||
|
||||
<para>For example, to create a 2GB journal, you could use the following
|
||||
<para>For example, to create a 2 GB journal, you could use the following
|
||||
command:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal label -s 2G ad1s1d</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal label -s 2G ad1s1d</userinput></screen>
|
||||
|
||||
<para>You can then create a filesystem on your new partition, and
|
||||
<para>You can then create a file system on your new partition, and
|
||||
enable journaling using the <option>-J</option> option:</para>
|
||||
|
||||
<screen>&prompt.root; newfs -J /dev/ad1s1d.journal</screen>
|
||||
<screen>&prompt.root; <userinput>newfs -J /dev/ad1s1d.journal</userinput></screen>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="configure-kernel">
|
||||
<title>Building journaling into your custom kernel</title>
|
||||
<title>Building Journaling into Your Custom Kernel</title>
|
||||
|
||||
<para>If you do not wish to load <literal>geom_journal</literal> as a
|
||||
module, you can build its functions right into your kernel. Edit your
|
||||
|
@ -503,7 +503,7 @@ options GEOM_JOURNAL # You will have to add this one</programlisting>
|
|||
</sect1>
|
||||
|
||||
<sect1 id="troubleshooting-gjournal">
|
||||
<title>Troubleshooting journaling</title>
|
||||
<title>Troubleshooting Journaling</title>
|
||||
|
||||
<para>The following section covers frequently asked questions regarding
|
||||
problems related to journaling.</para>
|
||||
|
@ -534,17 +534,17 @@ options GEOM_JOURNAL # You will have to add this one</programlisting>
|
|||
<para>You either forgot (or misspelled) the entry in
|
||||
<filename>/boot/loader.conf</filename>, or there are errors in
|
||||
your <filename>/etc/fstab</filename> file. These are usually easy
|
||||
to fix. Press enter to get to the default single user shell. Then
|
||||
to fix. Press <keycap>Enter</keycap> to get to the default single user shell. Then
|
||||
locate the root of the problem:</para>
|
||||
|
||||
<screen>&prompt.root; cat /boot/loader.conf</screen>
|
||||
<screen>&prompt.root; <userinput>cat /boot/loader.conf</userinput></screen>
|
||||
|
||||
<para>If the <literal>geom_journal_load</literal> entry is missing
|
||||
or misspelled, the journaled devices are never created. Load the
|
||||
module manually, mount all partitions, and continue with
|
||||
multi-user boot:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal load
|
||||
<screen>&prompt.root; <userinput>gjournal load</userinput>
|
||||
|
||||
GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
|
||||
GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.
|
||||
|
@ -553,9 +553,9 @@ GEOM_JOURNAL: Journal ad0s1d clean.
|
|||
GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
|
||||
GEOM_JOURNAL: Journal ad0s1f clean.
|
||||
|
||||
&prompt.root; mount -a
|
||||
&prompt.root; exit
|
||||
(boot continues)</screen>
|
||||
&prompt.root; <userinput>mount -a</userinput>
|
||||
&prompt.root; <userinput>exit</userinput>
|
||||
<emphasis>(boot continues)</emphasis></screen>
|
||||
|
||||
<para>If, on the other hand, this entry is correct, have a look at
|
||||
<filename>/etc/fstab</filename>. You will probably find a
|
||||
|
@ -566,8 +566,8 @@ GEOM_JOURNAL: Journal ad0s1f clean.
|
|||
|
||||
<qandaentry>
|
||||
<question id="remove-journaling">
|
||||
<para>Can I remove journaling and return to my standard filesystem
|
||||
with soft updates?</para>
|
||||
<para>Can I remove journaling and return to my standard file system
|
||||
with Soft Updates?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
|
@ -575,47 +575,47 @@ GEOM_JOURNAL: Journal ad0s1f clean.
|
|||
changes. The partitions you created for the journal providers
|
||||
can then be used for other purposes, if you so wish.<para>
|
||||
|
||||
<para>Login as root and switch to single user mode:</para>
|
||||
<para>Login as <username>root</username> and switch to single user mode:</para>
|
||||
|
||||
<screen>&prompt.root; shutdown now</screen>
|
||||
<screen>&prompt.root; <userinput>shutdown now</userinput></screen>
|
||||
|
||||
<para>Synchronize the journals:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal sync</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal sync</userinput></screen>
|
||||
|
||||
<para>Unmount the journaled partitions:</para>
|
||||
|
||||
<screen>&prompt.root; umount /usr /var</screen>
|
||||
<screen>&prompt.root; <userinput>umount /usr /var</userinput></screen>
|
||||
|
||||
<para>Stop the journaling providers:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal stop ad0s1d.journal
|
||||
&prompt.root; gjournal stop ad0s1f.journal</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal stop ad0s1d.journal</userinput>
|
||||
&prompt.root; <userinput>gjournal stop ad0s1f.journal</userinput></screen>
|
||||
|
||||
<para>Clear journaling metadata from all the devices used:</para>
|
||||
|
||||
<screen>&prompt.root; gjournal clear ad0s1d
|
||||
&prompt.root; gjournal clear ad0s1f
|
||||
&prompt.root; gjournal clear ad0s1g
|
||||
&prompt.root; gjournal clear ad0s1h</screen>
|
||||
<screen>&prompt.root; <userinput>gjournal clear ad0s1d</userinput>
|
||||
&prompt.root; <userinput>gjournal clear ad0s1f</userinput>
|
||||
&prompt.root; <userinput>gjournal clear ad0s1g</userinput>
|
||||
&prompt.root; <userinput>gjournal clear ad0s1h</userinput></screen>
|
||||
|
||||
<para>Clear the filesystem journaling flag, and restore the soft
|
||||
updates flag:</para>
|
||||
<para>Clear the file system journaling flag, and restore the Soft
|
||||
Updates flag:</para>
|
||||
|
||||
<screen>&prompt.root; tunefs -J disable -n enable ad0s1d
|
||||
<screen>&prompt.root; <userinput>tunefs -J disable -n enable ad0s1d</userinput>
|
||||
|
||||
tunefs: gjournal cleared
|
||||
tunefs: soft updates set
|
||||
|
||||
&prompt.root; tunefs-J disable -n enable ad0s1f
|
||||
&prompt.root; <userinput>tunefs -J disable -n enable ad0s1f</userinput>
|
||||
|
||||
tunefs: gjournal cleared
|
||||
tunefs: soft updates set</screen>
|
||||
|
||||
<para>Remount the old devices by hand:</para>
|
||||
|
||||
<screen>&prompt.root; mount -o rw /dev/ad0s1d /var
|
||||
&prompt.root; mount -o rw /dev/ad0s1f /usr</screen>
|
||||
<screen>&prompt.root; <userinput>mount -o rw /dev/ad0s1d /var</userinput>
|
||||
&prompt.root; <userinput>mount -o rw /dev/ad0s1f /usr</userinput></screen>
|
||||
|
||||
<para>Edit <filename>/etc/fstab</filename> and restore it to its
|
||||
original state:</para>
|
||||
|
@ -633,7 +633,7 @@ tunefs: soft updates set</screen>
|
|||
</sect1>
|
||||
|
||||
<sect1 id="further-reading">
|
||||
<title>Further reading</title>
|
||||
<title>Further Reading</title>
|
||||
|
||||
<para>Journaling is a fairly new feature of &os;, and as such, it is
|
||||
not very well documented yet. You may however find the following
|
||||
|
@ -652,7 +652,7 @@ tunefs: soft updates set</screen>
|
|||
|
||||
<listitem>
|
||||
<para><ulink url="http://lists.freebsd.org/pipermail/freebsd-questions/2008-April/173501.html">This post</ulink>
|
||||
in &a.questions.name; by Ivan Voras.</para>
|
||||
in &a.questions.name; by &a.ivoras;.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
|
Loading…
Reference in a new issue