PR: 34074, 34953 34074 Submitted by: Cameron Watters <cameron@toolhouse.com> 34953 Submitted by: Tom Rhodes <darklogik@pittgoth.com>
2251 lines
91 KiB
Text
2251 lines
91 KiB
Text
<!--
|
|
The FreeBSD Documentation Project
|
|
|
|
$FreeBSD$
|
|
-->
|
|
|
|
<chapter id="disks">
|
|
<title>Storage</title>
|
|
|
|
<sect1 id="disks-synopsis">
|
|
<title>Synopsis</title>
|
|
|
|
|
|
<para>This chapter covers the use of disks in FreeBSD. This
|
|
includes memory-backed disks, network-attached disks, and
|
|
standard SCSI/IDE storage devices.</para>
|
|
|
|
<para>After reading this chapter, you will know:</para>
|
|
<itemizedlist>
|
|
<listitem><para>The terminology FreeBSD uses to describe the
|
|
organization of data on a physical disk (partitions and slices).</para>
|
|
</listitem>
|
|
<listitem><para>How to mount and unmount filesystems.</para>
|
|
</listitem>
|
|
<listitem><para>How to add additional hard disks to your system.</para>
|
|
</listitem>
|
|
<listitem><para>How to setup virtual filesystems, such as memory
|
|
disks.</para></listitem>
|
|
<listitem>
|
|
<para>How to use quotas to limit disk space usage.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>How to create and burn CDs and DVDs on FreeBSD.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The various storage media options for backups.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>How to use backup programs available under FreeBSD.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>How to backup to floppy disks.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="disks-naming">
|
|
<title>Device Names</title>
|
|
|
|
<para>The following is a list of physical storage devices
|
|
supported in FreeBSD, and the device names associated with
|
|
them.</para>
|
|
|
|
<table id="disk-naming-physical-table">
|
|
<title>Physical Disk Naming Conventions</title>
|
|
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Drive type</entry>
|
|
<entry>Drive device name</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>IDE hard drives</entry>
|
|
<entry><literal>ad</literal>
|
|
</row>
|
|
<row>
|
|
<entry>IDE CDROM drives</entry>
|
|
<entry><literal>acd</literal>
|
|
</row>
|
|
<row>
|
|
<entry>SCSI hard drives and USB Mass storage devices</entry>
|
|
<entry><literal>da</literal>
|
|
</row>
|
|
<row>
|
|
<entry>SCSI CDROM drives</entry>
|
|
<entry><literal>cd</literal></entry>
|
|
</row>
|
|
<row>
|
|
<entry>Assorted non-standard CDROM drives</entry>
|
|
<entry><literal>mcd</literal> for Mitsumi CD-ROM,
|
|
<literal>scd</literal> for Sony CD-ROM,
|
|
<literal>matcd</literal> for Matsushita/Panasonic CD-ROM
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Floppy drives</entry>
|
|
<entry><literal>fd</literal></entry>
|
|
</row>
|
|
<row>
|
|
<entry>SCSI tape drives</entry>
|
|
<entry><literal>sa</literal>
|
|
</row>
|
|
<row>
|
|
<entry>IDE tape drives</entry>
|
|
<entry><literal>ast</literal>
|
|
</row>
|
|
<row>
|
|
<entry>Flash drives</entry>
|
|
<entry><literal>fla</literal> for DiskOnChip Flash device
|
|
</row>
|
|
<row>
|
|
<entry>RAID drives</entry>
|
|
<entry><literal>myxd</literal> for Mylex, and
|
|
<literal>amrd</literal> for AMI MegaRAID,
|
|
<literal>idad</literal> for Compaq Smart RAID.
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect1>
|
|
|
|
<sect1 id="disks-adding">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>David</firstname>
|
|
<surname>O'Brien</surname>
|
|
<contrib>Originally contributed by </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<!-- 26 Apr 1998 -->
|
|
</sect1info>
|
|
|
|
<title>Adding Disks</title>
|
|
|
|
<indexterm>
|
|
<primary>disks</primary>
|
|
<secondary>adding</secondary>
|
|
</indexterm>
|
|
|
|
<para>Lets say we want to add a new SCSI disk to a machine that
|
|
currently only has a single drive. First turn off the computer
|
|
and install the drive in the computer following the instructions
|
|
of the computer, controller, and drive manufacturer. Due to the
|
|
wide variations of procedures to do this, the details are beyond
|
|
the scope of this document.</para>
|
|
|
|
<para>Login as user <username>root</username>. After you have installed the
|
|
drive, inspect <filename>/var/run/dmesg.boot</filename> to ensure the new
|
|
disk was found. Continuing with our example, the newly added drive will
|
|
be <devicename>da1</devicename> and we want to mount it on
|
|
<filename>/1</filename> (if you are adding an IDE drive, the device name
|
|
will be <devicename>wd1</devicename> in pre-4.0 systems, or
|
|
<devicename>ad1</devicename> in most 4.X systems).</para>
|
|
|
|
<indexterm><primary>partitions</primary></indexterm>
|
|
<indexterm><primary>slices</primary></indexterm>
|
|
<indexterm>
|
|
<primary><command>fdisk</command></primary>
|
|
</indexterm>
|
|
|
|
<para>Because FreeBSD runs on IBM-PC compatible computers, it must
|
|
take into account the PC BIOS partitions. These are different
|
|
from the traditional BSD partitions. A PC disk has up to four
|
|
BIOS partition entries. If the disk is going to be truly
|
|
dedicated to FreeBSD, you can use the
|
|
<emphasis>dedicated</emphasis> mode. Otherwise, FreeBSD will
|
|
have to live within one of the PC BIOS partitions. FreeBSD
|
|
calls the PC BIOS partitions <emphasis>slices</emphasis> so as
|
|
not to confuse them with traditional BSD partitions. You may
|
|
also use slices on a disk that is dedicated to FreeBSD, but used
|
|
in a computer that also has another operating system installed.
|
|
This is to not confuse the <command>fdisk</command> utility of
|
|
the other operating system.</para>
|
|
|
|
<para>In the slice case the drive will be added as
|
|
<filename>/dev/da1s1e</filename>. This is read as: SCSI disk,
|
|
unit number 1 (second SCSI disk), slice 1 (PC BIOS partition 1),
|
|
and <filename>e</filename> BSD partition. In the dedicated
|
|
case, the drive will be added simply as
|
|
<filename>/dev/da1e</filename>.</para>
|
|
|
|
<sect2>
|
|
<title>Using &man.sysinstall.8;</title>
|
|
<indexterm>
|
|
<primary><application>sysinstall</application></primary>
|
|
<secondary>adding disks</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>su</primary>
|
|
</indexterm>
|
|
<procedure>
|
|
<step>
|
|
<title>Navigating <application>Sysinstall</application></title>
|
|
|
|
<para>You may use <command>/stand/sysinstall</command> to
|
|
partition and label a new disk using its easy to use menus.
|
|
Either login as user <username>root</username> or use the
|
|
<command>su</command> command. Run
|
|
<command>/stand/sysinstall</command> and enter the
|
|
<literal>Configure</literal> menu. Within the
|
|
<literal>FreeBSD Configuration Menu</literal>, scroll down and
|
|
select the <literal>Fdisk</literal> option.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<title><application>fdisk</application> Partition Editor</title>
|
|
<para>Once inside <application>fdisk</fdisk>, we can type <userinput>A</userinput> to
|
|
use the entire disk for FreeBSD. When asked if you want to
|
|
<quote>remain cooperative with any future possible operating
|
|
systems</quote>, answer <literal>YES</literal>. Write the
|
|
changes to the disk using <userinput>W</userinput>. Now exit the
|
|
FDISK editor by typing <userinput>q</userinput>. Next you will be
|
|
asked about the Master Boot Record. Since you are adding a
|
|
disk to an already running system, choose
|
|
<literal>None</literal>.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<title>Disk Label Editor</title>
|
|
<indexterm><primary>BSD partitions</primary></indexterm>
|
|
|
|
<para>Next, you need to exit <application>sysinstall</application>
|
|
and start it again. Follow the directions above, although this
|
|
time choose the <literal>Label</literal> option. This will
|
|
enter the <literal>Disk Label Editor</literal>. This
|
|
is where you will create the traditional BSD partitions. A
|
|
disk can have up to eight partitions, labeled
|
|
<literal>a-h</literal>.
|
|
A few of the partition labels have special uses. The
|
|
<literal>a</literal> partition is used for the root partition
|
|
(<filename>/</filename>). Thus only your system disk (e.g,
|
|
the disk you boot from) should have an <literal>a</literal>
|
|
partition. The <literal>b</literal> partition is used for
|
|
swap partitions, and you may have many disks with swap
|
|
partitions. The <literal>c</literal> partition addresses the
|
|
entire disk in dedicated mode, or the entire FreeBSD slice in
|
|
slice mode. The other partitions are for general use.</para>
|
|
|
|
<para><application>sysinstall</application>'s Label editor
|
|
favors the <literal>e</literal>
|
|
partition for non-root, non-swap partitions. Within the
|
|
Label editor, create a single file system by typing
|
|
<userinput>C</userinput>. When prompted if this will be a FS
|
|
(file system) or swap, choose <literal>FS</literal> and type in a
|
|
mount point (e.g, <filename>/mnt</filename>). When adding a
|
|
disk in post-install mode, <application>sysinstall</application>
|
|
will not create entries
|
|
in <filename>/etc/fstab</filename> for you, so the mount point
|
|
you specify is not important.</para>
|
|
|
|
<para>You are now ready to write the new label to the disk and
|
|
create a file system on it. Do this by typing
|
|
<userinput>W</userinput>. Ignore any errors from
|
|
<application>sysinstall</application> that
|
|
it could not mount the new partition. Exit the Label Editor
|
|
and <application>sysinstall</application> completely.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<title>Finish</title>
|
|
|
|
<para>The last step is to edit <filename>/etc/fstab</filename>
|
|
to add an entry for your new disk.</para>
|
|
</step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Using Command Line Utilities</title>
|
|
|
|
<sect3>
|
|
<title>Using Slices</title>
|
|
|
|
<para>This setup will allow your disk to work correctly with
|
|
other operating systems that might be installed on your
|
|
computer and will not confuse other operating systems'
|
|
<command>fdisk</command> utilities. It is recommended
|
|
to use this method for new disk installs. Only use
|
|
<literal>dedicated</literal> mode if you have a good reason
|
|
to do so!</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 bs=1k count=1</userinput>
|
|
&prompt.root; <userinput>fdisk -BI da1</userinput> #Initialize your new disk
|
|
&prompt.root; <userinput>disklabel -B -w -r da1s1 auto</userinput> #Label it.
|
|
&prompt.root; <userinput>disklabel -e da1s1</userinput> # Edit the disklabel just created and add any partitions.
|
|
&prompt.root; <userinput>mkdir -p /1</userinput>
|
|
&prompt.root; <userinput>newfs /dev/da1s1e</userinput> # Repeat this for every partition you created.
|
|
&prompt.root; <userinput>mount -t ufs /dev/da1s1e /1</userinput> # Mount the partition(s)
|
|
&prompt.root; <userinput>vi /etc/fstab</userinput> # Add the appropriate entry/entries to your <filename>/etc/fstab</filename>.</screen>
|
|
|
|
<para>If you have an IDE disk, substitute <filename>ad</filename>
|
|
for <filename>da</filename>. On pre-4.X systems use
|
|
<filename>wd</filename>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Dedicated</title>
|
|
<indexterm><primary>OS/2</primary></indexterm>
|
|
|
|
<para>If you will not be sharing the new drive with another operating
|
|
system, you may use the <literal>dedicated</literal> mode. Remember
|
|
this mode can confuse Microsoft operating systems; however, no damage
|
|
will be done by them. IBM's OS/2 however, will
|
|
<quote>appropriate</quote> any partition it finds which it does not
|
|
understand.</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 bs=1k count=1</userinput>
|
|
&prompt.root; <userinput>disklabel -Brw da1 auto</userinput>
|
|
&prompt.root; <userinput>disklabel -e da1</userinput> # create the `e' partition
|
|
&prompt.root; <userinput>newfs -d0 /dev/rda1e</userinput>
|
|
&prompt.root; <userinput>mkdir -p /1</userinput>
|
|
&prompt.root; <userinput>vi /etc/fstab</userinput> # add an entry for /dev/da1e
|
|
&prompt.root; <userinput>mount /1</userinput></screen>
|
|
|
|
<para>An alternate method is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 count=2</userinput>
|
|
&prompt.root; <userinput>disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin</userinput>
|
|
&prompt.root; <userinput>newfs /dev/rda1e</userinput>
|
|
&prompt.root; <userinput>mkdir -p /1</userinput>
|
|
&prompt.root; <userinput>vi /etc/fstab</userinput> # add an entry for /dev/da1e
|
|
&prompt.root; <userinput>mount /1</userinput></screen>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="disks-virtual">
|
|
<title>Network, Memory, and File-Based Filesystems</title>
|
|
<indexterm><primary>virtual disks</primary></indexterm>
|
|
<indexterm>
|
|
<primary>disks</primary>
|
|
<secondary>virtual</secondary>
|
|
</indexterm>
|
|
|
|
<para>Aside from the disks you physically insert into your computer:
|
|
floppies, CDs, hard drives, and so forth; other forms of disks
|
|
are understood by FreeBSD - the <firstterm>virtual
|
|
disks</firstterm>.</para>
|
|
|
|
<indexterm><primary>NFS</primary></indexterm>
|
|
<indexterm><primary>Coda</primary></indexterm>
|
|
<indexterm>
|
|
<primary>disks</primary>
|
|
<secondary>memory</secondary>
|
|
</indexterm>
|
|
<para>These include network filesystems such as the <link
|
|
linkend="nfs">Network Filesystem</link> and Coda, memory-based
|
|
filesystems such as <link linkend="disks-md">md</link> and
|
|
file-backed filesystems created by <link
|
|
linkend="disks-vnconfig">vnconfig</link> or
|
|
<command>mdconfig</command>.</para>
|
|
|
|
<sect2 id="disks-vnconfig">
|
|
<title>vnconfig: File-Backed Filesystem</title>
|
|
<indexterm>
|
|
<primary>disks</primary>
|
|
<secondary>file-backed</secondary>
|
|
</indexterm>
|
|
|
|
<para>&man.vnconfig.8; configures and enables vnode pseudo-disk
|
|
devices. A <firstterm>vnode</firstterm> is a representation
|
|
of a file, and is the focus of file activity. This means that
|
|
&man.vnconfig.8; uses files to create and operate a
|
|
filesystem. One possible use is the mounting of floppy or CD
|
|
images kept in files.</para>
|
|
|
|
<para>To mount an existing filesystem image:</para>
|
|
|
|
<example>
|
|
<title>Using vnconfig to mount an Existing Filesystem
|
|
Image</title>
|
|
|
|
<screen>&prompt.root; <userinput>vnconfig vn<replaceable>0</replaceable> <replaceable>diskimage</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/vn<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput></screen>
|
|
</example>
|
|
|
|
<para>To create a new filesystem image with vnconfig:</para>
|
|
|
|
<example>
|
|
<title>Creating a New File-Backed Disk with vnconfig</title>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=<replaceable>newimage</replaceable> bs=1k count=<replaceable>5</replaceable>k</userinput>
|
|
5120+0 records in
|
|
5120+0 records out
|
|
&prompt.root; <userinput>vnconfig -s labels -c vn<replaceable>0</replaceable> <replaceable>newimage</replaceable></userinput>
|
|
&prompt.root; <userinput>disklabel -r -w vn<replaceable>0</replaceable> auto</userinput>
|
|
&prompt.root; <userinput>newfs vn<replaceable>0</replaceable>c</userinput>
|
|
Warning: 2048 sector(s) in last cylinder unallocated
|
|
/dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
|
|
5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
|
|
super-block backups (for fsck -b #) at:
|
|
32
|
|
&prompt.root; <userinput>mount /dev/vn<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/vn0c 4927 1 4532 0% /mnt</screen>
|
|
</example>
|
|
</sect2>
|
|
|
|
<sect2 id="disks-md">
|
|
<title>md: Memory Filesystem</title>
|
|
<indexterm>
|
|
<primary>disks</primary>
|
|
<secondary>memory filesystem</secondary>
|
|
</indexterm>
|
|
|
|
<para><devicename>md</devicename> is a simple, efficient means to create memory
|
|
filesystems.</para>
|
|
|
|
<para>Simply take a filesystem you have prepared with, for
|
|
example, &man.vnconfig.8;, and:</para>
|
|
|
|
<example>
|
|
<title>md Memory Disk</title>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=<replaceable>newimage</replaceable> of=/dev/md<replaceable>0</replaceable></userinput>
|
|
5120+0 records in
|
|
5120+0 records out
|
|
&prompt.root; <userinput>mount /dev/md<replaceable>0c</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
|
|
Filesystem 1K-blocks Used Avail Capacity Mounted on
|
|
/dev/md0c 4927 1 4532 0% /mnt</screen>
|
|
</example>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="quotas">
|
|
<title>File System Quotas</title>
|
|
<indexterm>
|
|
<primary>accounting</primary>
|
|
<secondary>disk space</secondary>
|
|
</indexterm>
|
|
<indexterm><primary>disk quotas</primary></indexterm>
|
|
|
|
<para>Quotas are an optional feature of the operating system that
|
|
allow you to limit the amount of disk space and/or the number of
|
|
files a user or members of a group may allocate on a per-file
|
|
system basis. This is used most often on timesharing systems where
|
|
it is desirable to limit the amount of resources any one user or
|
|
group of users may allocate. This will prevent one user or group
|
|
of users from consuming all of the available disk space.</para>
|
|
|
|
<sect2>
|
|
<title>Configuring Your System to Enable Disk Quotas</title>
|
|
|
|
<para>Before attempting to use disk quotas, it is necessary to make
|
|
sure that quotas are configured in your kernel. This is done by
|
|
adding the following line to your kernel configuration
|
|
file:</para>
|
|
|
|
<programlisting>options QUOTA</programlisting>
|
|
|
|
<para>The stock <filename>GENERIC</filename> kernel does not have
|
|
this enabled by default, so you will have to configure, build and
|
|
install a custom kernel in order to use disk quotas. Please refer
|
|
to <xref linkend="kernelconfig"> for more information on kernel
|
|
configuration.</para>
|
|
|
|
<para>Next you will need to enable disk quotas in
|
|
<filename>/etc/rc.conf</filename>. This is done by adding the
|
|
line:</para>
|
|
|
|
<programlisting>enable_quotas=<quote>YES</quote></programlisting>
|
|
<indexterm>
|
|
<primary>disk quotas</primary>
|
|
<secondary>checking</secondary>
|
|
</indexterm>
|
|
<para>For finer control over your quota startup, there is an
|
|
additional configuration variable available. Normally on bootup,
|
|
the quota integrity of each file system is checked by the
|
|
<command>quotacheck</command> program. The
|
|
<command>quotacheck</command> facility insures that the data in
|
|
the quota database properly reflects the data on the file system.
|
|
This is a very time consuming process that will significantly
|
|
affect the time your system takes to boot. If you would like to
|
|
skip this step, a variable in <filename>/etc/rc.conf</filename>
|
|
is made available for the purpose:</para>
|
|
|
|
<programlisting>check_quotas=<quote>NO</quote></programlisting>
|
|
|
|
<para>If you are running FreeBSD prior to 3.2-RELEASE, the
|
|
configuration is simpler, and consists of only one variable. Set
|
|
the following in your <filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>check_quotas=<quote>YES</quote></programlisting>
|
|
|
|
<para>Finally you will need to edit <filename>/etc/fstab</filename>
|
|
to enable disk quotas on a per-file system basis. This is where
|
|
you can either enable user or group quotas or both for all of your
|
|
file systems.</para>
|
|
|
|
<para>To enable per-user quotas on a file system, add the
|
|
<literal>userquota</literal> option to the options field in the
|
|
<filename>/etc/fstab</filename> entry for the file system you want
|
|
to enable quotas on. For example:</para>
|
|
|
|
<programlisting>/dev/da1s2g /home ufs rw,userquota 1 2</programlisting>
|
|
|
|
<para>Similarly, to enable group quotas, use the
|
|
<literal>groupquota</literal> option instead of
|
|
<literal>userquota</literal>. To enable both user and
|
|
group quotas, change the entry as follows:</para>
|
|
|
|
<programlisting>/dev/da1s2g /home ufs rw,userquota,groupquota 1 2</programlisting>
|
|
|
|
<para>By default, the quota files are stored in the root directory of
|
|
the file system with the names <filename>quota.user</filename> and
|
|
<filename>quota.group</filename> for user and group quotas
|
|
respectively. See &man.fstab.5; for more
|
|
information. Even though the &man.fstab.5; manual page says that
|
|
you can specify
|
|
an alternate location for the quota files, this is not recommended
|
|
because the various quota utilities do not seem to handle this
|
|
properly.</para>
|
|
|
|
<para>At this point you should reboot your system with your new
|
|
kernel. <filename>/etc/rc</filename> will automatically run the
|
|
appropriate commands to create the initial quota files for all of
|
|
the quotas you enabled in <filename>/etc/fstab</filename>, so
|
|
there is no need to manually create any zero length quota
|
|
files.</para>
|
|
|
|
<para>In the normal course of operations you should not be required
|
|
to run the <command>quotacheck</command>,
|
|
<command>quotaon</command>, or <command>quotaoff</command>
|
|
commands manually. However, you may want to read their manual pages
|
|
just to be familiar with their operation.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Setting Quota Limits</title>
|
|
<indexterm>
|
|
<primary>disk quotas</primary>
|
|
<secondary>limits</secondary>
|
|
</indexterm>
|
|
|
|
<para>Once you have configured your system to enable quotas, verify
|
|
that they really are enabled. An easy way to do this is to
|
|
run:</para>
|
|
|
|
<screen>&prompt.root; <userinput>quota -v</userinput></screen>
|
|
|
|
<para>You should see a one line summary of disk usage and current
|
|
quota limits for each file system that quotas are enabled
|
|
on.</para>
|
|
|
|
<para>You are now ready to start assigning quota limits with the
|
|
<command>edquota</command> command.</para>
|
|
|
|
<para>You have several options on how to enforce limits on the
|
|
amount of disk space a user or group may allocate, and how many
|
|
files they may create. You may limit allocations based on disk
|
|
space (block quotas) or number of files (inode quotas) or a
|
|
combination of both. Each of these limits are further broken down
|
|
into two categories: hard and soft limits.</para>
|
|
|
|
<indexterm><primary>hard limit</primary></indexterm>
|
|
<para>A hard limit may not be exceeded. Once a user reaches his
|
|
hard limit he may not make any further allocations on the file
|
|
system in question. For example, if the user has a hard limit of
|
|
500 blocks on a file system and is currently using 490 blocks, the
|
|
user can only allocate an additional 10 blocks. Attempting to
|
|
allocate an additional 11 blocks will fail.</para>
|
|
|
|
<indexterm><primary>soft limit</primary></indexterm>
|
|
<para>Soft limits, on the other hand, can be exceeded for a limited
|
|
amount of time. This period of time is known as the grace period,
|
|
which is one week by default. If a user stays over his or her
|
|
soft limit longer than the grace period, the soft limit will
|
|
turn into a hard limit and no further allocations will be allowed.
|
|
When the user drops back below the soft limit, the grace period
|
|
will be reset.</para>
|
|
|
|
<para>The following is an example of what you might see when you run
|
|
the <command>edquota</command> command. When the
|
|
<command>edquota</command> command is invoked, you are placed into
|
|
the editor specified by the <envar>EDITOR</envar> environment
|
|
variable, or in the <command>vi</command> editor if the
|
|
<envar>EDITOR</envar> variable is not set, to allow you to edit
|
|
the quota limits.</para>
|
|
|
|
<screen>&prompt.root; <userinput>edquota -u test</userinput></screen>
|
|
|
|
<programlisting>Quotas for user test:
|
|
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
|
|
inodes in use: 7, limits (soft = 50, hard = 60)
|
|
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
|
|
inodes in use: 0, limits (soft = 50, hard = 60)</programlisting>
|
|
|
|
<para>You will normally see two lines for each file system that has
|
|
quotas enabled. One line for the block limits, and one line for
|
|
inode limits. Simply change the value you want updated to modify
|
|
the quota limit. For example, to raise this user's block limit
|
|
from a soft limit of 50 and a hard limit of 75 to a soft limit of
|
|
500 and a hard limit of 600, change:</para>
|
|
|
|
<programlisting>/usr: blocks in use: 65, limits (soft = 50, hard = 75)</programlisting>
|
|
|
|
<para>to:</para>
|
|
|
|
<programlisting> /usr: blocks in use: 65, limits (soft = 500, hard = 600)</programlisting>
|
|
|
|
<para>The new quota limits will be in place when you exit the
|
|
editor.</para>
|
|
|
|
<para>Sometimes it is desirable to set quota limits on a range of
|
|
uids. This can be done by use of the <option>-p</option> option
|
|
on the <command>edquota</command> command. First, assign the
|
|
desired quota limit to a user, and then run
|
|
<command>edquota -p protouser startuid-enduid</command>. For
|
|
example, if user <username>test</username> has the desired quota
|
|
limits, the following command can be used to duplicate those quota
|
|
limits for uids 10,000 through 19,999:</para>
|
|
|
|
<screen>&prompt.root; <userinput>edquota -p test 10000-19999</userinput></screen>
|
|
|
|
<para>For more information see &man.edquota.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Checking Quota Limits and Disk Usage</title>
|
|
<indexterm>
|
|
<primary>disk quotas</primary>
|
|
<secondary>checking</secondary>
|
|
</indexterm>
|
|
|
|
<para>You can use either the <command>quota</command> or the
|
|
<command>repquota</command> commands to check quota limits and
|
|
disk usage. The <command>quota</command> command can be used to
|
|
check individual user or group quotas and disk usage. A user
|
|
may only examine his own quota, and the quota of a group he
|
|
is a member of. Only the super-user may view all user and group
|
|
quotas. The
|
|
<command>repquota</command> command can be used to get a summary
|
|
of all quotas and disk usage for file systems with quotas
|
|
enabled.</para>
|
|
|
|
<para>The following is some sample output from the
|
|
<command>quota -v</command> command for a user that has quota
|
|
limits on two file systems.</para>
|
|
|
|
<programlisting>Disk quotas for user test (uid 1002):
|
|
Filesystem blocks quota limit grace files quota limit grace
|
|
/usr 65* 50 75 5days 7 50 60
|
|
/usr/var 0 50 75 0 50 60</programlisting>
|
|
|
|
<indexterm><primary>grace period</primary></indexterm>
|
|
<para>On the <filename>/usr</filename> file system in the above
|
|
example, this user is currently 15 blocks over the soft limit of
|
|
50 blocks and has 5 days of the grace period left. Note the
|
|
asterisk <literal>*</literal> which indicates that the user is
|
|
currently over his quota limit.</para>
|
|
|
|
<para>Normally file systems that the user is not using any disk
|
|
space on will not show up in the output from the
|
|
<command>quota</command> command, even if he has a quota limit
|
|
assigned for that file system. The <option>-v</option> option
|
|
will display those file systems, such as the
|
|
<filename>/usr/var</filename> file system in the above
|
|
example.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Quotas over NFS</title>
|
|
<indexterm><primary>NFS</primary></indexterm>
|
|
|
|
<para>Quotas are enforced by the quota subsystem on the NFS server.
|
|
The &man.rpc.rquotad.8; daemon makes quota information available
|
|
to the &man.quota.1; command on NFS clients, allowing users on
|
|
those machines to see their quota statistics.</para>
|
|
|
|
<para>Enable <command>rpc.rquotad</command> in
|
|
<filename>/etc/inetd.conf</filename> like so:</para>
|
|
|
|
<programlisting>rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad</programlisting>
|
|
|
|
<para>Now restart <command>inetd</command>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/inetd.pid`</userinput></screen>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="creating-cds">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Mike</firstname>
|
|
<surname>Meyer</surname>
|
|
<contrib>Contributed by </contrib>
|
|
<!-- mwm@mired.org -->
|
|
</author>
|
|
</authorgroup>
|
|
<!-- Apr 2001 -->
|
|
</sect1info>
|
|
|
|
<title>Creating and Using Optical Media (CDs & DVDs)</title>
|
|
<indexterm>
|
|
<primary>CDROMs</primary>
|
|
<secondary>creating</secondary>
|
|
</indexterm>
|
|
|
|
<sect2>
|
|
<title>Introduction</title>
|
|
|
|
<para>CDs have a number of features that differentiate them from
|
|
conventional disks. Initially, they were not writable by the
|
|
user. They are designed so that they can be read continuously without
|
|
delays to move the head between tracks. They are also much easier
|
|
to transport between systems than similarly sized media were at the
|
|
time.</para>
|
|
|
|
<para>CDs do have tracks, but this refers to a section of data to
|
|
be read continuously and not a physical property of the disk. To
|
|
produce a CD on FreeBSD, you prepare the data files that are going
|
|
to make up the tracks on the CD, then write the tracks to the
|
|
CD.</para>
|
|
|
|
<indexterm><primary>ISO 9660</primary></indexterm>
|
|
<indexterm>
|
|
<primary>filesystems</primary>
|
|
<secondary>ISO-9660</secondary>
|
|
</indexterm>
|
|
<para>The ISO 9660 file system was designed to deal with these
|
|
differences. It unfortunately codifies file system limits that were
|
|
common then. Fortunately, it provides an extension mechanism that
|
|
allows properly written CDs to exceed those limits while still
|
|
working with systems that do not support those extensions.</para>
|
|
|
|
<indexterm>
|
|
<primary><command>mkisofs</command></primary>
|
|
</indexterm>
|
|
<para>The <command><link linkend="mkisofs">mkisofs</link></command>
|
|
program is used to produce a data file containing an ISO 9660 file
|
|
system. It has options that support various extensions, and is
|
|
described below. You can install it with the
|
|
<port>sysutils/mkisofs</port> port.</para>
|
|
|
|
<indexterm>
|
|
<primary>CD burner</primary>
|
|
<secondary>ATAPI</secondary>
|
|
</indexterm>
|
|
<para>Which tool to use to burn the CD depends on whether your CD burner
|
|
is ATAPI or something else. ATAPI CD burners use the <command><link
|
|
linkend="burncd">burncd</link></command> program that is part of
|
|
the base system. SCSI and USB CD burners should use
|
|
<command><link linkend="cdrecord">cdrecord</link></command> from
|
|
the <port>sysutils/cdrtools</port> port.</para>
|
|
|
|
<para><command>burncd</command> has a limited number of
|
|
supported drives. To find out if a drive is supported, see
|
|
<ulink url="http://freebsd.dk/ata/">CD-R/RW supported
|
|
drives</ulink>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="mkisofs">
|
|
<title>mkisofs</title>
|
|
|
|
<para><command>mkisofs</command> produces an ISO 9660 file system
|
|
that is an image of a directory tree in the Unix file system name
|
|
space. The simplest usage is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkisofs <option>-o</option> <replaceable>imagefile.iso</replaceable> <replaceable>/path/to/tree</replaceable></userinput></screen>
|
|
|
|
<indexterm>
|
|
<primary>filesystems</primary>
|
|
<secondary>ISO-9660</secondary>
|
|
</indexterm>
|
|
<para>This command will create an <replaceable>imagefile</replaceable>
|
|
containing an ISO 9660 file system that is a copy of the tree at
|
|
<replaceable>/path/to/tree</replaceable>. In the process, it will
|
|
map the file names to names that fit the limitations of the
|
|
standard ISO 9660 file system, and will exclude files that have
|
|
names uncharacteristic of ISO file systems.</para>
|
|
|
|
<indexterm>
|
|
<primary>filesystems</primary>
|
|
<secondary>HFS</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>filesystems</primary>
|
|
<secondary>Joliet</secondary>
|
|
</indexterm>
|
|
<para>A number of options are available to overcome those
|
|
restrictions. In particular, <option>-R</option> enables the
|
|
Rock Ridge extensions common to Unix systems, <option>-J</option>
|
|
enables Joliet extensions used by Microsoft systems, and
|
|
<option>-hfs</option> can be used to create HFS file systems used
|
|
by MacOS.</para>
|
|
|
|
<para>For CDs that are going to be used only on FreeBSD systems,
|
|
<option>-U</option> can be used to disable all filename
|
|
restrictions. When used with <option>-R</option>, it produces a
|
|
file system image that is identical to the FreeBSD tree you started
|
|
from, though it may violate the ISO 9660 standard in a number of
|
|
ways.</para>
|
|
|
|
<indexterm>
|
|
<primary>CDROMs</primary>
|
|
<secondary>creating bootable</secondary>
|
|
</indexterm>
|
|
<para>The last option of general use is <option>-b</option>. This is
|
|
used to specify the location of the boot image for use in producing an
|
|
<quote>El Torito</quote> bootable CD. This option takes an
|
|
argument which is the path to a boot image from the top of the
|
|
tree being written to the CD. So, given that
|
|
<filename>/tmp/myboot</filename> holds a bootable FreeBSD system
|
|
with the boot image in
|
|
<filename>/tmp/myboot/boot/cdboot</filename>, you could produce the
|
|
image of an ISO 9660 file system in
|
|
<filename>/tmp/bootable.iso</filename> like so:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkisofs <option>-U</option> <option>-R</option> <option>-b</option> <filename>boot/cdboot</filename> <option>-o</option> <filename>/tmp/bootable.iso</filename> <filename>/tmp/myboot</filename></userinput></screen>
|
|
|
|
<para>Having done that, if you have <devicename>vn</devicename>
|
|
configured in your kernel, you can mount the file system with:</para>
|
|
|
|
<screen>&prompt.root; <userinput>vnconfig <option>-e</option> <filename>vn0c</filename> <filename>/tmp/bootable.iso</filename></userinput>
|
|
&prompt.root; <userinput>mount <option>-t</option> cd9660 <filename>/dev/vn0c</filename> <filename>/mnt</filename></userinput></screen>
|
|
|
|
<para>At which point you can verify that <filename>/mnt</filename>
|
|
and <filename>/tmp/myboot</filename> are identical.</para>
|
|
|
|
<para>There are many other options you can use with
|
|
<command>mkisofs</command> to fine-tune its behavior. In particular:
|
|
modifications to an ISO 9660 layout and the creation of Joilet
|
|
and HFS discs. See the &man.mkisofs.8; manual page for details.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="burncd">
|
|
<title>burncd</title>
|
|
<indexterm>
|
|
<primary>CDROMs</primary>
|
|
<secondary>burning</secondary>
|
|
</indexterm>
|
|
<para>If you have an ATAPI CD burner, you can use the
|
|
<command>burncd</command> command to burn an ISO image onto a
|
|
CD. <command>burncd</command> is part of the base system, installed
|
|
as <filename>/usr/sbin/burncd</filename>. Usage is very simple, as
|
|
it has few options:</para>
|
|
|
|
<screen>&prompt.root; <userinput>burncd <option>-f</option> <replaceable>cddevice</replaceable> data <replaceable>imagefile.iso</replaceable> fixate</userinput></screen>
|
|
|
|
<para>Will burn a copy of <replaceable>imagefile.iso</replaceable> on
|
|
<replaceable>cddevice</replaceable>. The default device is
|
|
<filename>/dev/acd0c</filename>. See &man.burncd.8; for options to
|
|
set the write speed, eject the CD after burning, and write audio
|
|
data.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="cdrecord">
|
|
<title>cdrecord</title>
|
|
|
|
<para>If you do not have an ATAPI CD burner, you will have to use
|
|
<command>cdrecord</command> to burn your
|
|
CDs. <command>cdrecord</command> is not part of the base system;
|
|
you must install it from either the port at <port>sysutils/cdrtools</port>
|
|
or the appropriate
|
|
package. Changes to the base system can cause binary versions of
|
|
this program to fail, possibly resulting in a
|
|
<quote>coaster</quote>. You should therefore either upgrade the
|
|
port when you upgrade your system, or if you are <link
|
|
linkend="stable">tracking -STABLE</link>, upgrade the port when a
|
|
new version becomes available.</para>
|
|
|
|
<para>While <command>cdrecord</command> has many options, basic usage
|
|
is even simpler than <command>burncd</command>. Burning an ISO 9660
|
|
image is done with:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cdrecord <option>dev=</option><replaceable>device</replaceable> <replaceable>imagefile.iso</replaceable></userinput></screen>
|
|
|
|
<para>The tricky part of using <command>cdrecord</command> is finding
|
|
the <option>dev</option> to use. To find the proper setting, use
|
|
the <option>-scanbus</option> flag of <command>cdrecord</command>,
|
|
which might produce results like this:</para>
|
|
<indexterm>
|
|
<primary>CDROMs</primary>
|
|
<secondary>burning</secondary>
|
|
</indexterm>
|
|
<screen>&prompt.root; <userinput>cdrecord <option>-scanbus</option></userinput>
|
|
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
|
|
Using libscg version 'schily-0.1'
|
|
scsibus0:
|
|
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
|
|
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
|
|
0,2,0 2) *
|
|
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
|
|
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
|
|
0,5,0 5) *
|
|
0,6,0 6) *
|
|
0,7,0 7) *
|
|
scsibus1:
|
|
1,0,0 100) *
|
|
1,1,0 101) *
|
|
1,2,0 102) *
|
|
1,3,0 103) *
|
|
1,4,0 104) *
|
|
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
|
|
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
|
|
1,7,0 107) *</screen>
|
|
|
|
<para>This lists the appropriate <option>dev</option> value for the
|
|
devices on the list. Locate your CD burner, and use the three
|
|
numbers separated by commas as the value for
|
|
<option>dev</option>. In this case, the CRW device is 1,5,0, so the
|
|
appropriate input would be
|
|
<userinput><option>dev</option>=1,5,0</userinput>. There are easier
|
|
ways to specify this value; see &man.cdrecord.1; for
|
|
details. That is also the place to look for information on writing
|
|
audio tracks, controlling the speed, and other things.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="imaging-cd">
|
|
<title>Duplicating Data CDs</title>
|
|
|
|
<para>You can copy a data CD to a image file that is
|
|
functionally equivalent to the image file created with
|
|
<command>mkisofs</command>, and you can use it to duplicate
|
|
any data CD. The example given here assumes that your CDROM
|
|
device is <devicename>acd0</devicename>. Substitute your
|
|
correct CDROM device. A <literal>c</literal> must be appended
|
|
to the end of the device name to indicate the entire partition
|
|
or, in the case of CDROMs, the entire disc.</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/acd0c of=file.iso bs=2048</userinput></screen>
|
|
|
|
<para>Now that you have an image, you can burn it to CD as
|
|
described above.</para>
|
|
|
|
<para>This does not work with audio CDs.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="mounting-cd">
|
|
<title>Using Data CDs</title>
|
|
|
|
<para>Now that you have created a standard data CDROM, you
|
|
probably want to mount it and read the data on it. By
|
|
default, &man.mount.8; assumes that a filesystem is of type
|
|
<literal>ufs</literal>. If you try something like:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount /dev/cd0c/mnt</userinput></screen>
|
|
|
|
<para>you will get a complaint about <errorname>Incorrect super
|
|
block</errorname>, and no mount. The CDROM is not a
|
|
<literal>UFS</literal> filesystem, so attempts to mount it
|
|
as such will fail. You just need to tell &man.mount.8; that
|
|
the filesystem is of type <literal>ISO9660</literal>, and
|
|
everything will work. You do this by specifying the
|
|
<option>-t cd9660</option> option &man.mount.8;. For
|
|
example, if you want to mount the CDROM device,
|
|
<devicename>/dev/cd0c</devicename>, under
|
|
<filename>/mnt</filename>, you would execute:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t cd9660 /dev/cd0c /mnt</userinput></screen>
|
|
|
|
<para>Note that your device name
|
|
(<devicename>/dev/cd0c</devicename> in this example) could be
|
|
different, depending on the interface your CDROM uses. Also,
|
|
the <option>-t cd9660</option> option just executes
|
|
&man.mount.cd9660.8;. The above example could be shortened
|
|
to:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount_cd9660 /dev/cd0c /mnt</userinput></screen>
|
|
|
|
<para>You can generally use data CDROMs from any vendor in this
|
|
way. Disks with certain ISO 9660 extensions might behave
|
|
oddly, however. For example, Joliet disks store all filenames
|
|
in two-byte Unicode characters. The FreeBSD kernel does not
|
|
speak Unicode (yet!), so non-English characters show up as
|
|
question marks. (If you are running FreeBSD 4.3 or later, the
|
|
CD9660 driver includes hooks to load an appropriate Unicode
|
|
conversion table on the fly. Modules for some of the common
|
|
encodings are available via the
|
|
<port>sysutils/cd9660_unicode</port> port.)</para>
|
|
|
|
<para>Occasionally, you might get <errorname>Device not
|
|
configured</errorname> when trying to mount a CDROM. This
|
|
usually means that the CDROM drive thinks that there is no
|
|
disk in the tray, or that the drive is not visible on the bus.
|
|
It can take a couple of seconds for a CDROM drive to realize
|
|
that it has been fed, so be patient.</para>
|
|
|
|
<para>Sometimes, a SCSI CDROM may be missed because it didn't
|
|
have enough time to answer the bus reset. If you have a SCSI
|
|
CDROM please add the following option to your kernel
|
|
configuration and <link linkend="kernelconfig-building">rebuild your kernel</link>.</para>
|
|
|
|
<programlisting>options SCSI_DELAY=15000</programlisting>
|
|
|
|
<para>This tells your SCSI bus to pause 15 seconds during boot,
|
|
to give your CDROM drive every possible chance to answer the
|
|
bus reset.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="rawdata-cd">
|
|
<title>Burning Raw Data CDs</title>
|
|
|
|
<para>You can choose to burn a file directly to CD, without
|
|
creating an ISO 9660 filesystem. Some people do this for
|
|
backup purposes. This runs more quickly than burning a
|
|
standard CD:</para>
|
|
|
|
<screen>&prompt.root; <userinput>burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate</userinput></screen>
|
|
|
|
<para>In order to retrieve the data burned to such a CD, you
|
|
must read data from the raw device node:</para>
|
|
|
|
<screen>&prompt.root; <userinput>tar xzvf /dev/acd1c</userinput></screen>
|
|
|
|
<para>You cannot mount this disk as you would a normal CDROM.
|
|
Such a CDROM cannot be read under any operating system
|
|
except FreeBSD. If you want to be able to mount the CD, or
|
|
share data with another operating system, you must use
|
|
<port>sysutils/mkisofs</port> as described above.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="raid">
|
|
<title>RAID</title>
|
|
|
|
<sect2 id="raid-soft">
|
|
<title>Software RAID</title>
|
|
|
|
<sect3 id="ccd">
|
|
<sect3info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Christopher</firstname>
|
|
<surname>Shumway</surname>
|
|
<contrib>Written by </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Valentino</firstname>
|
|
<surname>Vaschetto</surname>
|
|
<contrib>Marked up by </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect3info>
|
|
|
|
<title>ccd (Concatenated Disk Configuration)</title>
|
|
|
|
<para>It seems like today everyone has a collection of
|
|
multimedia files. Everything from mp3's to video clips. I have
|
|
converted most of my audio CDROM collection to mp3's so I can
|
|
have all of my music in one centralized location, and not have
|
|
to hunt down the audio CD with that one song I got stuck in my
|
|
head. The problem I was faced with is where to store all
|
|
these files?</para>
|
|
|
|
<para>When choosing a mass storage solution, the most important
|
|
factors to consider are speed, reliability, and cost. It is very
|
|
rare to have all three in favor, normally a fast, reliable mass
|
|
storage device is expensive, and to cut back on cost either speed
|
|
or reliability must be sacrificed. In designing my system, I
|
|
ranked the requirements by most favorable to least favorable. In
|
|
this situation, cost was the biggest factor. I needed a lot of
|
|
storage for a reasonable price. The next factor, speed, is not
|
|
quite as important, since most of the usage would be over a one
|
|
hundred megabit switched Ethernet, and that would most likely be
|
|
the bottleneck. The ability to spread the file input/output
|
|
operations out over several disks would be more than enough speed
|
|
for this network. Finally, the consideration of reliability was
|
|
an easy one to answer. All of the data being put on this mass
|
|
storage device was already backed up on CD-R's. This drive was
|
|
primarily here for online live storage for easy access, so if a
|
|
drive went bad, I could just replace it, rebuild the filesystem,
|
|
and copy back the data from CD-R's.</para>
|
|
|
|
<para>To sum it up, I need something that will give me the most
|
|
amount of storage space for my money. The cost of large IDE disks
|
|
are cheap these days. I found a place that was selling Western
|
|
Digital 30.7gb 5400 RPM IDE disks for about one-hundred and thirty
|
|
US dollars. I bought three of them, giving me approximately
|
|
ninety gigabytes of online storage.</para>
|
|
|
|
<sect4 id="ccd-installhw">
|
|
<title>Installing the Hardware</title>
|
|
|
|
<para>I installed the hard drives in a system that already
|
|
had one IDE disk in as the system disk. The ideal solution
|
|
would be for each IDE disk to have its own IDE controller
|
|
and cable, but without fronting more costs to acquire a dual
|
|
IDE controller this would not be a possibility. So, I
|
|
jumpered two disks as slaves, and one as master. One went
|
|
on the first IDE controller as a slave to the system disk,
|
|
and the other two where slave/master on the secondary IDE
|
|
controller.</para>
|
|
|
|
<para>Upon reboot, the system BIOS was configured to
|
|
automatically detect the disks attached. More importantly,
|
|
FreeBSD detected them on reboot:</para>
|
|
|
|
<programlisting>ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
|
|
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
|
|
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
|
|
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33</programlisting>
|
|
|
|
<para>At this point, if FreeBSD does not detect the disks, be
|
|
sure that you have jumpered them correctly. I have heard
|
|
numerous reports with problems using cable select instead of
|
|
true slave/master configuration.</para>
|
|
|
|
<para>The next consideration was how to attach them as part of
|
|
the filesystem. I did a little research on <ulink
|
|
url="http://www.vinumvm.org/">&man.vinum.8;</ulink> and FreeBSD's
|
|
&man.ccd.4;. In this particular configuration, &man.ccd.4;
|
|
appeared to be a better choice mainly because it has fewer
|
|
parts. Less parts tends to indicate less chance of breakage.
|
|
Vinum appears to be a bit of an overkill for my needs.</para>
|
|
</sect4>
|
|
|
|
<sect4 id="ccd-setup">
|
|
<title>Setting up the CCD</title>
|
|
|
|
<para><application>CCD</application> allows me to take
|
|
several identical disks and concatenate them into one
|
|
logical filesystem. In order to use
|
|
<application>ccd</application>, I need a kernel with
|
|
<application>ccd</application> support built into it. I
|
|
added this line to my kernel configuration file and rebuilt
|
|
the kernel:</para>
|
|
|
|
<programlisting>pseudo-device ccd 4</programlisting>
|
|
|
|
<para><application>ccd</application> support can also be
|
|
loaded as a kernel loadable module in FreeBSD 4.0 or
|
|
later.</para>
|
|
|
|
<para>To set up <application>ccd</application>, first I need
|
|
to disklabel the disks. Here is how I disklabeled
|
|
them:</para>
|
|
|
|
<programlisting>disklabel -r -w ad1 auto
|
|
disklabel -r -w ad2 auto
|
|
disklabel -r -w ad3 auto</programlisting>
|
|
|
|
<para>This created a disklabel ad1c, ad2c and ad3c that
|
|
spans the entire disk.</para>
|
|
|
|
<para>The next step is to change the disklabel type. To do
|
|
that I had to edit the disklabel:</para>
|
|
|
|
<programlisting>disklabel -e ad1
|
|
disklabel -e ad2
|
|
disklabel -e ad3</programlisting>
|
|
|
|
<para>This opened up the current disklabel on each disk
|
|
respectively in whatever editor the <envar>EDITOR</envar>
|
|
environment variable was set to, in my case, &man.vi.1;.
|
|
Inside the editor I had a section like this:</para>
|
|
|
|
<programlisting>8 partitions:
|
|
# size offset fstype [fsize bsize bps/cpg]
|
|
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)</programlisting>
|
|
|
|
<para>I needed to add a new "e" partition for &man.ccd.4; to
|
|
use. This usually can be copied of the "c" partition, but
|
|
the <option>fstype</option> must be <userinput>4.2BSD</userinput>.
|
|
Once I was done,
|
|
my disklabel should look like this:</para>
|
|
|
|
<programlisting>8 partitions:
|
|
# size offset fstype [fsize bsize bps/cpg]
|
|
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
|
|
e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)</programlisting>
|
|
|
|
</sect4>
|
|
|
|
<sect4 id="ccd-buildingfs">
|
|
<title>Building the Filesystem</title>
|
|
|
|
<para>Now that I have all of the disks labeled, I needed to
|
|
build the <application>ccd</application>. To do that, I
|
|
used a utility called &man.ccdconfig.8;.
|
|
<command>ccdconfig</command> takes several arguments, the
|
|
first argument being the device to configure, in this case,
|
|
<devicename>/dev/ccd0c</devicename>. The device node for
|
|
<devicename>ccd0c</devicename> may not exist yet, so to
|
|
create it, perform the following commands:</para>
|
|
|
|
<programlisting>cd /dev
|
|
sh MAKEDEV ccd0</programlisting>
|
|
|
|
<para>The next argument <command>ccdconfig</command> expects
|
|
is the interleave for the filesystem. The interleave
|
|
defines the size of a stripe in disk blocks, normally five
|
|
hundred and twelve bytes. So, an interleave of thirty-two
|
|
would be sixteen thousand three hundred and eighty-four
|
|
bytes.</para>
|
|
|
|
<para>After the interleave comes the flags for
|
|
<command>ccdconfig</command>. If you want to enable drive
|
|
mirroring, you can specify a flag here. In this
|
|
configuration, I am not mirroring the
|
|
<application>ccd</application>, so I left it as zero.</para>
|
|
|
|
<para>The final arguments to <command>ccdconfig</command>
|
|
are the devices to place into the array. Putting it all
|
|
together I get this command:</para>
|
|
|
|
<programlisting>ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e</programlisting>
|
|
|
|
<para>This configures the <application>ccd</application>.
|
|
I can now &man.newfs.8; the filesystem.</para>
|
|
|
|
<programlisting>newfs /dev/ccd0c</programlisting>
|
|
|
|
</sect4>
|
|
|
|
<sect4 id="ccd-auto">
|
|
<title>Making it all Automatic</title>
|
|
|
|
<para>Finally, if I want to be able to mount the
|
|
<application>ccd</application>, I need to
|
|
configure it first. I write out my current configuration to
|
|
<filename>/etc/ccd.conf</filename> using the following command:</para>
|
|
|
|
<programlisting>ccdconfig -g > /etc/ccd.conf</programlisting>
|
|
|
|
<para>When I reboot, the script <command>/etc/rc</command>
|
|
runs <command>ccdconfig -C</command> if /etc/ccd.conf
|
|
exists. This automatically configures the
|
|
<application>ccd</application> so it can be mounted.</para>
|
|
|
|
<para>If you are booting into single user mode, before you can
|
|
<command>mount</command> the <application>ccd</application>, you
|
|
need to issue the following command to configure the
|
|
array:</para>
|
|
|
|
<programlisting>ccdconfig -C</programlisting>
|
|
|
|
<para>Then, we need an entry for the
|
|
<application>ccd</application> in
|
|
<filename>/etc/fstab</filename> so it will be mounted at
|
|
boot time.</para>
|
|
|
|
<programlisting>/dev/ccd0c /media ufs rw 2 2</programlisting>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3 id="vinum">
|
|
<title>vinum (Logical Volume Manager)</title>
|
|
|
|
<para>XXX</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="raid-hard">
|
|
<title>Hardware RAID</title>
|
|
|
|
<indexterm>
|
|
<primary>RAID</primary>
|
|
<secondary>Hardware</secondary>
|
|
</indexterm>
|
|
<para>FreeBSD supports a wide variety of hardware RAID
|
|
controllers from many popular manufacturers such as Adaptec,
|
|
3Ware, Mylex, DPT, AMI, Dell, HP, IBM, and more. The list of
|
|
supported adapters is growing all the time, so make sure to
|
|
check the release notes for complete information.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="backups-tapebackups">
|
|
<title>Tape Backup Media</title>
|
|
|
|
<indexterm><primary>tape media</primary></indexterm>
|
|
<para>The major tape media are the 4mm, 8mm, QIC, mini-cartridge and
|
|
DLT.</para>
|
|
|
|
<sect2 id="backups-tapebackups-4mm">
|
|
<title>4mm (DDS: Digital Data Storage)</title>
|
|
|
|
<indexterm>
|
|
<primary>tape media</primary>
|
|
<secondary>DDS (4mm) tapes</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>tape media</primary>
|
|
<secondary>QIC tapes</secondary>
|
|
</indexterm>
|
|
<para>4mm tapes are replacing QIC as the workstation backup media of
|
|
choice. This trend accelerated greatly when Conner purchased Archive,
|
|
a leading manufacturer of QIC drives, and then stopped production of
|
|
QIC drives. 4mm drives are small and quiet but do not have the
|
|
reputation for reliability that is enjoyed by 8mm drives. The
|
|
cartridges are less expensive and smaller (3 x 2 x 0.5 inches, 76 x 51
|
|
x 12 mm) than 8mm cartridges. 4mm, like 8mm, has comparatively short
|
|
head life for the same reason, both use helical scan.</para>
|
|
|
|
<para>Data throughput on these drives starts ~150kB/s, peaking at ~500kB/s.
|
|
Data capacity starts at 1.3 GB and ends at 2.0 GB. Hardware
|
|
compression, available with most of these drives, approximately
|
|
doubles the capacity. Multi-drive tape library units can have 6
|
|
drives in a single cabinet with automatic tape changing. Library
|
|
capacities reach 240 GB.</para>
|
|
|
|
<para>The DDS-3 standard now supports tape capacities up to 12 GB (or
|
|
24 GB compressed).</para>
|
|
|
|
<para>4mm drives, like 8mm drives, use helical-scan. All the benefits
|
|
and drawbacks of helical-scan apply to both 4mm and 8mm drives.</para>
|
|
|
|
<para>Tapes should be retired from use after 2,000 passes or 100 full
|
|
backups.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="backups-tapebackups-8mm">
|
|
<title>8mm (Exabyte)</title>
|
|
<indexterm>
|
|
<primary>tape media</primary>
|
|
<secondary>Exabyte (8mm) tapes</secondary>
|
|
</indexterm>
|
|
|
|
<para>8mm tapes are the most common SCSI tape drives; they are the best
|
|
choice of exchanging tapes. Nearly every site has an Exabyte 2 GB 8mm
|
|
tape drive. 8mm drives are reliable, convenient and quiet. Cartridges
|
|
are inexpensive and small (4.8 x 3.3 x 0.6 inches; 122 x 84 x 15 mm).
|
|
One downside of 8mm tape is relatively short head and tape life due to
|
|
the high rate of relative motion of the tape across the heads.</para>
|
|
|
|
<para>Data throughput ranges from ~250kB/s to ~500kB/s. Data sizes start
|
|
at 300 MB and go up to 7 GB. Hardware compression, available with
|
|
most of these drives, approximately doubles the capacity. These
|
|
drives are available as single units or multi-drive tape libraries
|
|
with 6 drives and 120 tapes in a single cabinet. Tapes are changed
|
|
automatically by the unit. Library capacities reach 840+ GB.</para>
|
|
|
|
<para>The Exabyte <quote>Mammoth</quote> model supports 12 GB on one tape
|
|
(24 GB with compression) and costs approximately twice as much as
|
|
conventional tape drives.</para>
|
|
|
|
<para>Data is recorded onto the tape using helical-scan, the heads are
|
|
positioned at an angle to the media (approximately 6 degrees). The
|
|
tape wraps around 270 degrees of the spool that holds the heads. The
|
|
spool spins while the tape slides over the spool. The result is a
|
|
high density of data and closely packed tracks that angle across the
|
|
tape from one edge to the other.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="backups-tapebackups-qic">
|
|
<title>QIC</title>
|
|
<indexterm>
|
|
<primary>tape media</primary>
|
|
<secondary>QIC-150</secondary>
|
|
</indexterm>
|
|
|
|
<para>QIC-150 tapes and drives are, perhaps, the most common tape drive
|
|
and media around. QIC tape drives are the least expensive "serious"
|
|
backup drives. The downside is the cost of media. QIC tapes are
|
|
expensive compared to 8mm or 4mm tapes, up to 5 times the price per GB
|
|
data storage. But, if your needs can be satisfied with a half-dozen
|
|
tapes, QIC may be the correct choice. QIC is the
|
|
<emphasis>most</emphasis> common tape drive. Every site has a QIC
|
|
drive of some density or another. Therein lies the rub, QIC has a
|
|
large number of densities on physically similar (sometimes identical)
|
|
tapes. QIC drives are not quiet. These drives audibly seek before
|
|
they begin to record data and are clearly audible whenever reading,
|
|
writing or seeking. QIC tapes measure (6 x 4 x 0.7 inches; 15.2 x
|
|
10.2 x 1.7 mm). <link
|
|
linkend="backups-tapebackups-mini">Mini-cartridges</link>, which
|
|
also use 1/4" wide tape are discussed separately. Tape libraries and
|
|
changers are not available.</para>
|
|
|
|
<para>Data throughput ranges from ~150kB/s to ~500kB/s. Data capacity
|
|
ranges from 40 MB to 15 GB. Hardware compression is available on many
|
|
of the newer QIC drives. QIC drives are less frequently installed;
|
|
they are being supplanted by DAT drives.</para>
|
|
|
|
<para>Data is recorded onto the tape in tracks. The tracks run along
|
|
the long axis of the tape media from one end to the other. The number
|
|
of tracks, and therefore the width of a track, varies with the tape's
|
|
capacity. Most if not all newer drives provide backward-compatibility
|
|
at least for reading (but often also for writing). QIC has a good
|
|
reputation regarding the safety of the data (the mechanics are simpler
|
|
and more robust than for helical scan drives).</para>
|
|
|
|
<para>Tapes should be retired from use after 5,000 backups.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="backups-tapebackups-mini">
|
|
<title>XXX* Mini-Cartridge</title>
|
|
|
|
<para></para>
|
|
</sect2>
|
|
|
|
<sect2 id="backups-tapebackups-dlt">
|
|
<title>DLT</title>
|
|
<indexterm>
|
|
<primary>tape media</primary>
|
|
<secondary>DLT</secondary>
|
|
</indexterm>
|
|
|
|
<para>DLT has the fastest data transfer rate of all the drive types
|
|
listed here. The 1/2" (12.5mm) tape is contained in a single spool
|
|
cartridge (4 x 4 x 1 inches; 100 x 100 x 25 mm). The cartridge has a
|
|
swinging gate along one entire side of the cartridge. The drive
|
|
mechanism opens this gate to extract the tape leader. The tape leader
|
|
has an oval hole in it which the drive uses to "hook" the tape. The
|
|
take-up spool is located inside the tape drive. All the other tape
|
|
cartridges listed here (9 track tapes are the only exception) have
|
|
both the supply and take-up spools located inside the tape cartridge
|
|
itself.</para>
|
|
|
|
<para>Data throughput is approximately 1.5MB/s, three times the throughput of
|
|
4mm, 8mm, or QIC tape drives. Data capacities range from 10 GB to 20 GB
|
|
for a single drive. Drives are available in both multi-tape changers
|
|
and multi-tape, multi-drive tape libraries containing from 5 to 900
|
|
tapes over 1 to 20 drives, providing from 50 GB to 9 TB of
|
|
storage.</para>
|
|
|
|
<para>With compression, DLT Type IV format supports up to 70 GB
|
|
capacity.</para>
|
|
|
|
<para>Data is recorded onto the tape in tracks parallel to the direction
|
|
of travel (just like QIC tapes). Two tracks are written at once.
|
|
Read/write head lifetimes are relatively long; once the tape stops
|
|
moving, there is no relative motion between the heads and the
|
|
tape.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title id="backups-tapebackups-ait">AIT</title>
|
|
<indexterm>
|
|
<primary>tape media</primary>
|
|
<secondary>AIT</secondary>
|
|
</indexterm>
|
|
|
|
<para>AIT is a new format from Sony, and can hold up to 50 GB (with
|
|
compression) per tape. The tapes contain memory chips which retain an
|
|
index of the tape's contents. This index can be rapidly read by the
|
|
tape drive to determine the position of files on the tape, instead of
|
|
the several minutes that would be required for other tapes. Software
|
|
such as SAMS:Alexandria can operate forty or more AIT tape libraries,
|
|
communicating directly with the tape's memory chip to display the
|
|
contents on screen, determine what files were backed up to which
|
|
tape, locate the correct tape, load it, and restore the data from the
|
|
tape.</para>
|
|
|
|
<para>Libraries like this cost in the region of $20,000, pricing them a
|
|
little out of the hobbyist market.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Using a New Tape for the First Time</title>
|
|
|
|
<para>The first time that you try to read or write a new, completely
|
|
blank tape, the operation will fail. The console messages should be
|
|
similar to:</para>
|
|
|
|
<screen>sa0(ncr1:4:0): NOT READY asc:4,1
|
|
sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
|
|
|
|
<para>The tape does not contain an Identifier Block (block number 0).
|
|
All QIC tape drives since the adoption of QIC-525 standard write an
|
|
Identifier Block to the tape. There are two solutions:</para>
|
|
|
|
<para><command>mt fsf 1</command> causes the tape drive to write an
|
|
Identifier Block to the tape.</para>
|
|
|
|
<para>Use the front panel button to eject the tape.</para>
|
|
|
|
<para>Re-insert the tape and <command>dump</command> data to the tape.</para>
|
|
|
|
<para><command>dump</command> will report <literal>DUMP: End of tape
|
|
detected</literal> and the console will show: <literal>HARDWARE
|
|
FAILURE info:280 asc:80,96</literal>.</para>
|
|
|
|
<para>rewind the tape using: <command>mt rewind</command>.</para>
|
|
|
|
<para>Subsequent tape operations are successful.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="backup-programs">
|
|
<title>Backup Programs</title>
|
|
<indexterm><primary>backup software</primary></indexterm>
|
|
|
|
<para>The three major programs are
|
|
&man.dump.8;,
|
|
&man.tar.1;,
|
|
and
|
|
&man.cpio.1;.</para>
|
|
|
|
<sect2>
|
|
<title>Dump and Restore</title>
|
|
<indexterm>
|
|
<primary>backup software</primary>
|
|
<secondary>dump / restore</secondary>
|
|
</indexterm>
|
|
<indexterm><primary><command>dump</command></primary></indexterm>
|
|
<indexterm><primary><command>restore</command></primary></indexterm>
|
|
|
|
<para>The traditional Unix backup programs are
|
|
<command>dump</command> and <command>restore</command>. They
|
|
operate on the drive as a collection of disk blocks, below the
|
|
abstractions of files, links and directories that are created by
|
|
the filesystems. <command>dump</command> backs up an entire
|
|
filesystem on a device. It is unable to backup only part of a
|
|
filesystem or a directory tree that spans more than one
|
|
filesystem. <command>dump</command> does not write files and
|
|
directories to tape, but rather writes the raw data blocks that
|
|
comprise files and directories.</para>
|
|
|
|
<note><para>If you use <command>dump</command> on your root directory, you
|
|
would not back up <filename>/home</filename>,
|
|
<filename>/usr</filename> or many other directories since
|
|
these are typically mount points for other filesystems or
|
|
symbolic links into those filesystems.</para></note>
|
|
|
|
<para><command>dump</command>has quirks that remain from its early days in
|
|
Version 6 of AT&T Unix (circa 1975). The default
|
|
parameters are suitable for 9-track tapes (6250 bpi), not the
|
|
high-density media available today (up to 62,182 ftpi). These
|
|
defaults must be overridden on the command line to utilize the
|
|
capacity of current tape drives.</para>
|
|
|
|
<indexterm><primary><filename>rhosts</filename></primary></indexterm>
|
|
<para>It is also possible to backup data across the network to a
|
|
tape drive attached to another computer with <command>rdump</command> and
|
|
<command>rrestore</command>. Both programs rely upon <command>rcmd</command> and
|
|
<command>ruserok</command> to access the remote tape drive. Therefore,
|
|
the user performing the backup must have
|
|
<literal>rhosts</literal> access to the remote computer. The
|
|
arguments to <command>rdump</command> and <command>rrestore</command> must be suitable
|
|
to use on the remote computer. (e.g. When
|
|
<command>rdump</command>ing from a FreeBSD computer to an
|
|
Exabyte tape drive connected to a Sun called
|
|
<hostid>komodo</hostid>, use: <command>/sbin/rdump 0dsbfu
|
|
54000 13000 126 komodo:/dev/nrsa8 /dev/rda0a
|
|
2>&1</command>) Beware: there are security implications to
|
|
allowing <literal>rhosts</literal> commands. Evaluate your
|
|
situation carefully.</para>
|
|
|
|
<para>It is also possible to use <command>rdump</command> and
|
|
<command>rrestore</command> in a more secure fashion over
|
|
<command>ssh</command>.</para>
|
|
|
|
<example>
|
|
<title>Using <command>rdump</command> over <application>ssh</application></title>
|
|
|
|
<screen>&prompt.root; <userinput>/sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
|
|
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz</userinput></screen>
|
|
|
|
</example>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><command>tar</command></title>
|
|
<indexterm>
|
|
<primary>backup software</primary>
|
|
<secondary><command>tar</command></secondary>
|
|
</indexterm>
|
|
|
|
<para>&man.tar.1; also dates back to Version 6 of AT&T Unix
|
|
(circa 1975). <command>tar</command> operates in cooperation
|
|
with the filesystem; <command>tar</command> writes files and
|
|
directories to tape. <command>tar</command> does not support the
|
|
full range of options that are available from &man.cpio.1;, but
|
|
<command>tar</command> does not require the unusual command
|
|
pipeline that <command>cpio</command> uses.</para>
|
|
|
|
<indexterm><primary><command>tar</command></primary></indexterm>
|
|
<para>Most versions of <command>tar</command> do not support
|
|
backups across the network. The GNU version of
|
|
<command>tar</command>, which FreeBSD utilizes, supports remote
|
|
devices using the same syntax as <command>rdump</command>. To
|
|
<command>tar</command> to an Exabyte tape drive connected to a
|
|
Sun called <hostid>komodo</hostid>, use: <command>/usr/bin/tar
|
|
cf komodo:/dev/nrsa8 . 2>&1</command>. For versions without
|
|
remote device support, you can use a pipeline and
|
|
<command>rsh</command> to send the data to a remote tape
|
|
drive.</para>
|
|
|
|
<screen>&prompt.root; <userinput>tar cf - . | rsh <replaceable>hostname</replaceable> dd of=<replaceable>tape-device</replaceable> obs=20b</userinput></screen>
|
|
|
|
<para>If you are worried about the security of backing up over a
|
|
network you should use the <command>ssh</command> command
|
|
instead of <command>rsh</command>.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><command>cpio</command></title>
|
|
<indexterm>
|
|
<primary>backup software</primary>
|
|
<secondary><command>cpio</command></secondary>
|
|
</indexterm>
|
|
|
|
<para>&man.cpio.1; is the original Unix file interchange tape
|
|
program for magnetic media. <command>cpio</command> has options
|
|
(among many others) to perform byte-swapping, write a number of
|
|
different archive formats, and pipe the data to other programs.
|
|
This last feature makes <command>cpio</command> and excellent
|
|
choice for installation media. <command>cpio</command> does not
|
|
know how to walk the directory tree and a list of files must be
|
|
provided through <filename>stdin</filename>.</para>
|
|
<indexterm><primary><command>cpio</command></primary></indexterm>
|
|
|
|
<para><command>cpio</command> does not support backups across
|
|
the network. You can use a pipeline and <command>rsh</command>
|
|
to send the data to a remote tape drive.</para>
|
|
|
|
<screen>&prompt.root; <userinput>for f in <replaceable>directory_list; do</replaceable></userinput>
|
|
<userinput>find $f >> backup.list</userinput>
|
|
<userinput>done</userinput>
|
|
&prompt.root; <userinput>cpio -v -o --format=newc < backup.list | ssh <replaceable>user</replaceable>@<replaceable>host</replaceable> "cat > <replaceable>backup_device</replaceable>"</userinput></screen>
|
|
|
|
<para>Where <replaceable>directory_list</replaceable> is the list of
|
|
directories you want to back up,
|
|
<replaceable>user</replaceable>@<replaceable>host</replaceable> is the
|
|
user/hostname combination that will be performing the backups, and
|
|
<replaceable>backup_device</replaceable> is where the backups should
|
|
be written to (e.g., <filename>/dev/nrsa0</filename>).</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><command>pax</command></title>
|
|
<indexterm>
|
|
<primary>backup software</primary>
|
|
<secondary><command>pax</command></secondary>
|
|
</indexterm>
|
|
<indexterm><primary><command>pax</command></primary></indexterm>
|
|
<indexterm><primary>POSIX</primary></indexterm>
|
|
<indexterm><primary>IEEE</primary></indexterm>
|
|
|
|
<para>&man.pax.1; is IEEE/POSIX's answer to
|
|
<command>tar</command> and <command>cpio</command>. Over the
|
|
years the various versions of <command>tar</command> and
|
|
<command>cpio</command> have gotten slightly incompatible. So
|
|
rather than fight it out to fully standardize them, POSIX
|
|
created a new archive utility. <command>pax</command> attempts
|
|
to read and write many of the various <command>cpio</command>
|
|
and <command>tar</command> formats, plus new formats of its own.
|
|
Its command set more resembles <command>cpio</command> than
|
|
<command>tar</command>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="backups-programs-amanda">
|
|
<title><application>Amanda</application></title>
|
|
<indexterm>
|
|
<primary>backup software</primary>
|
|
<secondary><application>Amanda</application></secondary>
|
|
</indexterm>
|
|
<indexterm><primary><application>Amanda</application></primary></indexterm>
|
|
|
|
<!-- Remove link until <port> tag is available -->
|
|
<para><application>Amanda</application> (Advanced Maryland
|
|
Network Disk Archiver) is a client/server backup system,
|
|
rather than a single program. An Amanda server will backup to
|
|
a single tape drive any number of computers that have Amanda
|
|
clients and a network connection to the Amanda server. A
|
|
common problem at sites with a number of large disks is
|
|
that the length of time required to backup to data directly to tape
|
|
exceeds the amount of time available for the task. Amanda
|
|
solves this problem. Amanda can use a "holding disk" to
|
|
backup several filesystems at the same time. Amanda creates
|
|
"archive sets": a group of tapes used over a period of time to
|
|
create full backups of all the filesystems listed in Amanda's
|
|
configuration file. The "archive set" also contains nightly
|
|
incremental (or differential) backups of all the filesystems.
|
|
Restoring a damaged filesystem requires the most recent full
|
|
backup and the incremental backups.</para>
|
|
|
|
<para>The configuration file provides fine control of backups and the
|
|
network traffic that Amanda generates. Amanda will use any of the
|
|
above backup programs to write the data to tape. Amanda is available
|
|
as either a port or a package, it is not installed by default.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Do Nothing</title>
|
|
|
|
<para><quote>Do nothing</quote> is not a computer program, but it is the
|
|
most widely used backup strategy. There are no initial costs. There
|
|
is no backup schedule to follow. Just say no. If something happens
|
|
to your data, grin and bear it!</para>
|
|
|
|
<para>If your time and your data is worth little to nothing, then
|
|
<quote>Do nothing</quote> is the most suitable backup program for your
|
|
computer. But beware, Unix is a useful tool, you may find that within
|
|
six months you have a collection of files that are valuable to
|
|
you.</para>
|
|
|
|
<para><quote>Do nothing</quote> is the correct backup method for
|
|
<filename>/usr/obj</filename> and other directory trees that can be
|
|
exactly recreated by your computer. An example is the files that
|
|
comprise the HTML or Postscript version of this Handbook.
|
|
These document formats have been created from SGML input
|
|
files. Creating backups of the HTML or PostScript files is
|
|
not necessary. The SGML files are backed up regularly.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Which Backup Program Is Best?</title>
|
|
<indexterm>
|
|
<primary>LISA</primary>
|
|
</indexterm>
|
|
|
|
<para>&man.dump.8; <emphasis>Period.</emphasis> Elizabeth D. Zwicky
|
|
torture tested all the backup programs discussed here. The clear
|
|
choice for preserving all your data and all the peculiarities of Unix
|
|
filesystems is <command>dump</command>. Elizabeth created filesystems containing
|
|
a large variety of unusual conditions (and some not so unusual ones)
|
|
and tested each program by doing a backup and restore of those
|
|
filesystems. The peculiarities included: files with holes, files with
|
|
holes and a block of nulls, files with funny characters in their
|
|
names, unreadable and unwritable files, devices, files that change
|
|
size during the backup, files that are created/deleted during the
|
|
backup and more. She presented the results at LISA V in Oct. 1991.
|
|
See <ulink
|
|
url="http://reality.sgi.com/zwicky_neu/testdump.doc.html">torture-testing
|
|
Backup and Archive Programs</ulink>.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Emergency Restore Procedure</title>
|
|
|
|
<sect3>
|
|
<title>Before the Disaster</title>
|
|
|
|
<para>There are only four steps that you need to perform in
|
|
preparation for any disaster that may occur.</para>
|
|
<indexterm>
|
|
<primary><command>disklabel</command></primary>
|
|
</indexterm>
|
|
|
|
<para>First, print the disklabel from each of your disks
|
|
(<command>e.g. disklabel da0 | lpr</command>), your filesystem table
|
|
(<filename>/etc/fstab</filename>) and all boot messages,
|
|
two copies of
|
|
each.</para>
|
|
|
|
<indexterm><primary>fix-it floppies</primary></indexterm>
|
|
<para>Second, determine that the boot and fix-it floppies
|
|
(<filename>boot.flp</filename> and <filename>fixit.flp</filename>)
|
|
have all your devices. The easiest way to check is to reboot your
|
|
machine with the boot floppy in the floppy drive and check the boot
|
|
messages. If all your devices are listed and functional, skip on to
|
|
step three.</para>
|
|
|
|
<para>Otherwise, you have to create two custom bootable
|
|
floppies which have a kernel that can mount all of your disks
|
|
and access your tape drive. These floppies must contain:
|
|
<command>fdisk</command>, <command>disklabel</command>,
|
|
<command>newfs</command>, <command>mount</command>, and
|
|
whichever backup program you use. These programs must be
|
|
statically linked. If you use <command>dump</command>, the
|
|
floppy must contain <command>restore</command>.</para>
|
|
|
|
<para>Third, create backup tapes regularly. Any changes that you make
|
|
after your last backup may be irretrievably lost. Write-protect the
|
|
backup tapes.</para>
|
|
|
|
<para>Fourth, test the floppies (either <filename>boot.flp</filename>
|
|
and <filename>fixit.flp</filename> or the two custom bootable
|
|
floppies you made in step two.) and backup tapes. Make notes of the
|
|
procedure. Store these notes with the bootable floppy, the
|
|
printouts and the backup tapes. You will be so distraught when
|
|
restoring that the notes may prevent you from destroying your backup
|
|
tapes (How? In place of <command>tar xvf /dev/rsa0</command>, you
|
|
might accidently type <command>tar cvf /dev/rsa0</command> and
|
|
over-write your backup tape).</para>
|
|
|
|
<para>For an added measure of security, make bootable floppies and two
|
|
backup tapes each time. Store one of each at a remote location. A
|
|
remote location is NOT the basement of the same office building. A
|
|
number of firms in the World Trade Center learned this lesson the
|
|
hard way. A remote location should be physically separated from
|
|
your computers and disk drives by a significant distance.</para>
|
|
|
|
<example>
|
|
<title>A Script for Creating a Bootable Floppy</title>
|
|
|
|
<programlisting><![ CDATA [#!/bin/sh
|
|
#
|
|
# create a restore floppy
|
|
#
|
|
# format the floppy
|
|
#
|
|
PATH=/bin:/sbin:/usr/sbin:/usr/bin
|
|
|
|
fdformat -q fd0
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Bad floppy, please use a new one"
|
|
exit 1
|
|
fi
|
|
|
|
# place boot blocks on the floppy
|
|
#
|
|
disklabel -w -B /dev/fd0c fd1440
|
|
|
|
#
|
|
# newfs the one and only partition
|
|
#
|
|
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a
|
|
|
|
#
|
|
# mount the new floppy
|
|
#
|
|
mount /dev/fd0a /mnt
|
|
|
|
#
|
|
# create required directories
|
|
#
|
|
mkdir /mnt/dev
|
|
mkdir /mnt/bin
|
|
mkdir /mnt/sbin
|
|
mkdir /mnt/etc
|
|
mkdir /mnt/root
|
|
mkdir /mnt/mnt # for the root partition
|
|
mkdir /mnt/tmp
|
|
mkdir /mnt/var
|
|
|
|
#
|
|
# populate the directories
|
|
#
|
|
if [ ! -x /sys/compile/MINI/kernel ]
|
|
then
|
|
cat << EOM
|
|
The MINI kernel does not exist, please create one.
|
|
Here is an example config file:
|
|
#
|
|
# MINI -- A kernel to get FreeBSD onto a disk.
|
|
#
|
|
machine "i386"
|
|
cpu "I486_CPU"
|
|
ident MINI
|
|
maxusers 5
|
|
|
|
options INET # needed for _tcp _icmpstat _ipstat
|
|
# _udpstat _tcpstat _udb
|
|
options FFS #Berkeley Fast File System
|
|
options FAT_CURSOR #block cursor in syscons or pccons
|
|
options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device
|
|
options NCONS=2 #1 virtual consoles
|
|
options USERCONFIG #Allow user configuration with -c XXX
|
|
|
|
config kernel root on da0 swap on da0 and da1 dumps on da0
|
|
|
|
device isa0
|
|
device pci0
|
|
|
|
device fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
|
|
device fd0 at fdc0 drive 0
|
|
|
|
device ncr0
|
|
|
|
device scbus0
|
|
|
|
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
|
|
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
|
|
|
|
device da0
|
|
device da1
|
|
device da2
|
|
|
|
device sa0
|
|
|
|
pseudo-device loop # required by INET
|
|
pseudo-device gzip # Exec gzipped a.out's
|
|
EOM
|
|
exit 1
|
|
fi
|
|
|
|
cp -f /sys/compile/MINI/kernel /mnt
|
|
|
|
gzip -c -best /sbin/init > /mnt/sbin/init
|
|
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
|
|
gzip -c -best /sbin/mount > /mnt/sbin/mount
|
|
gzip -c -best /sbin/halt > /mnt/sbin/halt
|
|
gzip -c -best /sbin/restore > /mnt/sbin/restore
|
|
|
|
gzip -c -best /bin/sh > /mnt/bin/sh
|
|
gzip -c -best /bin/sync > /mnt/bin/sync
|
|
|
|
cp /root/.profile /mnt/root
|
|
|
|
cp -f /dev/MAKEDEV /mnt/dev
|
|
chmod 755 /mnt/dev/MAKEDEV
|
|
|
|
chmod 500 /mnt/sbin/init
|
|
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
|
|
chmod 555 /mnt/bin/sh /mnt/bin/sync
|
|
chmod 6555 /mnt/sbin/restore
|
|
|
|
#
|
|
# create the devices nodes
|
|
#
|
|
cd /mnt/dev
|
|
./MAKEDEV std
|
|
./MAKEDEV da0
|
|
./MAKEDEV da1
|
|
./MAKEDEV da2
|
|
./MAKEDEV sa0
|
|
./MAKEDEV pty0
|
|
cd /
|
|
|
|
#
|
|
# create minimum filesystem table
|
|
#
|
|
cat > /mnt/etc/fstab <<EOM
|
|
/dev/fd0a / ufs rw 1 1
|
|
EOM
|
|
|
|
#
|
|
# create minimum passwd file
|
|
#
|
|
cat > /mnt/etc/passwd <<EOM
|
|
root:*:0:0:Charlie &:/root:/bin/sh
|
|
EOM
|
|
|
|
cat > /mnt/etc/master.passwd <<EOM
|
|
root::0:0::0:0:Charlie &:/root:/bin/sh
|
|
EOM
|
|
|
|
chmod 600 /mnt/etc/master.passwd
|
|
chmod 644 /mnt/etc/passwd
|
|
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
|
|
|
|
#
|
|
# umount the floppy and inform the user
|
|
#
|
|
/sbin/umount /mnt
|
|
echo "The floppy has been unmounted and is now ready."]]></programlisting>
|
|
|
|
</example>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>After the Disaster</title>
|
|
|
|
<para>The key question is: did your hardware survive? You have been
|
|
doing regular backups so there is no need to worry about the
|
|
software.</para>
|
|
|
|
<para>If the hardware has been damaged. First, replace those parts
|
|
that have been damaged.</para>
|
|
|
|
<para>If your hardware is okay, check your floppies. If you are using
|
|
a custom boot floppy, boot single-user (type <literal>-s</literal>
|
|
at the <prompt>boot:</prompt> prompt). Skip the following
|
|
paragraph.</para>
|
|
|
|
<para>If you are using the <filename>boot.flp</filename> and
|
|
<filename>fixit.flp</filename> floppies, keep reading. Insert the
|
|
<filename>boot.flp</filename> floppy in the first floppy drive and
|
|
boot the computer. The original install menu will be displayed on
|
|
the screen. Select the <literal>Fixit--Repair mode with CDROM or
|
|
floppy.</literal> option. Insert the
|
|
<filename>fixit.flp</filename> when prompted.
|
|
<command>restore</command> and the other programs that you need are
|
|
located in <filename>/mnt2/stand</filename>.</para>
|
|
|
|
<para>Recover each filesystem separately.</para>
|
|
|
|
<indexterm>
|
|
<primary><command>mount</command></primary>
|
|
</indexterm>
|
|
<indexterm><primary>root partition</primary></indexterm>
|
|
<indexterm>
|
|
<primary><command>disklabel</command></primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary><command>newfs</command></primary>
|
|
</indexterm>
|
|
<para>Try to <command>mount</command> (e.g. <command>mount /dev/da0a
|
|
/mnt</command>) the root partition of your first disk. If the
|
|
disklabel was damaged, use <command>disklabel</command> to re-partition and
|
|
label the disk to match the label that you printed and saved. Use
|
|
<command>newfs</command> to re-create the filesystems. Re-mount the root
|
|
partition of the floppy read-write (<command>mount -u -o rw
|
|
/mnt</command>). Use your backup program and backup tapes to
|
|
recover the data for this filesystem (e.g. <command>restore vrf
|
|
/dev/sa0</command>). Unmount the filesystem (e.g. <command>umount
|
|
/mnt</command>) Repeat for each filesystem that was
|
|
damaged.</para>
|
|
|
|
<para>Once your system is running, backup your data onto new tapes.
|
|
Whatever caused the crash or data loss may strike again. Another
|
|
hour spent now may save you from further distress later.</para>
|
|
</sect3>
|
|
|
|
<![ %not.published; [
|
|
|
|
<sect3>
|
|
<title>* I did not prepare for the Disaster, What Now?</title>
|
|
|
|
<para></para>
|
|
</sect3>
|
|
]]>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="floppies">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Julio</firstname>
|
|
<surname>Merino</surname>
|
|
<contrib>Contributed by </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<!-- 24 Dec 2001 -->
|
|
</sect1info>
|
|
|
|
<title>Floppy disks</title>
|
|
|
|
<para>Floppy disks are, nowadays, an old-fashioned medium to
|
|
store/share data. Although, there are still some times when you
|
|
need to use them, because you do not have any other removable
|
|
storage media or you need to use what you have saved in them on
|
|
any other computer.</para>
|
|
|
|
<para>This section will explain how to use floppy disks in
|
|
FreeBSD, that is, formating and copying/restoring data from
|
|
them. But... I really have written this to help you about how to
|
|
create forced-size floppies.</para>
|
|
|
|
<sect2>
|
|
<title>The device</title>
|
|
|
|
<para>Floppy disks are accessed through entries in
|
|
<filename>/dev</filename> (like any other device). To access the
|
|
raw floppy disk you can use <filename>/dev/rfd<replaceable>X</replaceable></filename>,
|
|
where <replaceable>X</replaceable> stands for the drive number, usually 0. When the disk is
|
|
formatted you can use <filename>/dev/fd<replaceable>X</replaceable></filename>, or
|
|
whichever of the other devices named
|
|
<filename>/dev/fd<replaceable>XY</replaceable></filename>, where <replaceable>Y</replaceable> stands for a
|
|
letter. These are all the same.</para>
|
|
|
|
<para>Other important devices are
|
|
<filename>/dev/fd<replaceable>X</replaceable>.<replaceable>size</replaceable></filename>, where <replaceable>size</replaceable> is a floppy disk
|
|
size in kilobytes. These entries are used at low-level format
|
|
time to determine the disk size.</para>
|
|
|
|
<para>Sometimes you will have to (re)create these entries under
|
|
<filename>/dev</filename>. To do it, you can issue:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev && ./MAKEDEV "fd*"</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Formatting</title>
|
|
|
|
<para>A floppy disk needs to be low-level formated before it can
|
|
be used. This is usually done by the vendor but you may want to
|
|
do it to check media integrity or to force the disk capacity to
|
|
be bigger.</para>
|
|
|
|
<para>To format the floppy at a low-level fashion you need to
|
|
use <application>fdformat</application>. This utility expects
|
|
the device name as an argument. We will use those
|
|
<filename>/dev/fd<replaceable>X</replaceable>.<replaceable>size</replaceable></filename> devices, which will allow us
|
|
to format the floppy to its real size, or force them. So you
|
|
insert a new 3.5inch floppy disk in your drive and issue:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/sbin/fdformat /dev/rfd0.1440</userinput></screen>
|
|
|
|
<para>This will take a while... You should notice any disk error
|
|
here (this can help you determining which disks are good or
|
|
bad).</para>
|
|
|
|
<para>To force the floppy disk size, we will use other entries
|
|
in <filename>/dev</filename>. Get the same floppy and issue:
|
|
|
|
<screen>&prompt.root; <userinput>/usr/sbin/fdformat /dev/rfd0.1720</userinput></screen>
|
|
|
|
<para>It will take some more time than before (forced disks are
|
|
slower). When it finishes, you will have a 1720kb floppy disk,
|
|
but for the moment you will not notice any difference. You may
|
|
use other disk sizes that you can find in /dev, but the most
|
|
stable/compatible is the 1720kb for 3.5inch disks.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>The disklabel</title>
|
|
|
|
<para>After low-level formatting the disk, you will need to
|
|
place a disklabel on it. This disklabel will be destroyed
|
|
later, but it is needed by the system to determine the size of
|
|
the disk and its geometry later.</para>
|
|
|
|
<para>The new disklabel will take over the whole disk, and will
|
|
contain all the proper information about the geometry of the
|
|
normal or forced floppy. Take a look to
|
|
<filename>/etc/disktab</filename> now; you will see geometry
|
|
values of all kinds of floppy disks.
|
|
|
|
<para>You can run now <application>disklabel</application>
|
|
like:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/sbin/disklabel -B -r -w /dev/rfd0 <replaceable>fdsize</replaceable></userinput></screen>
|
|
|
|
<para>Replace <replaceable>fdsize</replaceable> with <literal>fd1440</literal>, <literal>fd1720</literal> or whichever size you
|
|
want. The last field instructs disklabel which entry to take
|
|
from <filename>/etc/disktab</filename> to use.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>The filesystem</title>
|
|
|
|
<para>Now your floppy is ready to be high-level formated. This
|
|
will place a new filesystem on it, which will let FreeBSD read
|
|
and write to the disk. After creating the new filesystem, the
|
|
disklabel is destroyed, so if you want to reformat the disk, you
|
|
will have to recreate the disklabel another time.</para>
|
|
|
|
<para>You can choose now which filesystem to use on your floppy.
|
|
You can use UFS or FAT, though UFS is not a good idea for
|
|
floppies. Choose FAT which is nice for floppies.</para>
|
|
|
|
<para>To put a new filesystem on the floppy do this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/sbin/newfs_msdos /dev/fd0</userinput></screen>
|
|
|
|
<para>As we created a disklabel before, <application>newfs</application>
|
|
will be able to fetch disk data and construct the new
|
|
filesystem. And now, your disk is ready for use...</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Using the floppy</title>
|
|
|
|
<para>You have two choices to use the floppy. You can either
|
|
mount the disk with <application>mount_msdos</application>, or you can
|
|
use <application>mtools</application>.
|
|
<application>Mtools</application> are great, but you will need
|
|
to install them from the ports system.</para>
|
|
|
|
<para>Try it; issue a <application>mdir</application>. If you forced the
|
|
disk, you will notice its extra size!</para>
|
|
|
|
<para>A last note about forced disks: they are compatible with
|
|
practically all other operating systems without any external
|
|
utility to read/write them. Microsoft systems will recognize
|
|
them without problems. But note that there may be times when the
|
|
floppy drive itself is not able to read them (this may happen
|
|
with very old drives).</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="backups-floppybackups">
|
|
<title>Backups to Floppies</title>
|
|
|
|
<sect2 id="floppies-using">
|
|
<title>Can I Use floppies for Backing Up My Data?</title>
|
|
<indexterm><primary>backup floppies</primary></indexterm>
|
|
<indexterm><primary>floppy disks</primary></indexterm>
|
|
|
|
<para>Floppy disks are not really a suitable media for
|
|
making backups as:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The media is unreliable, especially over long periods of
|
|
time</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Backing up and restoring is very slow</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>They have a very limited capacity (the days of backing up
|
|
an entire hard disk onto a dozen or so floppies has long since
|
|
passed).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>However, if you have no other method of backing up your data then
|
|
floppy disks are better than no backup at all.</para>
|
|
|
|
<para>If you do have to use floppy disks then ensure that you use good
|
|
quality ones. Floppies that have been lying around the office for a
|
|
couple of years are a bad choice. Ideally use new ones from a
|
|
reputable manufacturer.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="floppies-creating">
|
|
<title>So How Do I Backup My Data to Floppies?</title>
|
|
|
|
<para>The best way to backup to floppy disk is to use
|
|
<command>tar</command> with the <option>-M</option> (multi
|
|
volume) option, which allows backups to span multiple
|
|
floppies.</para>
|
|
|
|
<para>To backup all the files in the current directory and sub-directory
|
|
use this (as root):</para>
|
|
|
|
<screen>&prompt.root; <userinput>tar Mcvf /dev/fd0 *</userinput></screen>
|
|
|
|
<para>When the first floppy is full <command>tar</command> will prompt you to
|
|
insert the next volume (because <command>tar</command> is media independent it
|
|
refers to volumes. In this context it means floppy disk)</para>
|
|
|
|
<screen>Prepare volume #2 for /dev/fd0 and hit return:</screen>
|
|
|
|
<para>This is repeated (with the volume number incrementing) until all
|
|
the specified files have been archived.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="floppies-compress">
|
|
<title>Can I Compress My Backups?</title>
|
|
<indexterm>
|
|
<primary><command>tar</command></primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary><command>gzip</command></primary>
|
|
</indexterm>
|
|
<indexterm><primary>compression</primary></indexterm>
|
|
|
|
<para>Unfortunately, <command>tar</command> will not allow the
|
|
<option>-z</option> option to be used for multi-volume archives.
|
|
You could, of course, <command>gzip</command> all the files,
|
|
<command>tar</command> them to the floppies, then
|
|
<command>gunzip</command> the files again!</para>
|
|
</sect2>
|
|
|
|
<sect2 id="floppies-restoring">
|
|
<title>How Do I Restore My Backups?</title>
|
|
|
|
<para>To restore the entire archive use:</para>
|
|
|
|
<screen>&prompt.root; <userinput>tar Mxvf /dev/fd0</userinput></screen>
|
|
|
|
<para>There are two ways that you can use to restore only
|
|
specific files. First, you can start with the first floppy
|
|
and use:</para>
|
|
|
|
<screen>&prompt.root; <userinput>tar Mxvf /dev/fd0 <replaceable>filename</replaceable></userinput></screen>
|
|
|
|
<para><command>tar</command> will prompt you to insert subsequent floppies until it
|
|
finds the required file.</para>
|
|
|
|
<para>Alternatively, if you know which floppy the file is on then you
|
|
can simply insert that floppy and use the same command as above. Note
|
|
that if the first file on the floppy is a continuation from the
|
|
previous one then <command>tar</command> will warn you that it cannot
|
|
restore it, even if you have not asked it to!</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<!--
|
|
Local Variables:
|
|
mode: sgml
|
|
sgml-declaration: "../chapter.decl"
|
|
sgml-indent-data: t
|
|
sgml-omittag: nil
|
|
sgml-always-quote-attributes: t
|
|
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
|
End:
|
|
-->
|