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">
|
<article lang="en">
|
||||||
<articleinfo>
|
<articleinfo>
|
||||||
<title>Implementing UFS journaling on a desktop PC</title>
|
<title>Implementing UFS Journaling on a Desktop PC</title>
|
||||||
|
|
||||||
<author>
|
<author>
|
||||||
<firstname>Manolis</firstname>
|
<firstname>Manolis</firstname>
|
||||||
<surname>Kiagias</surname>
|
<surname>Kiagias</surname>
|
||||||
<affiliation>
|
<affiliation>
|
||||||
<address><email>sonicy@otenet.gr</email></address>
|
<address><email>manolis@FreeBSD.org</email></address>
|
||||||
</affiliation>
|
</affiliation>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2008</year>
|
<year>2008</year>
|
||||||
<holder role="mailto:sonicy@otenet.gr">Manolis Kiagias</holder>
|
<holder role="mailto:manolis@FreeBSD.org">Manolis Kiagias</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
<releaseinfo>$FreeBSD$</releaseinfo>
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
||||||
|
@ -36,16 +36,16 @@
|
||||||
</legalnotice>
|
</legalnotice>
|
||||||
|
|
||||||
<abstract>
|
<abstract>
|
||||||
<para>A journaling filesystem uses a log to record all transactions
|
<para>A journaling file system uses a log to record all transactions
|
||||||
that take place in the filesystem, and preserves its integrity in the
|
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
|
event of a system crash or power failure. Although it is still
|
||||||
possible to lose unsaved changes to files, journaling almost
|
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
|
by an unclean shutdown. It also shortens to a minimum the time
|
||||||
required for after-failure filesystem checking. Although the UFS
|
required for after-failure file system checking. Although the UFS
|
||||||
filesystem employed by &os; does not implement journaling itself,
|
file system employed by &os; does not implement journaling itself,
|
||||||
the new journal class of the GEOM framework in &os; 7.X can be
|
the new journal class of the GEOM framework in &os; 7.<replaceable>X</replaceable> can be
|
||||||
used to provide filesystem independent journaling. This article
|
used to provide file system independent journaling. This article
|
||||||
explains how to implement UFS journaling on a typical desktop PC
|
explains how to implement UFS journaling on a typical desktop PC
|
||||||
scenario.</para>
|
scenario.</para>
|
||||||
</abstract>
|
</abstract>
|
||||||
|
@ -57,15 +57,15 @@
|
||||||
<para>While professional servers are usually well protected from
|
<para>While professional servers are usually well protected from
|
||||||
unforeseen shutdowns, the typical desktop is at the mercy of power
|
unforeseen shutdowns, the typical desktop is at the mercy of power
|
||||||
failures, accidental resets, and other user related incidents that can
|
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
|
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
|
reaches a point where user intervention is required and data may be
|
||||||
lost.</para>
|
lost.</para>
|
||||||
|
|
||||||
<para>The new journaling capability provided by GEOM can greatly assist
|
<para>The new journaling capability provided by GEOM can greatly assist
|
||||||
in such scenarios, by virtually eliminating the time required for
|
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>
|
restored to a consistent state.</para>
|
||||||
|
|
||||||
<para>This article describes a procedure for implementing UFS journaling
|
<para>This article describes a procedure for implementing UFS journaling
|
||||||
|
@ -88,7 +88,7 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<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
|
and what options to use in <filename>/etc/fstab</filename> to mount
|
||||||
them.</para>
|
them.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
@ -128,59 +128,59 @@
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="understanding-journaling">
|
<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
|
<para>The journaling provided by GEOM in &os; 7.<replaceable>X</replaceable> is not file system
|
||||||
specific (unlike for example the ext3 filesystem in &linux;) but is
|
specific (unlike for example the ext3 file system in &linux;) but is
|
||||||
functioning at the block level. Though this means it can be applied
|
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>
|
on UFS2.</para>
|
||||||
|
|
||||||
<para>This functionality is provided by loading the
|
<para>This functionality is provided by loading the
|
||||||
<filename>geom_journal.ko</filename> module into the kernel (or
|
<filename>geom_journal.ko</filename> module into the kernel (or
|
||||||
building it into a custom kernel) and using the
|
building it into a custom kernel) and using the
|
||||||
<command>gjournal</command> command to configure the filesystems.
|
<command>gjournal</command> command to configure the file systems.
|
||||||
In general, you would like to journal large filesystems, like
|
In general, you would like to journal large file systems, like
|
||||||
<filename>/usr</filename>. You will need however (see the following
|
<filename>/usr</filename>. You will need however (see the following
|
||||||
section) to reserve some free disk space.</para>
|
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
|
the journal itself. The disk space that holds the actual data is
|
||||||
referred to as the <emphasis>data provider</emphasis>, while the one
|
referred to as the <emphasis>data provider</emphasis>, while the one
|
||||||
that holds the journal is referred to as the
|
that holds the journal is referred to as the
|
||||||
<emphasis>journal provider</emphasis>. The data and journal providers
|
<emphasis>journal provider</emphasis>. The data and journal providers
|
||||||
need to be on different partitions when journaling an existing
|
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,
|
option to use a single provider for both data and journal. In any case,
|
||||||
the <command>gjournal</command> command combines both providers to
|
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>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>You wish to journal your <filename>/usr</filename> filesystem,
|
<para>You wish to journal your <filename>/usr</filename> file system,
|
||||||
stored in <filename role="device">/dev/ad0s1f</filename> (which
|
stored in <filename class="devicefile">/dev/ad0s1f</filename> (which
|
||||||
already contains data).</para>
|
already contains data).</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>You reserved some free disk space in a partition in
|
<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>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Using <command>gjournal</command>, a new <filename
|
<para>Using <command>gjournal</command>, a new <filename
|
||||||
role="device">/dev/ad0s1f.journal</filename> device is created
|
class="devicefile">/dev/ad0s1f.journal</filename> device is created
|
||||||
where <filename role="device">/dev/ad0s1f</filename> is the data
|
where <filename class="devicefile">/dev/ad0s1f</filename> is the data
|
||||||
provider, and <filename role="device">/dev/ad0s1g</filename> is
|
provider, and <filename class="devicefile">/dev/ad0s1g</filename> is
|
||||||
the journal provider. This new device is then used for all
|
the journal provider. This new device is then used for all
|
||||||
subsequent file operations.</para>
|
subsequent file operations.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
<para>The amount of disk space you need to reserve for the journal
|
<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,
|
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.
|
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
|
video editing) may need more. A kernel panic will occur if the
|
||||||
journal space is exhausted before it has a chance to be
|
journal space is exhausted before it has a chance to be
|
||||||
|
@ -191,10 +191,10 @@
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="reserve-space">
|
<sect1 id="reserve-space">
|
||||||
<title>Steps during the installation of &os;</title>
|
<title>Steps During the Installation of &os;</title>
|
||||||
|
|
||||||
<sect2>
|
<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
|
<para>A typical desktop machine usually has one hard disk that stores
|
||||||
both the OS and user data. Arguably, the default partitioning scheme
|
both the OS and user data. Arguably, the default partitioning scheme
|
||||||
|
@ -202,17 +202,17 @@
|
||||||
suitable: A desktop machine does not need a large
|
suitable: A desktop machine does not need a large
|
||||||
<filename>/var</filename> partition, while <filename>/usr</filename>
|
<filename>/var</filename> partition, while <filename>/usr</filename>
|
||||||
is allocated the bulk of the disk space, since user data and a lot of
|
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
|
<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
|
unallocated space. Each partition that will be journaled, requires
|
||||||
another partition for the journal. Since the <filename>/usr</filename>
|
another partition for the journal. Since the <filename>/usr</filename>
|
||||||
partition is the largest, it makes sense to shrink this partition
|
partition is the largest, it makes sense to shrink this partition
|
||||||
slightly, to obtain the space required for journaling.</para>
|
slightly, to obtain the space required for journaling.</para>
|
||||||
|
|
||||||
<para>In our example, an 80Gb disk is used. The following screenshot
|
<para>In our example, an 80 GB disk is used. The following screenshot
|
||||||
shows the default partitions created by the disklabel editor during
|
shows the default partitions created by <application>Disklabel</application> during
|
||||||
installation:</para>
|
installation:</para>
|
||||||
|
|
||||||
<mediaobject>
|
<mediaobject>
|
||||||
|
@ -222,25 +222,25 @@
|
||||||
</mediaobject>
|
</mediaobject>
|
||||||
|
|
||||||
<para>If this is more or less what you need, it is very easy to adjust
|
<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
|
for journaling. Simply use the
|
||||||
<keycap>down</keycap> arrow keys to move the highlight to the
|
arrow keys to move the highlight to the
|
||||||
<filename>/usr</filename> partition and press <keycap>D</keycap> to
|
<filename>/usr</filename> partition and press <keycap>D</keycap> to
|
||||||
delete it.</para>
|
delete it.</para>
|
||||||
|
|
||||||
<para>Now, move the highlight to the disk name at the top of the screen
|
<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
|
and press <keycap>C</keycap> to create a new partition for
|
||||||
<filename>/usr</filename>. This new partition should be smaller by
|
<filename>/usr</filename>. This new partition should be smaller by
|
||||||
1Gb (if you intend to journal <filename>/usr</filename> only), or
|
1 GB (if you intend to journal <filename>/usr</filename> only), or
|
||||||
2Gb (if you intend to journal both <filename>/usr</filename> and
|
2 GB (if you intend to journal both <filename>/usr</filename> and
|
||||||
<filename>/var</filename>). From the pop-up that appears, opt to
|
<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>
|
point.</para>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
<para>Should you journal the <filename>/var</filename> partition?
|
<para>Should you journal the <filename>/var</filename> partition?
|
||||||
Normally, journaling makes sense on quite large partitions. You may
|
Normally, journaling makes sense on quite large partitions. You may
|
||||||
decide not to journal <filename>/var</filename>, although doing so
|
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
|
lightly used (quite probable for a desktop) you may wish to
|
||||||
allocate less disk space for its journal.</para>
|
allocate less disk space for its journal.</para>
|
||||||
|
|
||||||
|
@ -266,9 +266,9 @@
|
||||||
<filename>/etc/fstab</filename> will have to be edited, and the extra
|
<filename>/etc/fstab</filename> will have to be edited, and the extra
|
||||||
swap space entries removed.</para>
|
swap space entries removed.</para>
|
||||||
|
|
||||||
<para>To create the swap, again use the <keycap>up</keycap> and
|
<para>To create the swap, again use the
|
||||||
<keycap>down</keycap> arrow keys to move the highlight to the top of
|
arrow keys to move the highlight to the top of
|
||||||
the disklabel editor screen, so that the disk name itself is
|
<application>Disklabel</application> screen, so that the disk name itself is
|
||||||
highlighted. Then press <keycap>N</keycap>, enter the desired size
|
highlighted. Then press <keycap>N</keycap>, enter the desired size
|
||||||
(<replaceable>1024M</replaceable>), and select
|
(<replaceable>1024M</replaceable>), and select
|
||||||
<quote>swap space</quote> from the pop-up menu that appears. Repeat
|
<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>
|
following table shows our notes for the sample configuration:</para>
|
||||||
|
|
||||||
<table pgwide="1">
|
<table pgwide="1">
|
||||||
<title>Partitions and journals</title>
|
<title>Partitions and Journals</title>
|
||||||
<tgroup cols="3">
|
<tgroup cols="3">
|
||||||
<thead>
|
<thead>
|
||||||
<row>
|
<row>
|
||||||
<entry>Partition</entry>
|
<entry>Partition</entry>
|
||||||
<entry>Mount point</entry>
|
<entry>Mount Point</entry>
|
||||||
<entry>Journal</entry>
|
<entry>Journal</entry>
|
||||||
</row>
|
</row>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -316,7 +316,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<para>Continue the installation as you would normally do. We would
|
<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>
|
(packages) until you have completely setup journaling.</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
|
@ -335,42 +335,42 @@
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect1 id="configure-journal">
|
<sect1 id="configure-journal">
|
||||||
<title>Setting up journaling</title>
|
<title>Setting Up Journaling</title>
|
||||||
|
|
||||||
<sect2 id="running-gjournal">
|
<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
|
<para>Having prepared all the required partitions, it is quite easy
|
||||||
to configure journaling. We will need to switch to single user
|
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
|
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>
|
<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
|
<para>Now, use your notes to determine which partition will be used
|
||||||
for each journal. In our example, <filename>/usr</filename> is
|
for each journal. In our example, <filename>/usr</filename> is
|
||||||
<filename role="device">ad0s1f</filename> and its journal will be
|
<filename class="devicefile">ad0s1f</filename> and its journal will be
|
||||||
<filename role="device">ad0s1g</filename>, while
|
<filename class="devicefile">ad0s1g</filename>, while
|
||||||
<filename>/var</filename> is <filename
|
<filename>/var</filename> is <filename
|
||||||
role="device">ad0s1d</filename> and will
|
class="devicefile">ad0s1d</filename> and will
|
||||||
be journaled to <filename role="device">ad0s1h</filename>.
|
be journaled to <filename class="devicefile">ad0s1h</filename>.
|
||||||
The following commands are required:</para>
|
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: ad0s1f contains data.
|
||||||
GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
|
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: ad0s1d contains data.
|
||||||
GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.</screen>
|
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
|
to run the command using the <option>-f</option> flag to force an
|
||||||
overwrite, i.e.:</para>
|
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
|
<para>Since this is a new installation, it is highly unlikely that
|
||||||
anything will be actually overwritten.</para></note>
|
anything will be actually overwritten.</para></note>
|
||||||
|
|
||||||
<para>At this point, two new devices are created, namely
|
<para>At this point, two new devices are created, namely
|
||||||
<filename role="device">ad0s1d.journal</filename> and
|
<filename class="devicefile">ad0s1d.journal</filename> and
|
||||||
<filename role="device">ad0s1f.journal</filename>. These represent
|
<filename class="devicefile">ad0s1f.journal</filename>. These represent
|
||||||
the <filename>/var</filename> and <filename>/usr</filename>
|
the <filename>/var</filename> and <filename>/usr</filename>
|
||||||
partitions we have to mount. Before mounting, we must however set
|
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: gjournal set
|
||||||
tunefs: soft updates cleared
|
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: gjournal set
|
||||||
tunefs: soft updates cleared</screen>
|
tunefs: soft updates cleared</screen>
|
||||||
|
|
||||||
<para>Now, mount the new devices manually at their respective places
|
<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>
|
option):</para>
|
||||||
|
|
||||||
<screen>&prompt.root; mount -o async /dev/ad0s1d.journal /var
|
<screen>&prompt.root; <userinput>mount -o async /dev/ad0s1d.journal /var</userinput>
|
||||||
&prompt.root; mount -o async /dev/ad0s1f.journal /usr</screen>
|
&prompt.root; <userinput>mount -o async /dev/ad0s1f.journal /usr</userinput></screen>
|
||||||
|
|
||||||
<para>Edit <filename>/etc/fstab</filename> and update the entries for
|
<para>Edit <filename>/etc/fstab</filename> and update the entries for
|
||||||
<filename>/usr</filename> and <filename>/var</filename>:</para>
|
<filename>/usr</filename> and <filename>/var</filename>:</para>
|
||||||
|
@ -428,7 +428,7 @@ tunefs: soft updates cleared</screen>
|
||||||
<programlisting>geom_journal_load="YES"</programlisting>
|
<programlisting>geom_journal_load="YES"</programlisting>
|
||||||
|
|
||||||
<para>Congratulations! Your system is now set for journaling. You can
|
<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
|
reboot to test your configuration (recommended). During the boot you
|
||||||
will see messages like the following:</para>
|
will see messages like the following:</para>
|
||||||
|
|
||||||
|
@ -446,42 +446,42 @@ GEOM_JOURNAL: Journal ad0s1f clean.</screen>
|
||||||
<screen>GEOM_JOURNAL: Journal ad0s1d consistent.</screen>
|
<screen>GEOM_JOURNAL: Journal ad0s1d consistent.</screen>
|
||||||
|
|
||||||
<para>This usually means that &man.gjournal.8; used the information in
|
<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>
|
state.</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 id="gjournal-new">
|
<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
|
<para>While the above procedure is necessary for journaling partitions
|
||||||
that already contain data, journaling an empty partition is somewhat
|
that already contain data, journaling an empty partition is somewhat
|
||||||
easier, since both the data and the journal provider can be stored
|
easier, since both the data and the journal provider can be stored
|
||||||
in the same partition. For example, assume a new disk was installed,
|
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>
|
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
|
using the <option>-s</option> option. The value can be given in
|
||||||
bytes, or appended by <literal>K</literal>, <literal>M</literal> or
|
bytes, or appended by <literal>K</literal>, <literal>M</literal> or
|
||||||
<literal>G</literal> to denote Kilobytes, Megabytes or Gigabytes
|
<literal>G</literal> to denote Kilobytes, Megabytes or Gigabytes
|
||||||
respectively. Note that <command>gjournal</command> will not allow
|
respectively. Note that <command>gjournal</command> will not allow
|
||||||
you to create unsuitably small journal sizes.</para>
|
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>
|
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>
|
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>
|
||||||
|
|
||||||
<sect2 id="configure-kernel">
|
<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
|
<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
|
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>
|
||||||
|
|
||||||
<sect1 id="troubleshooting-gjournal">
|
<sect1 id="troubleshooting-gjournal">
|
||||||
<title>Troubleshooting journaling</title>
|
<title>Troubleshooting Journaling</title>
|
||||||
|
|
||||||
<para>The following section covers frequently asked questions regarding
|
<para>The following section covers frequently asked questions regarding
|
||||||
problems related to journaling.</para>
|
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
|
<para>You either forgot (or misspelled) the entry in
|
||||||
<filename>/boot/loader.conf</filename>, or there are errors in
|
<filename>/boot/loader.conf</filename>, or there are errors in
|
||||||
your <filename>/etc/fstab</filename> file. These are usually easy
|
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>
|
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
|
<para>If the <literal>geom_journal_load</literal> entry is missing
|
||||||
or misspelled, the journaled devices are never created. Load the
|
or misspelled, the journaled devices are never created. Load the
|
||||||
module manually, mount all partitions, and continue with
|
module manually, mount all partitions, and continue with
|
||||||
multi-user boot:</para>
|
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 2948326772: ad0s1g contains journal.
|
||||||
GEOM_JOURNAL: Journal 3193218002: ad0s1h 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 2948326772: ad0s1f contains data.
|
||||||
GEOM_JOURNAL: Journal ad0s1f clean.
|
GEOM_JOURNAL: Journal ad0s1f clean.
|
||||||
|
|
||||||
&prompt.root; mount -a
|
&prompt.root; <userinput>mount -a</userinput>
|
||||||
&prompt.root; exit
|
&prompt.root; <userinput>exit</userinput>
|
||||||
(boot continues)</screen>
|
<emphasis>(boot continues)</emphasis></screen>
|
||||||
|
|
||||||
<para>If, on the other hand, this entry is correct, have a look at
|
<para>If, on the other hand, this entry is correct, have a look at
|
||||||
<filename>/etc/fstab</filename>. You will probably find a
|
<filename>/etc/fstab</filename>. You will probably find a
|
||||||
|
@ -566,8 +566,8 @@ GEOM_JOURNAL: Journal ad0s1f clean.
|
||||||
|
|
||||||
<qandaentry>
|
<qandaentry>
|
||||||
<question id="remove-journaling">
|
<question id="remove-journaling">
|
||||||
<para>Can I remove journaling and return to my standard filesystem
|
<para>Can I remove journaling and return to my standard file system
|
||||||
with soft updates?</para>
|
with Soft Updates?</para>
|
||||||
</question>
|
</question>
|
||||||
|
|
||||||
<answer>
|
<answer>
|
||||||
|
@ -575,47 +575,47 @@ GEOM_JOURNAL: Journal ad0s1f clean.
|
||||||
changes. The partitions you created for the journal providers
|
changes. The partitions you created for the journal providers
|
||||||
can then be used for other purposes, if you so wish.<para>
|
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>
|
<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>
|
<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>
|
<para>Stop the journaling providers:</para>
|
||||||
|
|
||||||
<screen>&prompt.root; gjournal stop ad0s1d.journal
|
<screen>&prompt.root; <userinput>gjournal stop ad0s1d.journal</userinput>
|
||||||
&prompt.root; gjournal stop ad0s1f.journal</screen>
|
&prompt.root; <userinput>gjournal stop ad0s1f.journal</userinput></screen>
|
||||||
|
|
||||||
<para>Clear journaling metadata from all the devices used:</para>
|
<para>Clear journaling metadata from all the devices used:</para>
|
||||||
|
|
||||||
<screen>&prompt.root; gjournal clear ad0s1d
|
<screen>&prompt.root; <userinput>gjournal clear ad0s1d</userinput>
|
||||||
&prompt.root; gjournal clear ad0s1f
|
&prompt.root; <userinput>gjournal clear ad0s1f</userinput>
|
||||||
&prompt.root; gjournal clear ad0s1g
|
&prompt.root; <userinput>gjournal clear ad0s1g</userinput>
|
||||||
&prompt.root; gjournal clear ad0s1h</screen>
|
&prompt.root; <userinput>gjournal clear ad0s1h</userinput></screen>
|
||||||
|
|
||||||
<para>Clear the filesystem journaling flag, and restore the soft
|
<para>Clear the file system journaling flag, and restore the Soft
|
||||||
updates flag:</para>
|
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: gjournal cleared
|
||||||
tunefs: soft updates set
|
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: gjournal cleared
|
||||||
tunefs: soft updates set</screen>
|
tunefs: soft updates set</screen>
|
||||||
|
|
||||||
<para>Remount the old devices by hand:</para>
|
<para>Remount the old devices by hand:</para>
|
||||||
|
|
||||||
<screen>&prompt.root; mount -o rw /dev/ad0s1d /var
|
<screen>&prompt.root; <userinput>mount -o rw /dev/ad0s1d /var</userinput>
|
||||||
&prompt.root; mount -o rw /dev/ad0s1f /usr</screen>
|
&prompt.root; <userinput>mount -o rw /dev/ad0s1f /usr</userinput></screen>
|
||||||
|
|
||||||
<para>Edit <filename>/etc/fstab</filename> and restore it to its
|
<para>Edit <filename>/etc/fstab</filename> and restore it to its
|
||||||
original state:</para>
|
original state:</para>
|
||||||
|
@ -633,7 +633,7 @@ tunefs: soft updates set</screen>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="further-reading">
|
<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
|
<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
|
not very well documented yet. You may however find the following
|
||||||
|
@ -652,7 +652,7 @@ tunefs: soft updates set</screen>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para><ulink url="http://lists.freebsd.org/pipermail/freebsd-questions/2008-April/173501.html">This post</ulink>
|
<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>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|
Loading…
Reference in a new issue