doc/ja_JP.eucJP/books/handbook/disks/chapter.sgml
Hideyuki KURASHINA d09a40989f Fix typos, style fixes, and so on.
Submitted by:	Ryusuke Suzuki <ryusuke at nucl dot sci dot hokudai dot ac dot jp>
References:	[doc-jp-work 943]
2004-10-03 00:00:19 +00:00

3304 lines
130 KiB
Text

<!--
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.187
$FreeBSD$
-->
<chapter id="disks">
<title>ストレージ</title>
<sect1 id="disks-synopsis">
<title>この章では</title>
<para>この章では、FreeBSD におけるディスクの使用方法を説明します。
これにはメモリディスク、ネットワークに接続されたディスク、
および標準的な SCSI/IDE 記憶デバイスが含まれます。</para>
<para>この章では、以下の分野について説明します。</para>
<itemizedlist>
<listitem><para>物理ディスク上のデータ構成
について記述するために FreeBSD が使用する用語
(パーティションおよびスライス) </para>
</listitem>
<listitem><para>システムにハードディスクを追加する方法</para>
</listitem>
<listitem><para>メモリディスクのような仮想ファイルシステムを設定する方法</para></listitem>
<listitem>
<para>使用できるディスク容量を制限するためにクォータを設定する方法</para>
</listitem>
<listitem>
<para>攻撃者から保護するためにディスクを暗号化する方法</para>
</listitem>
<listitem>
<para>FreeBSD で CD や DVD を作成する方法</para>
</listitem>
<listitem>
<para>バックアップのためのさまざまな記憶メディアオプション</para>
</listitem>
<listitem>
<para>FreeBSD で利用できるバックアッププログラムの使用方法</para>
</listitem>
<listitem>
<para>フロッピーディスクにバックアップする方法</para>
</listitem>
<listitem>
<para>スナップショットとは何か、そしてそれを効果的に使用する方法</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="disks-naming">
<title>デバイス名</title>
<para>以下は、FreeBSD で対応している物理記憶デバイスとそれに対応するデバイス名のリストです。</para>
<table id="disk-naming-physical-table">
<title>物理ディスクへの名前付け</title>
<tgroup cols="2">
<thead>
<row>
<entry>ドライブの種類</entry>
<entry>ドライブのデバイス名</entry>
</row>
</thead>
<tbody>
<row>
<entry>IDE ハードドライブ</entry>
<entry><literal>ad</literal></entry>
</row>
<row>
<entry>IDE CD-ROM ドライブ</entry>
<entry><literal>acd</literal></entry>
</row>
<row>
<entry>SCSI ハードドライブおよび USB 大容量記憶デバイス</entry>
<entry><literal>da</literal></entry>
</row>
<row>
<entry>SCSI CD-ROM ドライブ</entry>
<entry><literal>cd</literal></entry>
</row>
<row>
<entry>その他の非標準的 CD-ROM ドライブ</entry>
<entry>ミツミ CD-ROM は <literal>mcd</literal>,
Sony CD-ROM は <literal>scd</literal>,
松下/パナソニック CD-ROM は <literal>matcd</literal>
<footnote>
<para>&man.matcd.4; ドライバは 2002 年 10 月 5 日に
FreeBSD&nbsp;4.X ブランチから削除されました。
また、FreeBSD&nbsp;5.0 および 5.1 リリースには存在しませんが、
2003 年 6 月 16 日に
FreeBSD&nbsp;5.X ブランチに復帰しました。</para>
</footnote>
</entry>
</row>
<row>
<entry>フロッピードライブ</entry>
<entry><literal>fd</literal></entry>
</row>
<row>
<entry>SCSI テープドライブ</entry>
<entry><literal>sa</literal></entry>
</row>
<row>
<entry>IDE テープドライブ</entry>
<entry><literal>ast</literal></entry>
</row>
<row>
<entry>フラッシュドライブ</entry>
<entry>&diskonchip; フラッシュデバイスは
<literal>fla</literal></entry>
</row>
<row>
<entry>RAID ドライブ</entry>
<entry>&adaptec; AdvancedRAID は <literal>aacd</literal>, &mylex;
は <literal>mlxd</literal> および <literal>mlyd</literal>,
AMI &megaraid; は <literal>amrd</literal>,
Compaq Smart RAID は <literal>idad</literal>,
&tm.3ware; RAID は<literal>twed</literal></entry>
</row>
</tbody>
</tgroup>
</table>
</sect1>
<sect1 id="disks-adding">
<sect1info>
<authorgroup>
<author>
<firstname>David</firstname>
<surname>O'Brien</surname>
<contrib>原作: </contrib>
</author>
</authorgroup>
<!-- 26 Apr 1998 -->
</sect1info>
<title>ディスクの追加</title>
<indexterm>
<primary>ディスク</primary>
<secondary>追加</secondary>
</indexterm>
<para>現在一つしかドライブがない計算機に新しく SCSI
ディスクを追加したいとしましょう。まずコンピュータの電源を切り、
コンピュータやコントローラ、
ドライブの製造元の説明書に従ってドライブを取り付けます。
このあたりの手順は非常に多岐にわたるため、
詳細はこの文書の範囲外です。</para>
<para><username>root</username> ユーザでログインします。
ドライブの取り付け後は <filename>/var/run/dmesg.boot</filename>
を調べて新しいディスクが見つかっていることを確認しておきます。
この例では、新しく付けたドライブは <filename>da1</filename> で、
我々はそれを <filename>/1</filename> にマウントしたいとしましょう
(もし IDE ドライブを付けようとしているのなら、デバイス名は
4.0 以前のシステムでは <filename>wd1</filename>, ほとんどの 4.x
システムでは <filename>ad1</filename> になるでしょう)。</para>
<indexterm><primary>パーティション</primary></indexterm>
<indexterm><primary>スライス</primary></indexterm>
<indexterm><primary><command>fdisk</command></primary></indexterm>
<para>FreeBSD は IBM-PC 互換のコンピュータで動くため、
PC BIOS のパーティションを考慮に入れる必要があります。
これは従来の BSD パーティションとは異なります。PC ディスクは 4 つまでの
BIOS パーティションエントリを持つことができます。
もしそのディスクを本当に FreeBSD 専用にしたい場合には
<emphasis>専用</emphasis> モードで用いることもできます。
そうでない場合には、FreeBSD は PC BIOS
パーティションのどれか一つの中に入れることになります。
FreeBSD では、従来の BSD パーティションと混乱しないように
PC BIOS パーティションのことを<emphasis>スライス</emphasis>と呼びます。
また、別の OS がインストールされていたコンピュータで使われていたが
FreeBSD 専用にするディスク上でもスライスを用いることができます。
これは、他の OS の <command>fdisk</command>
ユーティリティを混乱させないためです。</para>
<para>スライスの場合、ドライブは <filename>/dev/da1s1e</filename>
として加えられるでしょう。これは、SCSI ディスクでユニット番号は 1
(二つめの SCSI ディスク), スライスは 1 (PC BIOS のパーティションが 1) で
BSD パーティション <filename>e</filename>, と読みます。
専用ディスクの場合だと単純に <filename>/dev/da1e</filename>
として加えられるでしょう。</para>
<sect2>
<title>&man.sysinstall.8; の利用</title>
<indexterm>
<primary><application>sysinstall</application></primary>
<secondary>ディスクの追加</secondary>
</indexterm>
<indexterm><primary>su</primary></indexterm>
<procedure>
<step>
<title><application>sysinstall</application> の操作</title>
<para><command>sysinstall</command> の使い易いメニューを利用して、
新しいディスクのパーティション分けやラベル付けを行なうことができます。
<username>root</username> ユーザでログインするか
<command>su</command> コマンドを用いるかして root 権限を取得します。
<command>/stand/sysinstall</command> を実行して <literal>Configure</literal>
メニューに入ります。<literal>FreeBSD Configuration Menu</literal>
の中でスクロールダウンして <literal>Fdisk</literal>
の項目を選びます。</para>
</step>
<step>
<title><application>fdisk</application> パーティションエディタ</title>
<para><application>fdisk</application> では、ディスク全体を
FreeBSD で使うために <userinput>A</userinput> を入力します。
<quote>remain cooperative with any future possible operating systems</quote>
と聞かれたら <literal>YES</literal> と答えます。
<userinput>W</userinput> で変更をディスクに書き込みます。ここで
<userinput>q</userinput> と入力して FDISK エディタを抜けます。
次にマスタブートレコードについて聞かれます。
ここでは既に動いているシステムにディスクを追加しようとしているので
<literal>None</literal> を選びます。</para>
</step>
<step>
<title>ディスクラベルエディタ</title>
<indexterm><primary>BSD パーティション</primary></indexterm>
<para>次に <application>sysinstall</application> を終了し、
もう一度起動する必要があります。同じ手順を踏んで今度は
<literal>Label</literal> オプションを選択し、
<literal>Disk Label Editor</literal> に入ります。
ここでは従来の BSD パーティションを作成します。
一つのディスクは <literal>a</literal> から <literal>h</literal> までのラベルがついた最大
8 つのパーティションを持つことができます。
いくつかのパーティションラベルは特別な用途に用いられます。
<literal>a</literal> パーティションはルートパーティション
(<filename>/</filename>) です。したがって、システムディスク
(つまり起動ディスク) のみに <literal>a</literal>
パーティションがあるべきです。<literal>b</literal>
パーティションはスワップパーティションに用いられ、
複数のディスクにスワップパーティションを作ることができます。
<literal>c</literal> は専用モードにおけるディスク全体、
もしくはスライスモードにおけるスライス全体を指します。
他のパーティションは汎用的に用いられます。</para>
<para><application>sysinstall</application> のラベルエディタ
は、ルートパーティションでもスワップパーティションでもないパーティションには、<literal>e</literal>
パーティションを採用しようとします。ラベルエディタでファイルシステムを作成するには
<userinput>C</userinput> を入力してください。
FS (ファイルシステム) かスワップかを聞かれたら
<literal>FS</literal> を選びマウントポイント
(たとえば <filename>/mnt</filename>) を入力します。
インストール後のモードでディスクを追加する場合、
<application>sysinstall</application> は
<filename>/etc/fstab</filename> にエントリを追加しないため、
ここで指定するマウントポイントはそれほど重要ではありません。</para>
<para>さて、ディスクに新しいラベルを書き込み、
そこにファイルシステムを作る準備が整いました。早速
<command>W</command> を叩いて実行しましょう。
<application>sysinstall</application> からの、
新しいパーティションをマウントできない、
というエラーは無視してください。Label Editor から抜け、
<application>sysinstall</application> を終了します。</para>
</step>
<step>
<title>終了</title>
<para>最後に <filename>/etc/fstab</filename> を編集し、
新しいディスクのエントリを追加します。</para>
</step>
</procedure>
</sect2>
<sect2>
<title>コマンドラインユーティリティの利用</title>
<sect3>
<title>スライスの利用</title>
<para>このセットアップ方法では、
すでにコンピュータに他のオペレーティングシステムがインストールされていても
正しく協調動作することが可能で、他のオペレーティングシステムの
<command>fdisk</command> ユーティリティを混乱させることもありません。
新しいディスクにインストールする場合は、
この方法を用いることが推奨されています。
後述する <literal>専用モード</literal> は、
そうしなければならない理由がある時にのみ、
利用するようにしてください。</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/da1 bs=1k count=1</userinput>
&prompt.root; <userinput>fdisk -BI da1</userinput> # 新しいディスクの初期化
&prompt.root; <userinput>disklabel -B -w -r da1s1 auto</userinput> # ディスクにラベルを付ける
&prompt.root; <userinput>disklabel -e da1s1</userinput> # 作成したディスクラベルを編集し、パーティションを追加する
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>newfs /dev/da1s1e</userinput> # 作成したすべてのパーティションに対してこれを繰り返す
&prompt.root; <userinput>mount /dev/da1s1e /1</userinput> # パーティションをマウントする
&prompt.root; <userinput>vi /etc/fstab</userinput> # <filename>/etc/fstab</filename> に適切なエントリを追加する</screen>
<para>IDE ディスクを使う場合は <filename>da</filename> の部分を
<filename>ad</filename> とします。4.X より前のシステムでは、
(訳注: <filename>ad</filename> ではなく)
<filename>wd</filename> としてください。</para>
</sect3>
<sect3>
<title>専用モード</title>
<indexterm><primary>OS/2</primary></indexterm>
<para>新しいドライブを他の OS と共有しない場合には
<literal>専用</literal> モードを用いることもできます。
このモードはマイクロソフトの OS
を混乱させることを憶えておいてください
(しかし、それらによって壊されることはありません)。 一方、IBM の &os2;
はどんなパーティションでも見つけたら理解できなくても
<quote>専有</quote> します。</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/da1 bs=1k count=1</userinput>
&prompt.root; <userinput>disklabel -Brw da1 auto</userinput>
&prompt.root; <userinput>disklabel -e da1</userinput> # `e' パーティションの作成
&prompt.root; <userinput>newfs -d0 /dev/da1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput> # /dev/da1e エントリの追加
&prompt.root; <userinput>mount /1</userinput></screen>
<para>もう一つの方法は次の通り。</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/da1 count=2</userinput>
&prompt.root; <userinput>disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin</userinput>
&prompt.root; <userinput>newfs /dev/da1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput> # /dev/da1e エントリの追加
&prompt.root; <userinput>mount /1</userinput></screen>
<note><para>&os;&nbsp;5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていない数多くのオプションやパラメタが削除されました。
たとえば <option>-r</option> オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
のマニュアルページを参照してください。</para></note>
</sect3>
</sect2>
</sect1>
<sect1 id="raid">
<title>RAID</title>
<sect2 id="raid-soft">
<title>ソフトウェア RAID</title>
<sect3 id="ccd">
<sect3info>
<authorgroup>
<author>
<firstname>Christopher</firstname>
<surname>Shumway</surname>
<contrib>原作: </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Jim</firstname>
<surname>Brown</surname>
<contrib>改訂: </contrib>
</author>
</authorgroup>
</sect3info>
<indexterm>
<primary>RAID</primary>
<secondary>ソフトウェア</secondary>
</indexterm>
<indexterm>
<primary>RAID</primary>
<secondary>CCD</secondary>
</indexterm>
<title>Concatenated Disk Driver (CCD) の設定</title>
<para>大容量記録に関する解決法を選択する際にもっとも重視すべき要素は、
速度、信頼性、そして費用です。
三つを同時にバランスよく実現することは稀です。
通常、速くて信頼性のある大容量記録装置は高価であり、
費用を抑えようとすると速度または信頼性のどちらかが犠牲になります。</para>
<para>ここで例にあげるシステムの設計においては、
費用が最も重要な要素として、次に速度、最後に信頼性が選択されています。
このシステムでのデータ転送速度は結局のところネットワークによって制限されます。
信頼性は大変重要です。ただし、以下で説明する CCD ドライブは、
データ自体はすでに CD-R に完全にバックアップしてあるもの
(したがって交換は簡単にできます)
の、オンラインデータの役割をさせています。</para>
<para>あなた自身の要求事項を決定することは、
大容量記録に関する解決法を選択することの最初の段階です。
もしあなたの要求事項が費用より速度または信頼性を優先するなら、
解決法はこのシステムとは違うものになるでしょう。</para>
<sect4 id="ccd-installhw">
<title>ハードウェアのインストール</title>
<para>IDE システムディスクに加えて、Western Digital 製の
30GB, 5400RPM の IDE ディスク三台を使って、
以下に説明されているような約 90GB のオンラインストレージとなる
CCD ディスクを作成しました。各 IDE ディスクがそれぞれの
IDE コントローラとケーブルをもっていることが理想的ですが、
費用を最低限にするために、
IDE コントローラを追加していません。その代わり、それぞれの IDE
コントローラがマスタデバイスを一つ、
スレーブデバイスを一つ持つように、
ディスクはジャンパを使って設定されています。</para>
<para>再起動の際に、システム BIOS
が接続されたディスクを自動的に検出するように設定されました。
より重要なことは、FreeBSD が再起動の際にそれらを検出することです。</para>
<programlisting>ad0: 19574MB &lt;WDC WD205BA&gt; [39770/16/63] at ata0-master UDMA33
ad1: 29333MB &lt;WDC WD307AA&gt; [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB &lt;WDC WD307AA&gt; [59598/16/63] at ata1-master UDMA33
ad3: 29333MB &lt;WDC WD307AA&gt; [59598/16/63] at ata1-slave UDMA33</programlisting>
<note><para>FreeBSD がディスクをすべて検出しないときは、
ジャンパを正しく設定してあるか確認してください。多くの IDE
ドライブは <quote>ケーブルセレクト</quote>
ジャンパを持っています。
これはマスタ/スレーブの関係を設定するジャンパでは
<emphasis>ありません</emphasis>。ドライブの文書を参照して、
正しいジャンパ設定を見つけてください。</para></note>
<para>次に、ファイルシステムの一部分として、
それらをどのように接続するのかを考慮します。&man.vinum.8;
<!-- Furukawa:2004/1/8
should be refer this after creating vinum/chapter.sgml
(<xref linkend="vinum-vinum">)
-->
および &man.ccd.4;
の両方を検討すべきでしょう。この設定では、&man.ccd.4;
を選択しました。</para>
</sect4>
<sect4 id="ccd-setup">
<title>CCD の設定</title>
<para>&man.ccd.4; ドライバは、いくつかの同じディスクを使って、
一つの論理的ファイルシステムに連結することができます。
&man.ccd.4; を使用するためには、カーネルが &man.ccd.4;
に対応している必要があります。
次の行をカーネルコンフィギュレーションファイルに追加して、
カーネルを再構築し、再インストールしてください。</para>
<programlisting>pseudo-device ccd 4</programlisting>
<para>5.X システムでは、
上記の代わりに次の行を追加しなければなりません。</para>
<programlisting>device ccd</programlisting>
<note><para>FreeBSD&nbsp;5.X では &man.ccd.4;
デバイスの数を指定する必要はありません。&man.ccd.4;
デバイスドライバは自己複製するようになりました &mdash;
新しいデバイスインスタンスは、
必要に応じてその都度自動的に作成されます。</para></note>
<para>FreeBSD 3.0 以降では、
カーネルモジュールを読み込んで
&man.ccd.4; に対応することもできます。</para>
<para>&man.ccd.4; を設定するために、まず &man.disklabel.8;
を使用してディスクにラベルを書き込まなくてはなりません。</para>
<programlisting>disklabel -r -w ad1 auto
disklabel -r -w ad2 auto
disklabel -r -w ad3 auto</programlisting>
<para>このコマンドはディスク全体を示す
<devicename>ad1c</devicename>,
<devicename>ad2c</devicename> および
<devicename>ad3c</devicename> に対するディスクラベルを作成します。</para>
<note><para>&os;&nbsp;5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていない数多くのオプションやパラメタが削除されました。
たとえば <option>-r</option> オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
のマニュアルページを参照してください。</para></note>
<para>次に、ディスクラベルのタイプを変更します。
&man.disklabel.8; を使用してディスクラベルを編集してください。</para>
<programlisting>disklabel -e ad1
disklabel -e ad2
disklabel -e ad3</programlisting>
<para>このコマンドは <envar>EDITOR</envar>
環境変数に設定されているエディタ (一般的には &man.vi.1;)
でそれぞれのディスクの現在のディスクラベルを開きます。</para>
<para>変更されていないディスクラベルは以下のようになります。</para>
<programlisting>8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)</programlisting>
<para>&man.ccd.4; で使用する <literal>e</literal>
パーティションを作成します。通常では <literal>c</literal>
パーティションの行をコピーすれば良いでしょう。しかし、
<option>fstype</option> は <userinput>4.2BSD</userinput>
でなければ <emphasis>なりません</emphasis>。
ディスクラベルは以下のようになるでしょう。</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>ファイルシステムの構築</title>
<para><devicename>ccd0c</devicename>
デバイスノードはまだ存在していないかも知れません。
そのときは、次のコマンドを実行して作成してください。</para>
<programlisting>cd /dev
sh MAKEDEV ccd0</programlisting>
<note><para>FreeBSD 5.0 では &man.devfs.5; が
<filename>/dev</filename> 以下のデバイスノードを自動的に管理するので、
<command>MAKEDEV</command>を使用する必要はありません。</para></note>
<para>すべてのディスクにラベルを書き込んだので、
&man.ccd.4; を構築してください。
これを行うためには、以下のようなオプションで
&man.ccdconfig.8; を使います。</para>
<programlisting>ccdconfig ccd0<co id="co-ccd-dev"> 32<co id="co-ccd-interleave"> 0<co id="co-ccd-flags"> /dev/ad1e<co id="co-ccd-devs"> /dev/ad2e /dev/ad3e</programlisting>
<para>各オプションの使用法と意味は以下の通りです。</para>
<calloutlist>
<callout arearefs="co-ccd-dev">
<para>一番目の引数は設定するデバイスです。この例の場合は
<devicename>/dev/ccd0c</devicename> です。
<filename>/dev/</filename> の部分はオプションです。</para>
</callout>
<callout arearefs="co-ccd-interleave">
<para>ファイルシステムに対するインタリーブです。インタリーブは、
ディスクブロック内のストライプサイズを定義します。
ディスクブロックは通常 512 バイトです。したがって 32
インタリーブは 16,384 バイトとなります。</para>
</callout>
<callout arearefs="co-ccd-flags">
<para>これは &man.ccdconfig.8; に対するフラグです。
ドライブミラーリングを有効にしたい場合、
ここにフラグを指定します。
この設定では &man.ccd.4; に対するミラーリングは提供しませんので、
0 (ゼロ) を指定しています。</para>
</callout>
<callout arearefs="co-ccd-devs">
<para>この &man.ccdconfig.8; に対する最後の引数は、
アレイ内に置くデバイスです。
それぞれのデバイスに対する完全なパス名を使用します。</para>
</callout>
</calloutlist>
<para>&man.ccdconfig.8; を実行すると &man.ccd.4; が設定されます。
これでファイルシステムをインストールすることが可能です。
オプションについて &man.newfs.8; を参照するか、
次のように実行してください。</para>
<programlisting>newfs /dev/ccd0c</programlisting>
</sect4>
<sect4 id="ccd-auto">
<title>自動的に設定する</title>
<para>一般的に、再起動するたびに &man.ccd.4;
をマウントしたいと思うでしょう。これを行うために、
まず設定をしなければなりません。次のコマンドを用いて、
現在の設定を <filename>/etc/ccd.conf</filename> に書き出します。</para>
<programlisting>ccdconfig -g &gt; /etc/ccd.conf</programlisting>
<para><filename>/etc/ccd.conf</filename> が存在すると、
再起動の際に <command>/etc/rc</command> スクリプトが
<command>ccdconfig -C</command> を実行します。これにより、
&man.ccd.4; は自動的に設定された後、マウントされます。</para>
<note><para>シングルユーザモードで起動している場合には、
&man.ccd.4; を &man.mount.8; する前に、
アレイを設定するために次のコマンドを実行する必要があります。</para>
<programlisting>ccdconfig -C</programlisting>
</note>
<para>自動的に &man.ccd.4; をマウントするには、
<filename>/etc/fstab</filename> に &man.ccd.4;
のエントリ追加します。このように設定すると起動時にマウントされます。</para>
<programlisting>/dev/ccd0c /media ufs rw 2 2</programlisting>
</sect4>
</sect3>
<sect3 id="vinum">
<title>Vinum ボリュームマネージャ</title>
<indexterm>
<primary>RAID</primary>
<secondary>ソフトウェア</secondary>
</indexterm>
<indexterm>
<primary>RAID</primary>
<secondary>Vinum</secondary>
</indexterm>
<para>Vinum ボリュームマネージャは、
仮想ディスクドライブを実装したブロックデバイスドライバです。
Vinum は、ディスクハードウェアをブロックデバイスインタフェースから
分離し、データを配置します。
その結果、ディスク記憶装置を従来のスライスで扱うのと比較して、
柔軟性、性能および信頼性が向上しています。
&man.vinum.8; は RAID-0, RAID-1 および RAID-5 モデル、
そしてそれぞれの組合せを実装しています。</para>
<para>&man.vinum.8; の詳細については Vinum ボリュームマネジャ
<!-- Furukawa:2004/1/8
should be refer this after creating vinum/chapter.sgml
<xref linkend="vinum-vinum">
-->
を参照してください。</para>
</sect3>
</sect2>
<sect2 id="raid-hard">
<title>ハードウェア RAID</title>
<indexterm>
<primary>RAID</primary>
<secondary>ハードウェア</secondary>
</indexterm>
<para>FreeBSD は、さまざまなハードウェア <acronym>RAID</acronym>
コントローラにも対応しています。これらのデバイスはアレイを制御するための
特別なソフトウェアを FreeBSD で必要することなく、
<acronym>RAID</acronym> サブシステムを制御します。</para>
<para>カード上の <acronym>BIOS</acronym> を使用して、
カードはそれ自身でディスク操作のほとんどを制御します。以下は
<acronym>Promise IDE RAID</acronym>
コントローラを使用した設定の簡単な説明です。
このカードがインストールされ、システムが起動したときには、
情報の入力を促すプロンプトを表示します。
指示にしたがってカードの設定画面に進んでください。
接続されたドライブを組み合わせるように設定することができます。
設定後、ディスクは FreeBSD に対して単一のドライブのように見えます。
他の <acronym>RAID</acronym> レベルは適宜設定できます。</para>
</sect2>
<sect2>
<title>ATA RAID1 アレイの再構築</title>
<para>FreeBSD はアレイ内の障害ディスクを動作中に交換できます。
ただし、再起動前にそれを検知していることが必要です。</para>
<para><filename>/var/log/messages</filename> または &man.dmesg.8;
の出力に次のような行があるでしょう。</para>
<programlisting>ad6 on monster1 suffered a hard error.
ad6: READ command timeout tag=0 serv=0 - resetting
ad6: trying fallback to PIO mode
ata3: resetting devices .. done
ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11) status=59 error=40
ar0: WARNING - mirror lost</programlisting>
<para>&man.atacontrol.8; を使用して詳細を調べてください。</para>
<screen>&prompt.root; <userinput>atacontrol list</userinput>
ATA channel 0:
Master: no device present
Slave: acd0 &lt;HL-DT-ST CD-ROM GCR-8520B/1.00&gt; ATA/ATAPI rev 0
ATA channel 1:
Master: no device present
Slave: no device present
ATA channel 2:
Master: ad4 &lt;MAXTOR 6L080J4/A93.0500&gt; ATA/ATAPI rev 5
Slave: no device present
ATA channel 3:
Master: ad6 &lt;MAXTOR 6L080J4/A93.0500&gt; ATA/ATAPI rev 5
Slave: no device present
&prompt.root; <userinput>atacontrol status ar0</userinput>
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED</screen>
<procedure>
<step>
<para>ディスクを安全に取り外すために、
まずアレイから切り離します。</para>
<screen>&prompt.root; <userinput>atacontrol detach 3</userinput></screen>
</step>
<step>
<para>ディスクを取り外します。</para>
</step>
<step>
<para>スペアのディスクを取り付けます。</para>
<screen>&prompt.root; <userinput>atacontrol attach 3</userinput>
Master: ad6 &lt;MAXTOR 6L080J4/A93.0500&gt; ATA/ATAPI rev 5
Slave: no device present</screen>
</step>
<step>
<para>アレイを再構築します。</para>
<screen>&prompt.root; <userinput>atacontrol rebuild ar0</userinput></screen>
</step>
<step>
<para>再構築コマンドは完了するまで他の操作を受け付けません。しかし、
もう一つ別のターミナルを
(<keycombo action="simul"><keycap>Alt</keycap>
<keycap>F<replaceable>n</replaceable></keycap></keycombo>
を押して) 開き、
次のコマンドを実行すると進行状態を確認することができます。</para>
<screen>&prompt.root; <userinput>dmesg | tail -10</userinput>
[output removed]
ad6: removed from configuration
ad6: deleted from ar0 disk1
ad6: inserted into ar0 disk1 as spare
&prompt.root; <userinput>atacontrol status ar0</userinput>
ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed</screen>
</step>
<step>
<para>操作が完了するまでお待ちください。</para>
</step>
</procedure>
</sect2>
</sect1>
<sect1 id="creating-cds">
<sect1info>
<authorgroup>
<author>
<firstname>Mike</firstname>
<surname>Meyer</surname>
<contrib>寄稿: </contrib>
<!-- mwm@mired.org -->
</author>
</authorgroup>
<!-- Apr 2001 -->
</sect1info>
<title>光メディア (CD &amp; DVD) の作成と使用</title>
<indexterm>
<primary>CDROM</primary>
<secondary>作成</secondary>
</indexterm>
<sect2>
<title>はじめに</title>
<para>CD は他の一般的なディスクと異なる様々な特徴を持っています。
そもそもユーザが書き込むことができません。
また遅延なしで連続的に読み出せるように、
トラック間をヘッドが移動しないですむようにデザインされています。
さらにこのサイズのメディアの中ではシステムをまたぐデータの
移動が比較的簡単でもあります。</para>
<para>CD はトラックの概念を持っていますが、
これはデータを連続的に読み出すためのものであってディスクの物理特性ではありません。
FreeBSD で CD を作成するには、まず CD
のトラックとなるデータファイルを用意し、
そのトラックを CD に書き込みます。</para>
<indexterm><primary>ISO 9660</primary></indexterm>
<indexterm>
<primary>ファイルシステム</primary>
<secondary>ISO 9660</secondary>
</indexterm>
<para>ISO 9660 ファイルシステムはこの様な差異を扱うべく設計されました。
その結果、ファイルシステムは一般的に使用するのに差しつかえない程度に
制限されて標準化されています。幸いなことに、ISO 9660
ファイルシステムには拡張機構が提供されています。適切に書かれた CD は、
拡張機構に対応したシステムでは拡張を利用して、そうでないシステムでは
拡張機構を使用しない範囲で動作するようになっています。</para>
<indexterm>
<primary><filename role="package">sysutils/mkisofs</filename></primary>
</indexterm>
<para><filename role="package">sysutils/mkisofs</filename> プログラムは
ISO 9660 ファイルシステムを含むデータファイルを作成するのに使われます。
これには様々な拡張をサポートするオプションがあり、
以下で説明します。 このソフトウェアは、ports の
<filename role="package">sysutils/mkisofs</filename>
からインストールすることができます。</para>
<indexterm>
<primary>CD ライタ</primary>
<secondary>ATAPI</secondary>
</indexterm>
<para>CD に書き込むためのツールは、お使いの CD ライタが ATAPI
接続か否かにも依存します。ATAPI CD ライタなら、ベースシステムの一部である
<command><link linkend="burncd">burncd</link></command>
プログラムを使います。SCSI や USB の CD ライタなら、ports の
<filename role="package">sysutils/cdrecord</filename>
をインストールして
<command><link linkend="cdrecord">cdrecord</link></command>
プログラムを使うべきでしょう。</para>
<para><command>burncd</command>
が対応しているドライブは限定されています。
ドライブが対応されているかどうかを確認するには、
<ulink url="http://www.freebsd.dk/ata/">CD-R/RW supported
drives</ulink> にある一覧を見てください。</para>
<note>
<indexterm>
<primary>CD ライタ</primary>
<secondary>ATAPI/CAM ドライバ</secondary>
</indexterm>
<para>&os;&nbsp;5.X または &os;&nbsp;4.8-RELEASE
以降のバージョンを使用している場合、
<link linkend="atapicam">ATAPI/CAM モジュール</link> を使用すると
ATAPI ハードウェア上で SCSI ドライブ用の
<command><link linkend="cdrecord">cdrecord</link></command>
および他のツールを使用できるようになります。</para>
</note>
</sect2>
<sect2 id="mkisofs">
<title>mkisofs</title>
<para><filename role="package">sysutils/mkisofs</filename> は &unix;
ファイルシステムの名前空間におけるディレクトリツリーのイメージとして
ISO 9660 ファイルシステムを作成します。
最も簡単な使い方は以下の通りです。</para>
<screen>&prompt.root; <userinput>mkisofs -o <replaceable>imagefile.iso</replaceable> <replaceable>/path/to/tree</replaceable></userinput></screen>
<indexterm>
<primary>ファイルシステム</primary>
<secondary>ISO 9660</secondary>
</indexterm>
<para>このコマンドは <replaceable>/path/to/tree</replaceable>
以下のディレクトリツリーのコピーである ISO 9660
ファイルシステムを含んだ <replaceable>imagefile.iso</replaceable>
ファイルを作成します。この過程において、ファイル名は標準的な ISO 9660
ファイルシステムの制限に適合するようなファイル名に対応づけられ、
ISO ファイルシステムでファイル名を文字化できないファイルは除外されます。</para>
<indexterm>
<primary>ファイルシステム</primary>
<secondary>HFS</secondary>
</indexterm>
<indexterm>
<primary>ファイルシステム</primary>
<secondary>Joliet</secondary>
</indexterm>
<para>この制限を回避するために利用できるオプションはいくつもあります。
特に <option>-R</option> オプションは &unix; システムで標準的な Rock Ridge
拡張を有効にします。<option>-J</option> オプションは Microsoft
のシステムで標準的な Joliet 拡張を有効にし、
<option>-hfs</option> オプションは &macos; で使用されている
HFS ファイルシステムを作成するために使われます。</para>
<para>FreeBSD でしか使わないのであれば、<option>-U</option>
オプションを使用するとあらゆるファイル名制限を無効にできます。
さらに <option>-R</option> オプションとともに使うことで
FreeBSD と同一のファイルシステムイメージを作成できますが、
これは ISO 9660 標準の多くを無視しています。</para>
<indexterm>
<primary>CDROM</primary>
<secondary>ブータブル (起動可能な) CDROM の作成</secondary>
</indexterm>
<para>一般的に使われる最後のオプションは <option>-b</option> オプションです。
これは <quote>El Torito</quote> ブータブル CD
を作成するのに使う起動イメージのありかを指定します。
このオプションは引数として起動イメージへのパスを、
CD に書き込まれるディレクトリツリーの頂点からの相対位置で取ります。
したがって <filename>/tmp/myboot</filename> がブート可能な
FreeBSD システムで <filename>/tmp/myboot/boot/cdboot</filename>
にブートイメージがあるならば、以下のようにすることで ISO 9660
ファイルシステムのイメージを <filename>/tmp/bootable.iso</filename>
に作成することができます。</para>
<screen>&prompt.root; <userinput>mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot</userinput></screen>
<para>この後、カーネルで <devicename>vn</devicename> (FreeBSD&nbsp;4.X)
または <devicename>md</devicename> (FreeBSD&nbsp;5.X)
が設定されていれば、
ファイルシステムを以下のようにしてマウントすることができます。</para>
<screen>&prompt.root; <userinput>vnconfig -e vn0c /tmp/bootable.iso</userinput>
&prompt.root; <userinput>mount -t cd9660 /dev/vn0c /mnt</userinput></screen>
<para>FreeBSD&nbsp;4.X および FreeBSD&nbsp;5.X に対しては以下の通りです。</para>
<screen>&prompt.root; <userinput>mdconfig -a -t vnode -f /tmp/bootable.iso -u 0</userinput>
&prompt.root; <userinput>mount -t cd9660 /dev/md0 /mnt</userinput></screen>
<para><filename>/mnt</filename> と
<filename>/tmp/myboot</filename> が同一かどうか確認してください。</para>
<para><filename role="package">sysutils/mkisofs</filename>
には挙動を細かく制御するために他にもたくさんのオプションがあります。
特に、ISO 9660
レイアウトの変更や Joliet および HFS ディスク作成などの
詳細は &man.mkisofs.8; のマニュアルページをご覧ください。</para>
</sect2>
<sect2 id="burncd">
<title>burncd</title>
<indexterm>
<primary>CDROM</primary>
<secondary>書き込み</secondary>
</indexterm>
<para>あなたが持っているのが ATAPI CD ライタなら、CD に ISO
イメージを書き込むために <command>burncd</command> コマンドが使えます。
<command>burncd</command> はベースシステムの一部で
<filename>/usr/sbin/burncd</filename> としてインストールされています。
使い方はとても単純でオプションも少ししかありません。</para>
<screen>&prompt.root; <userinput>burncd -f <replaceable>cddevice</replaceable> data <replaceable>imagefile.iso</replaceable> fixate</userinput></screen>
<para>以上のコマンドは <replaceable>imagefile.iso</replaceable>
のコピーを <replaceable>cddevice</replaceable> に書き込みます。
デフォルトのデバイスは <filename>/dev/acd0c</filename> です。
書き込み速度や操作完了後に CD を自動的に取り出す方法、
オーディオデータの書き込みなどのオプションについては &man.burncd.8;
を見てください。</para>
</sect2>
<sect2 id="cdrecord">
<title>cdrecord</title>
<para>あなたが持っている CD ライタが ATAPI ではなければ、
CD を書き込むのに <command>cdrecord</command> を使う必要があります。
<command>cdrecord</command> はベースシステムの一部ではなく、
<filename role="package">sysutils/cdrtools</filename> の port または
適切な package を利用してインストールしなければなりません。
なお、ベースシステムを変更するとバイナリに矛盾が発生し、
<quote>コースター</quote> を作ってしまうおそれがあります。
したがって、システムをアップグレードする度にこの port も作り直すか、
あるいは<link
linkend="stable">FreeBSD の安定版を追いかけている</link>のならば、
新しいバージョンが利用できるようになった時に ports
をアップグレードする必要があります。</para>
<para><command>cdrecord</command> にはたくさんのオプションがありますが、
基本的な使い方は <command>burncd</command> よりもさらに簡単です。
ISO 9660 イメージを書き込むには以下のようにします。</para>
<screen>&prompt.root; <userinput>cdrecord dev=<replaceable>device</replaceable> <replaceable>imagefile.iso</replaceable></userinput></screen>
<para><command>cdrecord</command> のトリッキーな部分は、使用する
<option>dev</option> を見つけるところにあります。
適切な設定を見つけるためには <command>cdrecord</command> の
<option>-scanbus</option> フラグを使います。
たとえば、以下のような結果が出力されるでしょう。</para>
<indexterm>
<primary>CDROM</primary>
<secondary>書き込み</secondary>
</indexterm>
<screen>&prompt.root; <userinput>cdrecord -scanbus</userinput>
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 J&ouml;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>リストにあるデバイスに対する適切な <option>dev</option>
の値がここに示されています。あなたの CD ライタをこのリストから見つけ、
カンマで区切られた 3 つの数値を <option>dev</option>
の値として使ってください。この例では CRW デバイスは 1,5,0
なので、適切な入力は <option>dev=1,5,0</option> となります。
値を明示するもっと簡単な方法もあります。詳細は &man.cdrecord.1;
を見てください。そこにはオーディオトラックを書き込む方法や、
書き込み速度その他を操作する方法も書かれています。</para>
</sect2>
<sect2 id="duplicating-audiocds">
<title>オーディオ CD の複製</title>
<para>CD からオーディオデータを連続したファイルに展開し、ブランク CD
にこれらのファイルを書き込むことで、オーディオ CD
を複製することができます。
この手順は ATAPI および SCSI ドライブの間で少し異なります。</para>
<procedure>
<title>SCSI ドライブ</title>
<step>
<para><command>cdda2wav</command> を使用してオーディオを展開します。</para>
<screen>&prompt.user; <userinput>cdda2wav -v255 -D2,0 -B -Owav</userinput></screen>
</step>
<step>
<para><command>cdrecord</command> を使用して
<filename>.wav</filename> ファイルに書き出します。</para>
<screen>&prompt.user; <userinput>cdrecord -v dev=<replaceable>2,0</replaceable> -dao -useinfo *.wav</userinput></screen>
<para><xref linkend="cdrecord"> に説明されているように
<replaceable>2.0</replaceable>
が適切に指定されていることを確かめてください。</para>
</step>
</procedure>
<procedure>
<title>ATAPI ドライブ</title>
<step>
<para>ATAPI CD ドライバでは、それぞれのトラックを
<filename>/dev/acd<replaceable>d</replaceable>t<replaceable>nn</replaceable></filename> のように利用できます。
ここで <replaceable>d</replaceable> はドライブ番号であり、
<replaceable>nn</replaceable> は二桁十進のトラック番号です。
一桁の場合 0 を前に付加する必要があります。
したがって、一番目のディスクの一番目のトラックは
<filename>/dev/acd0t01</filename>、二番目のトラックは
<filename>/dev/acd0t02</filename>、三番目のトラックは
<filename>/dev/acd0t03</filename> などとなります。</para>
<para>適切なデバイスファイルが <filename>/dev</filename>
に存在することを確かめてください。
存在しなければ、たとえば次のようにして作成します。</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV acd0t99</userinput></screen>
<note><para>FreeBSD 5.0 では &man.devfs.5; が
<filename>/dev</filename> にエントリを自動的に作成、
管理するので、<command>MAKEDEV</command>
を使用する必要はありません。</para></note>
</step>
<step>
<para>&man.dd.1; を使用して各トラックを展開します。
ファイルを展開する際、ブロックサイズを指定しなければなりません。</para>
<screen>&prompt.root; <userinput>dd if=/dev/acd0t01 of=track1.cdr bs=2352</userinput>
&prompt.root; <userinput>dd if=/dev/acd0t02 of=track2.cdr bs=2352</userinput>
...</screen>
</step>
<step>
<para><command>burncd</command> を使用して、
展開したファイルをディスクに書き込みます。
これらがオーディオファイルであること、
そして書き込みが終了したときに <command>burncd</command>
がディスクを固定 (fixate) することを明示しなければなりません。</para>
<screen>&prompt.root; <userinput>burncd -f <replaceable>/dev/acd0c</replaceable> audio track1.cdr track2.cdr <replaceable>...</replaceable> fixate</userinput></screen>
</step>
</procedure>
</sect2>
<sect2 id="imaging-cd">
<title>データ CD の複製</title>
<para>データ CD を、<filename role="package">sysutils/mkisofs</filename>
を用いて作成されたイメージファイルと機能的に等価なイメージファイルにコピーできます。
これを使用して、すべてのデータ CD を複製することができます。
ここでの例は CDROM デバイスが <devicename>acd0</devicename>
であるとしています。あなたの CDROM デバイスに読み替えてください。
CDROM の場合には、パーティション全体またはディスク全体
を指定するために <literal>c</literal>
をデバイス名の後に追加しなければなりません。</para>
<screen>&prompt.root; <userinput>dd if=/dev/acd0c of=file.iso bs=2048</userinput></screen>
<para>これでディスクイメージを取り出すことができました。
すでに説明した方法を用いて CD に書き込むことができます。</para>
</sect2>
<sect2 id="mounting-cd">
<title>データ CD の使用</title>
<para>さて、標準的なデータ CDROM を作成したので、
おそらく次はそれをマウントしてデータを読み出したいと思うでしょう。
デフォルトでは &man.mount.8; は、ファイルシステムタイプを
<literal>ufs</literal> としています。
次のように実行しようとすると、</para>
<screen>&prompt.root; <userinput>mount /dev/cd0c /mnt</userinput></screen>
<para><errorname>Incorrect super block</errorname>
というエラーが返されてマウントできないでしょう。
CDROM は <literal>UFS</literal> ファイルシステムではないために、
このような手順でマウントしようすると失敗します。
ファイルシステムのタイプが <literal>ISO9660</literal> であると
&man.mount.8; に教えさえすれば、すべてはうまく動作します。
&man.mount.8; に <option>-t cd9660</option>
オプションを指定することでこれを行います。
たとえば <devicename>/dev/cd0c</devicename> の CDROM デバイスを
<filename>/mnt</filename> にマウントしたい場合は、
以下のように実行します。</para>
<screen>&prompt.root; <userinput>mount -t cd9660 /dev/cd0c /mnt</userinput></screen>
<para>使用している CDROM インタフェースによっては、
デバイス名
(この例では <devicename>/dev/cd0c</devicename>)
が異なるかもしれないことに注意してください。
また、<option>-t cd9660</option> オプションは、単に
&man.mount.cd9660.8; を実行します。
この例を以下のように短縮することもできます。</para>
<screen>&prompt.root; <userinput>mount_cd9660 /dev/cd0c /mnt</userinput></screen>
<para>一般的にこの方法では、すべてのメーカの データ CDROM
を使用することができます。しかしながら、特定の ISO 9660
拡張が施されたディスクでは奇妙な動作をするかもしれません。
たとえば Joliet ディスクは、
すべてのファイル名を 2 バイトの Unicode 文字で格納します。
FreeBSD カーネルは (まだ) Unicode を理解できないので、
非英語文字はクエスチョンマークで表示されます
(FreeBSD 4.3 以降を使用している場合、CD9660 ドライバには適切な Unicode
変換表を読み込むための急ごしらえのフックが含まれています。
いくつかの共通のエンコードに対するモジュールは
<filename role="package">sysutils/cd9660_unicode</filename> port
から利用可能です)。</para>
<para>CDROM をマウントしようとする時に、
<errorname>Device not configured</errorname>
と表示されるかもしれません。これは、ディスクがトレーにないと
CDROM ドライブが判断しているか、
ドライブがバス上に認識できないことを通常意味します。
ディスクが挿入されたことを CDROM ドライブが認識するには数秒かかりますので、
辛抱強く待ってください。</para>
<para>バスのリセットに返答するためのタイムアウトが短いために、時々 SCSI
CDROM は認識に失敗するかもしれません。SCSI CDROM を持っている場合は、
次のオプションをカーネルコンフィギュレーションファイルに追加して、
<link linkend="kernelconfig-building">カーネルを再構築してください</link>。</para>
<programlisting>options SCSI_DELAY=15000</programlisting>
<para>これより、SCSI バスを起動時に 15 秒間停止させて、
CDROM ドライブがバスリセットに応答する機会を与えます。</para>
</sect2>
<sect2 id="rawdata-cd">
<title>Raw データ CD の書き込み</title>
<para>ISO 9660 ファイルシステムを作成すること無く、
ファイルを直接 CD に書き込むこともできます。
この方法をバックアップ目的に使用している人もいます。
これは、標準 CD を書き込むよりもさらに速く実行することができます。</para>
<screen>&prompt.root; <userinput>burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate</userinput></screen>
<para>このように CD に書き込まれたデータを取得するには、
raw デバイスノードからデータを読み込まなくてはなりません。</para>
<screen>&prompt.root; <userinput>tar xzvf /dev/acd1c</userinput></screen>
<para>このディスクを通常の CDROM としてマウントすることはできません。
このような CDROM は FreeBSD を除いて、
他のすべてのオペレーティングシステムでは読み込むことはできません。
CD をマウントしたいか、
その他のオペレーティングシステムとデータを共有したい場合は、
上記に説明したように
<filename role="package">sysutils/mkisofs</filename>
を使用しなくてはなりません。</para>
</sect2>
<sect2 id="atapicam">
<indexterm>
<primary>CD ライタ</primary>
<secondary>ATAPI/CAM ドライバ</secondary>
</indexterm>
<title>ATAPI/CAM ドライバの使用</title>
<para>このドライバは、ATAPI デバイス (CD-ROM, CD-RW, DVD ドライブなど)
へ SCSI サブシステムを通じてアクセスすることを可能にします。
これにより、<filename role="package">sysutils/cdrdao</filename> または
&man.cdrecord.1; のようなアプリケーションが使用できるようになります。</para>
<para>このドライバを使用するためには、
カーネルコンフィギュレーションファイルに次の行を追加する必要があります。</para>
<programlisting>device atapicam
device scbus
device cd
device pass</programlisting>
<para>次の行もカーネルコンフィギュレーションファイルに必要です。</para>
<programlisting>device ata
device atapicd</programlisting>
<para>両方がすでに存在しなければなりません。</para>
<para>それから再構築し、新しいカーネルをインストールし、
コンピュータを再起動します。
起動プロセス中にディスクライタは以下のように表示されるでしょう。</para>
<screen>acd0: CD-RW &lt;MATSHITA CD-RW/DVD-ROM UJDA740&gt; at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: &lt;MATSHITA CDRW/DVD UJDA740 1.00&gt; Removable CD-ROM SCSI-0 device
cd0: 16.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed</screen>
<para>ドライブは <filename>/dev/cd0</filename>
デバイスを通じてアクセスすることが可能となります。
たとえば、次のようにして CD-ROM を <filename>/mnt</filename>
にマウントします。</para>
<screen>&prompt.root; <userinput>mount -t cd9660 <replaceable>/dev/cd0c</replaceable> /mnt</userinput></screen>
<para><username>root</username> 権限で次のコマンドを実行して、
ライタの SCSI アドレスを得ることができます。</para>
<screen>&prompt.root; <userinput>camcontrol devlist</userinput>
&lt;MATSHITA CDRW/DVD UJDA740 1.00&gt; at scbus1 target 0 lun 0 (pass0,cd0)</screen>
<para>したがって、<literal>1,0,0</literal> が &man.cdrecord.1;
およびその他の SCSI アプリケーションで使用する SCSI アドレスです。</para>
<para>ATAPI/CAM および SCSI システムの詳細は &man.atapicam.4; および
&man.cam.4; マニュアルページを参照してください。</para>
</sect2>
</sect1>
<sect1 id="floppies">
<sect1info>
<authorgroup>
<author>
<firstname>Julio</firstname>
<surname>Merino</surname>
<contrib>原作: </contrib>
</author>
</authorgroup>
<!-- 24 Dec 2001 -->
<authorgroup>
<author>
<firstname>Martin</firstname>
<surname>Karlsson</surname>
<contrib>改訂: </contrib>
</author>
</authorgroup>
<!-- 27 Apr 2003 -->
</sect1info>
<title>フロッピーディスクの作成と使用</title>
<para>フロッピーディスクにデータを格納することはしばしば役にたちます。
たとえば、ある人が他のリムーバブル記録メディアを何も持っていないときや、
小さなデータを他のコンピュータに移動させる必要があるときです。</para>
<para>この節では、FreeBSD におけるフロッピーディスクの使用方法を説明します。
主に 3.5 インチの DOS フロッピーのフォーマットと操作方法を扱いますが、
他のフロッピーディスクの形式についても概念は似ています。</para>
<sect2>
<title>フロッピーのフォーマット</title>
<sect3>
<title>デバイス</title>
<para>他のデバイスと同様に、フロッピーディスクは
<filename>/dev</filename> にあるエントリを通じてアクセスされます。4.X
およびそれ以前のリリースにおいて raw
フロッピーディスクにアクセスするには
<filename>/dev/fd<replaceable>N</replaceable></filename>
または <filename>/dev/fd<replaceable>NX</replaceable></filename>
を使用します。<replaceable>N</replaceable> はドライブ番号を表し、
大抵は 0 です。<replaceable>X</replaceable> は文字を表します。</para>
<para>5.0 およびそれ以降のリリースでは、単に
<filename>/dev/fd<replaceable>N</replaceable></filename> を使用します。/para>
<sect4>
<title>4.X およびそれ以前のリリースでのディスクサイズ</title>
<para><filename>/dev/fd<replaceable>N</replaceable>.<replaceable>size</replaceable></filename> というデバイスもあります。
<replaceable>size</replaceable>
はフロッピーディスクのサイズをキロバイトで示したものです。
これらのエントリは低レベルフォーマットの際に、
ディスクサイズを決定するのに使用されます。
1440kB は以下の例で使用されるサイズです。</para>
<para>時々 <filename>/dev</filename> 下のエントリは (再)
作成されなければなりません。次のコマンドでこれを行います。</para>
<screen>&prompt.root; <userinput>cd /dev && ./MAKEDEV "fd*"</userinput></screen>
</sect4>
<sect4>
<title>5.X およびそれ以降のリリースでのディスクサイズ</title>
<para>FreeBSD 5.0 では &man.devfs.5; が
<filename>/dev</filename> 内のエントリを自動的に管理するので、
<command>MAKEDEV</command>を使用する必要はありません。</para>
<para>所望のディスクサイズは &man.fdformat.1; に <option>-f</option>
フラグを通して渡されます。対応しているサイズは &man.fdcontrol.8;
のマニュアルページに掲載されていますが、最良に動作するのは
1440kB だと助言しておきます。</para>
</sect4>
</sect3>
<sect3>
<title>フォーマット</title>
<para>フロッピーディスクは、
使用前に低レベルフォーマットをする必要があります。
通常、ベンダは低レベルフォーマット済みのディスクを出荷していますが、
フォーマットはメディアの品質を確認するよい方法です。
より大きな (または小さな) ディスクサイズにすることも可能ですが、
ほとんどのフロッピーディスクのサイズは 1440kB で動作するように設計されています。</para>
<para>フロッピーディスクを低レベルフォーマットするには
&man.fdformat.1; を使用する必要があります。
このユーティリティは引数としてデバイス名を指定します。</para>
<para>ディスクが良好かあるいは不良であるかを決定するのに役立つので、
エラーメッセージをすべてメモに取っておいてください。</para>
<sect4>
<title>4.X 以前のリリースでのフォーマット</title>
<para><filename>/dev/fd<replaceable>N</replaceable>.<replaceable>size</replaceable></filename> デバイスを使ってフロッピーをフォーマットします。
新しい 3.5 インチフロッピーディスクをドライブに挿入し、
以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>/usr/sbin/fdformat /dev/fd0.1440</userinput></screen>
</sect4>
<sect4>
<title>5.0 以降のリリースでのフォーマット</title>
<para><filename>/dev/fd<replaceable>N</replaceable></filename>
デバイスを使用してフロッピーをフォーマットします。
新しい 3.5 インチフロッピーディスクをドライブに挿入し、
以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>/usr/sbin/fdformat -f 1440 /dev/fd0</userinput></screen>
</sect4>
</sect3>
</sect2>
<sect2>
<title>ディスクラベル</title>
<para>ディスクを低レベルフォーマットしたら、
次にディスクラベルを作成する必要があります。
ディスクラベルは後で破棄されますが、
システムがディスクのサイズとジオメトリを決定するのに必要になります。</para>
<para>新しいディスクラベルはディスク全体を引き継ぎ、
フロッピーのジオメトリに関する適切な情報のすべてが含まれます。
ディスクラベルに対するジオメトリの値は
<filename>/etc/disktab</filename> に掲載されています。</para>
<para>次のように &man.disklabel.8; を実行できます。</para>
<screen>&prompt.root; <userinput>/sbin/disklabel -B -r -w /dev/fd0 fd1440</userinput></screen>
<note><para>&os;&nbsp;5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていないオプションおよびパラメタの数多くが削除されました。
たとえば <option>-r</option> オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
マニュアルページを参照してください。</para></note>
</sect2>
<sect2>
<title>ファイルシステム</title>
<para>これでフロッピーを高レベルフォーマットする準備ができました。これは
FreeBSD がディスクを読み書きする新しいファイルシステムを作成します。
新しいファイルシステムを作成するとディスクラベルは破棄されます。
したがって、ディスクを再フォーマットするときには、
ディスクラベルを再作成しなくてはなりません。</para>
<para>フロッピーのファイルシステムには UFS または FAT を使用できます。
フロッピーに対しては FAT が一般的によりよい選択です。</para>
<para>フロッピー上に新しいファイルシステムを作成するには次のようにします。</para>
<screen>&prompt.root; <userinput>/sbin/newfs_msdos /dev/fd0</userinput></screen>
<para>これでディスクが使用できるようになりました。</para>
</sect2>
<sect2>
<title>フロッピーの使用</title>
<para>フロッピーを使用するために、&man.mount.msdos.8;
(4.X 以前のリリース) または &man.mount.msdosfs.8;
(5.0 以後のリリース) を用いてマウントします。
Ports Collection から
<filename role="package">emulators/mtools</filename>
を使用することもできます。</para>
</sect2>
</sect1>
<sect1 id="backups-tapebackups">
<title>データテープの作成と使用</title>
<indexterm><primary>テープメディア</primary></indexterm>
<para>主要なテープメディアは 4mm, 8mm, QIC, ミニカートリッジ および DLT です。</para>
<sect2 id="backups-tapebackups-4mm">
<title>4mm (DDS: Digital Data Storage)</title>
<indexterm>
<primary>テープメディア</primary>
<secondary>DDS (4mm) テープ</secondary>
</indexterm>
<indexterm>
<primary>テープメディア</primary>
<secondary>QIC テープ</secondary>
</indexterm>
<para>4mm テープはワークステーションのバックアップメディアの選択として
QIC に取って代わりつつあります。Conner が QIC
ドライブの主要なメーカである Archive を買収し、
QIC ドライブの製造を中止した時にこの傾向は非常に強まりました。4mm
ドライブは小さくて静かですが、8mm
ドライブが持っている信頼性ほど、その評判は良くありません。
また、4mm カートリッジは 8mm カートリッジに比べて安価でより小さくなっています
(3 x 2 x 0.5 インチ、76 x 51 x 12 mm)。
ただし、8mm と同様に、4mm のヘッドはヘリカルスキャン方式
(訳注: VTR と同様の回転ヘッドの方式)
を採用しているため、比較的短寿命です。</para>
<para>ドライブのデータスループットは、150&nbsp;kB/s から
最大で 500&nbsp;kB/s 程度です。 データ容量は 1.3&nbsp;GB から 2.0&nbsp;
GB です。ドライブのほとんどで利用可能なハードウェア圧縮を使用すると、
容量が約二倍になります。
複数ドライブのテープライブラリユニットは単一のキャビネットに 6 つのドライブを収容可能で、自動的にテープの交換ができます。ライブラリの容量は
240&nbsp;GB に達します。</para>
<para>DDS-3 標準は現在では 12&nbsp;GB (圧縮により 24&nbsp;GB)
までの容量に対応しています。</para>
<para>8mm ドライブと同様に 4mm ドライブはヘリカルスキャンを使用します。
ヘリカルスキャン方式の利点および欠点はすべて 4mm および 8mm
ドライブの両方に当てはまります。</para>
<para>テープは 2,000 回のパスあるいは 100
回のフルバックアップした後には交換するべきです。</para>
</sect2>
<sect2 id="backups-tapebackups-8mm">
<title>8mm (Exabyte)</title>
<indexterm>
<primary>テープメディア</primary>
<secondary>Exabyte (8mm) テープ</secondary>
</indexterm>
<para>8mm テープはもっとも一般的な SCSI テープドライブです。
これらは交換型テープの最良の選択です。ほとんどすべてのサイトが Exabyte
2&nbsp;GB 8mm テープドライブを所有しています。8mm
ドライブは信頼性があり、便利で静かです。カートリッジは安価で小型です
(4.8 x 3.3 x 0.6 インチ、122 x 84 x 15 mm)。8mm
テープの欠点の一つは、ヘッドを横切るテープの高い相対動作率により、
ヘッドとテープは比較的短寿命ということです。</para>
<para>データのスループットは 250&nbsp;kB/s から 500&nbsp;kB/s 程度です。
データサイズは 300&nbsp;MB から 7&nbsp;GB までです。
ほとんどのドライブで利用可能なハードウェア圧縮を利用すると、
容量が約二倍になります。
これらのドライブは単一のユニット、または 6 つのドライブと 120 のテープを一つのキャビネットに収容可能な複数のドライブのテープライブラリとして利用可能です。
テープはユニットによって自動的に取り換えられます。
ライブラリの容量は 840&nbsp;GB 強に達します。</para>
<para>Exabyte の <quote>Mammoth</quote> モデルは
一つのテープで 12&nbsp;GB (圧縮により 24&nbsp;GB) に対応し、
従来のテープドライブと比べ費用は約二倍になります。</para>
<para>データはヘリカルスキャンを用いてテープに記録されます。
ヘッダはメディアに対してある角度 (約 6 度) で配置されます。
テープはヘッドのある円筒の周の 270 度に渡って接触します。
テープが円筒面を走行する間、円筒は回転しています。
この結果、高密度のデータのつまったトラックは、
狭い間隔でテープの上端と下端の間を斜めに横切ります。</para>
</sect2>
<sect2 id="backups-tapebackups-qic">
<title>QIC</title>
<indexterm>
<primary>テープメディア</primary>
<secondary>QIC-150</secondary>
</indexterm>
<para>QIC-150 テープとドライブは、
おそらく最も一般的に使われているドライブとメディアでしょう。
QIC テープドライブは <quote>現実的な</quote> バックアップ
ドライブとして少なくとも高価なものではありません。
欠点はメディアのコストです。QIC テープは 8mm や 4mm テープと比較して
GB あたりのデータの保存で 5 倍ほど高価です。
しかし、あなたの必要とする量が半ダース程のテープで十分であれば、
QIC は正しい選択となるかもしれません。QIC は
<emphasis>最も</emphasis> 一般的なテープドライブです。
すべてのサイトに QIC ドライブのどれかの容量のものがあります。問題は、
QIC は同じようなテープ (まったく同じ場合もある)
に多様な記録密度があることです。QIC ドライブは静かではありません。
これらのドライブはデータ記録を開始する前に音をたててシークしますし、
リード、ライト、シークの時にはっきりと聞こえる音を出します。
QIC テープの大きさは (6 x 4 x 0.7 インチ、152 x 102 x 17 mm) です。
1/4 インチ幅のテープも使用している
<link linkend="backups-tapebackups-mini">ミニカートリッジ</link>
は別に議論します。テープライブラリやチェンジャは利用できません。</para>
<para>データスループットは 150kB/s から 500kB/s の範囲です。
データ容量の範囲は 40MB から 15GB です。
ハードウェア圧縮が最近のドライブの多くで使用できます。
QIC ドライブは DAT ドライブに置き換えられつつあり、
あまり頻繁には利用されなくなっています。</para>
<para>データは複数のトラックに分かれてテープに記録されます。
トラックはテープメディアの長さ方向の一端からもう一方の端までです
(訳注: 1 トラックの read/write が終わるとテープの走行方向を反転させ
次のトラックの read/write を行います)。トラックの数と、
それに対応するトラックの幅はテープの容量によって変わります。
すべてではありませんが、
ほとんどの最近のドライブは少なくとも読み出しについては
(場合によっては書き込みも) 下位互換性があります。
QIC はデータの安全性についてはよいといわれています
(ヘリカルスキャンドライブに比べて機構は単純でより丈夫です)。</para>
<para>テープは 5000 回のバックアップで寿命となるでしょう。</para>
</sect2>
<sect2 id="backups-tapebackups-mini">
<title>XXX* ミニカートリッジ</title>
<para></para>
</sect2>
<sect2 id="backups-tapebackups-dlt">
<title>DLT</title>
<indexterm>
<primary>テープメディア</primary>
<secondary>DLT</secondary>
</indexterm>
<para>DLT はここに示したドライブのタイプの中で最高速のデータ転送レートを発揮します。
1/2 インチ (12.5mm) テープが単リールのカートリッジ
(4 x 4 x 1 インチ、100 x 100 x 25 mm) に入っています。
カートリッジのひとつの側面全体がスイングゲートになっています。
ドライブの機構がこのゲートを開け、テープリーダを引き出します。
テープリーダには楕円形の穴があり、
ドライブがテープを <quote>引っ掛ける</quote> のに使います。
巻き取りのためのリールはドライブの中にあります。
ここに挙げた他のカートリッジはすべて
(9 トラックテープはただ 1 つの例外です)
送りだしリールと巻き取りリールの両方がカートリッジの中にあります。</para>
<para>データスループットは約 1.5&nbsp;MB/s で、4mm, 8mm, QIC
テープドライブの 3 倍です。データ容量は単一のドライブで 10&nbsp;GB
から 20&nbsp;GB の範囲です。マルチテープチェンジャ、
マルチテープドライブ、5 から 900 巻のテープを 1 から
20 ドライブで扱うマルチドライブテープライブラリがあり、
50&nbsp;GB から 9&nbsp;TB の容量が得られます。</para>
<para>圧縮によって、DLT タイプ 4 フォーマットは
70&nbsp;GB の容量まで対応しています。</para>
<para>データは (QICテープのように) テープの走行方向と平行に複数ある
トラックへ記録されます。2 つのトラックに同時書き込みを行います。
read/write ヘッドの寿命は比較的長いと言えます。
テープの走行が止まればヘッドとテープの間の相対運動は無いからです。</para>
</sect2>
<sect2>
<title id="backups-tapebackups-ait">AIT</title>
<indexterm>
<primary>テープメディア</primary>
<secondary>AIT</secondary>
</indexterm>
<para>AIT は、テープ一巻あたり (圧縮を用いて) 50&nbsp;GB まで格納できる
Sony が開発した新しい形式です。
テープにはメモリチップが搭載されており、
テープの内容のインデックスを保持しています。
他のテープではテープ上のファイルの位置を把握するのに数分必要とするのですが、
このテープドライブではインデックスを読んで直ちに決定することができます。
<application>SAMS:Alexandria</application>
のようなソフトウェアは、テープのメモリチップと直接通信して、
スクリーンに内容を表示し、
どのファイルがどのテープにバックアップされたかを判断し、
正しいテープを見つけ、読み込み、
テープからデータを復元することができます。このソフトウェアを使うと、
40 以上の AIT テープライブラリを制御できます。</para>
<para>このようなライブラリは大体 $20,000 くらいするので、
愛好家が購入できる価格帯からは外れてしまいますが。</para>
</sect2>
<sect2>
<title>新品のテープを初めて使う場合</title>
<para>全く新品の空テープを読もうとしたり書き込もうとすると、
処理は失敗するでしょう。次のようなメッセージがコンソールに出力されるでしょう。</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>テープに識別ブロック (Identifier Block:block number 0)
がありません。QIC-525 標準を採用したすべての QIC
テープドライブは識別ブロックをテープに書き込みます。
2 つの解決方法があります。</para>
<itemizedlist>
<listitem>
<para><command>mt fsf 1</command>
によりテープドライブはテープに識別ブロックを書き込みます。</para>
</listitem>
<listitem>
<para>フロントパネルのボタンを押してテープを取り出します。</para>
<para>再びテープを挿入し、データをテープに <command>dump</command>
します。</para>
<para><command>dump</command> は
<errorname>DUMP: End of tape detected</errorname> と報告し、
コンソールには
<errorname>HARDWARE FAILURE info:280 asc:80,96</errorname>
と表示されるでしょう。</para>
<para><command>mt rewind</command> を使ってテープを巻戻します。</para>
<para>次からはテープの操作はうまくいくでしょう。</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="backups-floppybackups">
<title>フロッピーへのバックアップ</title>
<sect2 id="floppies-using">
<title>データをバックアップするのにフロッピーは使えますか?</title>
<indexterm><primary>バックアップフロッピー</primary></indexterm>
<indexterm><primary>フロッピーディスク</primary></indexterm>
<para>フロッピーディスクは以下の理由によって、
実際にバックアップをつくるための適切なメディアではありません。</para>
<itemizedlist>
<listitem>
<para>メディアの信頼性が (特に長期間の場合) 低い。</para>
</listitem>
<listitem>
<para>バックアップとリストアがとても遅い。</para>
</listitem>
<listitem>
<para>容量が非常に小さい
(ハードディスク全体の日々のバックアップに 1 ダース、
長期間なら本当にたくさん)。</para>
</listitem>
</itemizedlist>
<para>しかしながら、データをバックアップするのに他の方法がないのなら、
バックアップを取らないよりもフロッピーディスクを使う方がよいでしょう。</para>
<para>フロッピーディスクを使用せざるを得ないときは、
品質のよいディスクを使用してください。
事務所のその辺に数年転がっていたフロッピーは使わない方が良いでしょう。
評判のよいメーカからの新しいディスクを使用することが理想です。</para>
</sect2>
<sect2 id="floppies-creating">
<title>それではどうやってデータをフロッピーにバックアップするのですか?</title>
<para>フロッピーにバックアップする一番の方法は
<option>-M</option> (マルチボリューム) オプション付きで &man.tar.1;
コマンドを使用することです。これにより、
複数のフロッピーにわたってバックアップすることが可能になります。</para>
<para>カレントディレクトリとサブディレクトリのすべてのファイルをバックアップするには以下のコマンドを (<username>root</username> 権限で) 使用します。</para>
<screen>&prompt.root; <userinput>tar Mcvf /dev/fd0 *</userinput></screen>
<para>始めのフロッピーが一杯になったときには、
&man.tar.1; は次のボリュームを挿入するように要求します
(&man.tar.1; はさまざまなメディアを扱えるので、
ボリューム (この場合フロッピーディスク) と表記します)。</para>
<screen>Prepare volume #2 for /dev/fd0 and hit return:</screen>
<para>指定したファイルがすべて保存されるまで
(ボリューム番号を増やしながら) 繰り返されます。</para>
</sect2>
<sect2 id="floppies-compress">
<title>バックアップを圧縮できますか?</title>
<indexterm>
<primary><command>tar</command></primary>
</indexterm>
<indexterm>
<primary><command>gzip</command></primary>
</indexterm>
<indexterm><primary>圧縮</primary></indexterm>
<para>残念なことに &man.tar.1; はマルチボリュームアーカイブに対して、
<option>-z</option> オプションを使うことができません。
もちろん、すべてのファイルを &man.gzip.1; で圧縮し、
それらを &man.tar.1; を用いてフロッピーに保存して、
それから再び &man.gunzip.1; を用いることは可能です。</para>
</sect2>
<sect2 id="floppies-restoring">
<title>どのようにしてバックアップをリストアしたらいいのでしょうか?</title>
<para>すべてのアーカイブをリストアするには以下のようにします。</para>
<screen>&prompt.root; <userinput>tar Mxvf /dev/fd0</userinput></screen>
<para>特定のファイルだけをリストアするには二つの方法があります。
まず始めに、一番目のフロッピーを用いて以下のようにします。</para>
<screen>&prompt.root; <userinput>tar Mxvf /dev/fd0 <replaceable>filename</replaceable></userinput></screen>
<para>&man.tar.1; ユーティリティは、必要なファイルを見つけるまで次のディスクを挿入するように要求します。</para>
<para>二つ目の方法は、
必要なファイルがどのフロッピーに保存されているか分かっている場合、
単純にそのフロッピーを挿入して上記と同じコマンドを使用します。
あるフロッピー上にある一番目のファイルが、
その前のフロッピーから続いている場合は、
そのファイルのリストアを要求していなくても &man.tar.1;
はそれをリストアできないと警告することに注意してください!</para>
</sect2>
</sect1>
<sect1 id="backup-basics">
<title>バックアップの基本</title>
<para>主要なバックアッププログラムは
&man.dump.8;, &man.tar.1;, &man.cpio.1; の三つです。</para>
<sect2>
<title>ダンプとリストア</title>
<indexterm>
<primary>バックアップソフトウェア</primary>
<secondary>ダンプ / リストア</secondary>
</indexterm>
<indexterm><primary><command>dump</command></primary></indexterm>
<indexterm><primary><command>restore</command></primary></indexterm>
<para>伝統的な &unix; のバックアッププログラムは
<command>dump</command> および <command>restore</command> です。
これらはファイルシステムによって作成されたファイル、リンク、
ディレクトリの下位の抽象的概念であるディスクブロックの集合としてドライブを操作します。<command>dump</command>
はデバイス上のすべてのファイルシステムをバックアップします。
ファイルシステムの一部分だけ、または二つ以上のファイルシステムにわたるディレクトリツリーをバックアップすることはできません。<command>dump</command>
はファイルおよびディレクトリをテープに書き込みませんが、
ファイルおよびディレクトリを含んだ raw データブロックを書き込みます。</para>
<note><para>ルートディレクトリで <command>dump</command> を使用した場合、
<filename>/home</filename>, <filename>/usr</filename>
や他のディレクトリの多くをバックアップしなくてもよいでしょう。
通常これらは他のファイルシステムへのマウントポイントであるか、
シンボリックリンクであるからです。</para></note>
<para><command>dump</command> には AT&amp;T UNIX のバージョン 6
(およそ 1975 年) の初期から残る奇癖があります。
デフォルトのパラメタは、現在利用可能な高密度メディア (最大 62,182 ftpi)
ではなく、9 トラックテープ (6250 bpi) に最適な値となっています。
現在のテープドライブの容量を利用するために、
これらのデフォルトはコマンドライン上でオーバライドしなくてはいけません。</para>
<indexterm><primary><filename>.rhosts</filename></primary></indexterm>
<para><command>rdump</command> および <command>rrestore</command>
を用いて他のコンピュータに接続されているテープドライブにネットワーク経由でデータをバックアップすることも可能です。
どちらのプログラムもリモートのテープドライブにアクセスするために
<command>rcmd</command> および <command>ruserok</command>
に依存しています。
したがって、バックアップを実行するユーザがリモートコンピュータの
<filename>.rhosts</filename> ファイルに書かれていなければなりません。
<command>rdump</command> および <command>rrestore</command>
の引数はリモートコンピュータに適切なものを用いなければなりません。
FreeBSD コンピュータから <hostid>komodo</hostid> と呼ばれる Sun
に接続されている Exabyte テープへ <command>rdump</command>
するには以下のようにします。</para>
<screen>&prompt.root; <userinput>/sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&amp;1</userinput></screen>
<para>注意:
ここではセキュリティが確保されており、
<filename>.rhosts</filename>
ファイルによる認証が許可されているものと暗黙的に仮定しています。
あなたの状況がこれにあてはまるか注意深く調べてください。</para>
<para>さらなる安全のために <command>ssh</command> 上で
<command>dump</command> および <command>restore</command>
を使用することも可能です。</para>
<example>
<title><application>ssh</application> 上で <command>dump</command> を使用する</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>バックアップソフトウェア</primary>
<secondary><command>tar</command></secondary>
</indexterm>
<para>&man.tar.1; は AT&amp;T UNIX の バージョン 6 (1975 年ごろ)
にまでさかのぼることができます。<command>tar</command>
はファイルシステムと協調して動作し、
ファイルとディレクトリをテープに書き込みます。<command>tar</command>
は &man.cpio.1;
で使用可能なフルレンジのオプションには対応していませんが、
<command>tar</command> は <command>cpio</command>
が使用するような奇妙なコマンドパイプラインを必要ありません。</para>
<indexterm><primary><command>tar</command></primary></indexterm>
<para><command>tar</command>
の多くの版はネットワーク経由のバックアップには対応してません。
FreeBSD が使用している GNU 版の <command>tar</command> は、
<command>rdump</command>
と同様の構文でリモートデバイスに対応しています。
<hostid>komodo</hostid> と呼ばれる Sun に接続された Exabyte
テープドライブに <command>tar</command>
を実行するには以下のようにします。</para>
<screen>&prompt.root; <userinput>/usr/bin/tar cf komodo:/dev/nsa8 . 2>&amp;1</userinput></screen>
<para>リモートデバイスに対応していない版に対しては、パイプラインと
<command>rsh</command>
を使用してリモートテープドライブにデータを送ることができます。</para>
<screen>&prompt.root; <userinput>tar cf - . | rsh <replaceable>hostname</replaceable> dd of=<replaceable>tape-device</replaceable> obs=20b</userinput></screen>
<para>ネットワークを越えたバックアップのセキュリティを懸念しているなら、
<command>rsh</command> の代わりに <command>ssh</command>
を使用するべきです。</para>
</sect2>
<sect2>
<title><command>cpio</command></title>
<indexterm>
<primary>バックアップソフトウェア</primary>
<secondary><command>cpio</command></secondary>
</indexterm>
<para>&man.cpio.1; は本来 &unix;
ファイルを磁気メディアで交換するためのプログラムです。
<command>cpio</command> はバイトスワッピング、
多くの異なるアーカイブフォーマットの書き込みオプション
(他にも多数のオプションがあります) があり、
パイプで他のプログラムにデータを渡すこともできます。
この最後にあげた特徴により、<command>cpio</command>
はインストールメディアとしては優れた選択です。<command>cpio</command>
はディレクトリツリーの探索の機能はなく、ファイルリストは
<filename>stdin</filename> からの入力でなくてはなりません。</para>
<indexterm><primary><command>cpio</command></primary></indexterm>
<para><command>cpio</command>
はネットワーク経由のバックアップには対応していません。
以下のようにパイプラインと <command>rsh</command>
を用いてリモートテープドライブにデータを送ることができます。</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><replaceable>directory_list</replaceable>
はバックアップしたいディレクトリのリストで、
<replaceable>user</replaceable>@<replaceable>host</replaceable>
はバックアップを実行したいユーザとホスト名の組であり、
<replaceable>backup_device</replaceable>
はバックアップを書き込みたいデバイスです
(たとえば <filename>/dev/nsa0</filename>)。</para>
</sect2>
<sect2>
<title><command>pax</command></title>
<indexterm>
<primary>バックアップソフトウェア</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; は <command>tar</command> と <command>cpio</command>
に対する IEEE/&posix; の答えです。長年の間、さまざまな版の
<command>tar</command> および <command>cpio</command>
は互いにわずかながら非互換性を有していました。
それらをしらみ潰しに標準化する代わりに、&posix;
は新しいアーカイブユーティリティを作りました。
<command>pax</command> は専用に開発された新しいフォーマットに加えて、
いくつもの <command>cpio</command> や <command>tar</command>
のフォーマットの読み書きに対応しようと試みています。コマンド群は
<command>tar</command> よりも <command>cpio</command>
の方にいくぶん似ています。</para>
</sect2>
<sect2 id="backups-programs-amanda">
<title><application>Amanda</application></title>
<indexterm>
<primary>バックアップソフトウェア</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) は単一のプログラムではなく、
クライアント/サーバ型のバックアップシステムです。
<application>Amanda</application> サーバは、
<application>Amanda</application> クライアントを有する
ネットワークに接続されたコンピュータからデータを受け取り、
備え付けられたテープドライブにバックアップします。
いくつもの大容量ディスクを備えたサイトでの共通の問題は、
データディレクトリをテープにバックアップするのに時間がかかりすぎることです。
<application>Amanda</application> はこの問題を解決します。
<application>Amanda</application> は
<quote>ホールディングディスク</quote> を使用して、
同時に複数のファイルシステムのバックアップを行うことができます。
<application>Amanda</application> の設定ファイルにかかれたすべてのファイルシステムのフルバックアップを特定の間隔でとるために
<quote>アーカイブセット</quote> と呼ばれるテープグループを作成します。
<quote>アーカイブセット</quote> には
夜間に作成されるすべてのファイルシステムの増分 (または差分)
のバックアップも含まれます。
障害が起きたファイルシステムのリストアには、
最も新しいフルバックアップと増分のバックアップが必要です。</para>
<para>設定ファイルでバックアップの制御と
<application>Amanda</application>
によるネットワークトラフィック量を設定します。
<application>Amanda</application> は上記のバックアッププログラムのいずれかを使用してデータをテープに書き込みます。
<application>Amanda</application> は port または package
として利用可能です。デフォルトではインストールされていません。</para>
</sect2>
<sect2>
<title>何もしない</title>
<para><quote>何もしない</quote>
というのはコンピュータのプログラムではありませんが、
バックアップの戦略として最も広く採用されています。
これには初期投資が必要ありません。
従わなければならないバックアップスケジュールもありません。
ただ何もしないだけです。データに何か起きたら苦笑いして耐えてください!</para>
<para>あなたにとって時間やデータの価値が少ないか、
あるいはまったくないのであれば <quote>何もしない</quote>
のはあなたのコンピュータに最も適したバックアッププログラムでしょう。
しかし注意してください。&unix; は便利なツールです。6
ヵ月も使用していれば価値のあるファイルの山が出来上がっているでしょう。</para>
<para><quote>何もしない</quote>
のはコンピュータによって正確に再作成される
<filename>/usr/obj</filename>
やその他のディレクトリツリーについては適切なバックアップ方法です。
HTML または &postscript; 版のこのハンドブックが一つの例です。
これらの文書形式は SGML ファイルから作成されたものです。
HTML または &postscript; ファイルのバックアップは必要ありません。
SGML ファイルは定期的にバックアップされます。</para>
</sect2>
<sect2>
<title>どのバックアッププログラムが最適ですか?</title>
<indexterm>
<primary>LISA</primary>
</indexterm>
<para><emphasis>定期的に</emphasis> &man.dump.8; しましょう。
Elizabeth D. Zwicky
はここで検討したプログラムすべてについて拷問的なテストを行いました。
すべてのデータと &unix;
ファイルシステムの状態すべてを保存するのに最適なのは、明らかに
<command>dump</command> でしょう。
Elizabeth は大きく変化に富んだ異常な状態
(いくつかはあまり異常でない状態のものもあります)
のファイルシステムを作成し、それぞれのプログラムを用いてそれらのファイルシステムのバックアップとリストアのテストを行いました。特色のある状態には、
ホールを持つファイル、ホールとヌルブロックを持つファイル、
奇妙な文字をファイル名に持つファイル、読み込み不可、
書き込み不可のファイル、デバイスファイル、
バックアップ中のファイルのサイズ変更、
バックアップ中のファイルの作成および削除、などがあります。
彼女は 1991 年 10 月の LISA V で結果の発表をしています。
<ulink url="http://berdmann.dyndns.org/zwicky/testdump.doc.html">torture-testing Backup and Archive Programs</ulink> を参照してください。</para>
</sect2>
<sect2>
<title>緊急時のリストア手順</title>
<sect3>
<title>惨事の起きる前に</title>
<para>起き得るどのような惨事に対しても、
必要な手順は以下の 4 ステップだけです。</para>
<indexterm>
<primary><command>disklabel</command></primary>
</indexterm>
<para>まず始めに、
各ディスクのディスクラベルとファイルシステムテーブル
(<filename>/etc/fstab</filename>)、
すべてのブートメッセージをそれぞれ 2 枚ずつ印刷します
(たとえば <command>disklabel da0 | lpr</command>)。</para>
<indexterm><primary>fix-it フロッピー</primary></indexterm>
<para>次に、ブートフロッピーと fix-it フロッピー
(<filename>boot.flp</filename> および <filename>fixit.flp</filename>)
にそのシステムのデバイスがすべて含まれているか確認します。
最も簡単に確認する方法は、フロッピーをドライブに入れてマシンをリブートしてブートメッセージを確認することです。
あなたのシステムのデバイスのすべてが含まれ、
機能していれば次のステップに進んでください。</para>
<para>そうでないなら、あなたのディスクのすべてをマウントでき、
テープドライブにもアクセスできるカスタムブートフロッピーを二つ作成する必要があります。
これらのフロッピーは <command>fdisk</command>,
<command>disklabel</command>, <command>newfs</command>,
<command>mount</command>
および利用したいバックアッププログラムを含んでいなければなりません。
これらのプログラムをスタティックリンクされていなければなりません。
<command>dump</command> を使用するのなら、このフロッピーに
<command>restore</command> も含まれていなければなりません。</para>
<para>続いて、定期的にバックアップテープを作成します。
最後のバックアップの後で行われた変更は回復することができないかもしれません。
バックアップテープにライトプロテクトをしてください。</para>
<para>最後に、フロッピー (<filename>boot.flp</filename> と
<filename>fixit.flp</filename>
または上記で作成した二枚のカスタムブートフロッピーディスク)
およびバックアップテープのテストをします。手順のメモを作りましょう。
このメモはブートフロッピーとバックアップテープにいれておき、
印刷しておきます。
リストアを行うときはおそらく取り乱しているでしょうから、
このメモはバックアップテープを壊すようなことを防ぐのに役立つでしょう
(どのように破壊してしまうのでしょう?
<command>tar xvf /dev/sa0</command> とする代わりに、偶然
<command>tar cvf /dev/sa0</command>
と入力してバックアップテープを上書きしてしまうかもしれません)。</para>
<note>
<title>訳注</title>
<para>上書きはライトプロテクトをしておけば防げますが、
何らかの原因でプロテクトがはずれているかもしれません。
ちなみに訳者の経験から言えば、
上のようなミスタイプは結構起きます。</para>
</note>
<para>安全性を増すために、
ブートフロッピーと二巻のバックアップテープを毎回とります。
一方を離れた場所に保管します。
離れた場所は同じ事務所の建物の地下室ではいけません。
世界貿易センタービルにあった数多くの会社は、
苦い経験によりこの教訓を得ました。
離れた場所とは、コンピュータやディスクドライブからかなり離れて、
物理的に分離されされていなければなりません。</para>
<example>
<title>ブートフロッピーを作成するスクリプト</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 file system 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>惨事の後は</title>
<para>重要な問題は、ハードウェアが生き残ったかどうかです。
定期的にバックアップを取っていれば、
ソフトウェアについて心配する必要はありません。</para>
<para>ハードウェアに障害があれば、
コンピュータを使用する前にその部品を交換してください。</para>
<para>ハードウェアに問題が無ければ、フロッピーを確認してください。
カスタムブートフロッピーディスクを使用しているのであれば、
シングルユーザモードでブートしてください (<prompt>boot:</prompt>
プロンプトで <literal>-s</literal> を入力します)。
それから次の項に進んでください。</para>
<para><filename>boot.flp</filename> と <filename>fixit.flp</filename>
を使用しているのであればこのまま読み進めてください。
<filename>boot.flp</filename>
フロッピーをフロッピードライブに入れて、
コンピュータを起動してください。
本来のインストールメニューが画面に表示されます。
<literal>Fixit--Repair mode with CDROM or floppy.</literal>
オプションを選択します。指示された通り
<filename>fixit.flp</filename> をいれてください。
<command>restore</command> と必要となるその他のプログラムは
<filename>/mnt2/stand</filename> にあります。</para>
<para>そして、ファイルシステムを一つずつ回復します。</para>
<indexterm>
<primary><command>mount</command></primary>
</indexterm>
<indexterm><primary>root パーティション</primary></indexterm>
<indexterm>
<primary><command>disklabel</command></primary>
</indexterm>
<indexterm>
<primary><command>newfs</command></primary>
</indexterm>
<para>最初のディスクのルートパーティションを <command>mount</command>
してみてください (たとえば <command>mount /dev/da0a /mnt</command>)。
ディスクラベルが破壊されている場合は、<command>disklabel</command>
を用いてあらかじめ印刷して保存しておいた通りにパーティションを作り直し、ディスクラベルを作成してください。
<command>newfs</command> を使用してファイルシステムを作り直します。
ルートパーティションを読み書き可能にマウントし直します
(<command>mount -u -o rw /mnt</command>)。
バックアッププログラムとバックアップテープを使用して、
このファイルシステムのデータを回復します
(たとえば <command>restore vrf /dev/sa0</command>)。
ファイルシステムをアンマウントします
(たとえば <command>umount /mnt</command>)。
障害を受けたファイルシステムそれぞれについて繰り返してください。</para>
<para>システムが動き出したら、
新しいテープにデータをバックアップしてください。
どのような理由で再び事故が起きたり、データが失われるかわかりません。
これに数時間を費すことで、後々の災難から救われます。</para>
</sect3>
<![ %not.published; [
<sect3>
<title>* I Did Not Prepare for the Disaster, What Now?</title>
<para></para>
</sect3>
]]>
</sect2>
</sect1>
<sect1 id="disks-virtual">
<sect1info>
<authorgroup>
<author>
<firstname>Marc</firstname>
<surname>Fonvieille</surname>
<contrib>再構成および追記: </contrib>
</author>
</authorgroup>
</sect1info>
<title>ネットワーク、メモリ、そしてファイルベースのファイルシステム</title>
<indexterm><primary>仮想ディスク</primary></indexterm>
<indexterm>
<primary>ディスク</primary>
<secondary>仮想</secondary>
</indexterm>
<para>FreeBSD にはフロッピーや CD,
ハードディスクなどの手元の計算機に取り付けたディスクの他に、
別の形態のディスク、<firstterm>仮想ディスク</firstterm>、もあります。</para>
<indexterm><primary>NFS</primary></indexterm>
<indexterm><primary>Coda</primary></indexterm>
<indexterm>
<primary>ディスク</primary>
<secondary>メモリ</secondary>
</indexterm>
<para>これには、<link linkend="nfs">Network File System</link>
のようなネットワークファイルシステムや Coda,
メモリベースのファイルシステムおよびファイルベースのファイルシステムがあります。</para>
<para>稼働させている FreeBSD のバージョンによって、
ファイルベースおよびメモリベースのファイルシステムを作成したり操作するために、異なるツールを使用しなければならないでしょう。</para>
<note>
<para>FreeBSD&nbsp;4.X の使用者は必要なデバイスを作成するために
&man.MAKEDEV.8; を使用しなければならないでしょう。FreeBSD&nbsp;5.0
以降では、&man.devfs.5; がデバイスノードを自動的に割り当ててくれるので、
使用者が意識する必要はありません。</para>
</note>
<sect2 id="disks-vnconfig">
<title>FreeBSD&nbsp;4.X でファイル中に構築されるファイルシステム</title>
<indexterm>
<primary>ディスク</primary>
<secondary>ファイルベース (4.X)</secondary>
</indexterm>
<para>&man.vnconfig.8;
ユーティリティを使えば擬似ディスクデバイスを設定し、
有効にすることができます。
<firstterm>vnode</firstterm> とはファイルの内部的な表現方法であり、
ファイルに関する操作の中心となるものです。つまり、&man.vnconfig.8;
はファイルシステムを生成したり操作したりするためにファイルを用いるのです。
一つ例を挙げると、
ファイルに収められたフロッピーや CD-ROM のイメージをマウントするために用いることができます。</para>
<para>&man.vnconfig.8; を使用するためには、
カーネルが &man.vn.4; デバイスに対応している必要があります。
そうでなければ、カーネルコンフィギュレーションファイルに
次の行を追加してカーネルを再構築し、システムを再起動してください。</para>
<programlisting>pseudo-device vn</programlisting>
<para>既にあるファイルシステムイメージのマウント</para>
<example>
<title>FreeBSD&nbsp;4.X での vnconfig を用いた既存のファイルシステムイメージのマウント</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>&man.vnconfig.8; を用いたファイルシステムイメージの新規作成</para>
<example>
<title><command>vnconfig</command> を用いたファイルベースディスクの新規作成</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/vn0c: 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-mdconfig">
<title>FreeBSD&nbsp;5.X でファイル中に構築されるファイルシステム</title>
<indexterm>
<primary>ディスク</primary>
<secondary>ファイルベース (5.X)</secondary>
</indexterm>
<para>&man.mdconfig.8; ユーティリティは FreeBSD&nbsp;5.X において
メモリディスク (&man.md.4;) を設定し、有効にするために使用されます。
&man.mdconfig.8; を使用するためには &man.md.4; モジュールを読み込むか、
カーネルコンフィギュレーションファイルに &man.md.4;
デバイスを追加してカーネルを再構築し、システムを再起動してください。</para>
<programlisting>device md</programlisting>
<para>&man.mdconfig.8; コマンドは、
三つのタイプのメモリベース仮想ディスクに対応しています。
&man.malloc.9; を用いて割り当てられたメモリディスク、
ファイルをベースにしたメモリディスク、
およびスワップ領域をベースにしたメモリディスクです。
想定される使用法は、ファイル内に保持されたフロッピーイメージまたは
CD イメージをマウントすることです。</para>
<para>既にあるファイルシステムイメージのマウント</para>
<example>
<title>FreeBSD&nbsp;5.X での <command>mdconfig</command> を用いた既存のファイルシステムイメージのマウント</title>
<screen>&prompt.root; <userinput>mdconfig -a -t vnode -f <replaceable>diskimage</replaceable> -u <replaceable>0</replaceable></userinput>
&prompt.root; <userinput>mount /dev/md<replaceable>0</replaceable>c <replaceable>/mnt</replaceable></userinput></screen>
</example>
<para>&man.mdconfig.8; を用いたファイルシステムイメージの新規作成</para>
<example>
<title><command>mdconfig</command> を用いたファイルシステムイメージの新規作成</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>mdconfig -a -t vnode -f <replaceable>newimage</replaceable> -u <replaceable>0</replaceable></userinput>
&prompt.root; <userinput>disklabel -r -w md<replaceable>0</replaceable> auto</userinput>
&prompt.root; <userinput>newfs md<replaceable>0</replaceable>c</userinput>
/dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
super-block backups (for fsck -b #) at:
32, 2624, 5216, 7808
&prompt.root; <userinput>mount /dev/md<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/md0c 4846 2 4458 0% /mnt</screen>
</example>
<para><option>-u</option> オプションを用いて
ユニット番号を指定しない場合、&man.mdconfig.8;
は未使用のデバイスを自動的に選択するために
&man.md.4; デバイスの auto-unit 機能を使用します。
割り当てられたユニットの名前は <devicename>md4</devicename>
のように標準出力に出力されます。&man.mdconfig.8;
の詳細についてはマニュアルページを参照してください。</para>
<note><para>&os;&nbsp;5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていないオプションおよびパラメタの数多くが削除されました。
たとえば <option>-r</option> オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
マニュアルページを参照してください。</para></note>
<para>&man.mdconfig.8; ユーティリティは大変役に立ちますが、
ファイルベースのファイルシステムを作成するために、
多くのコマンドの入力が必要となります。FreeBSD&nbsp;5.0 では
&man.mdmfs.8; と呼ばれるツールも用意されています。このプログラムは
&man.mdconfig.8; を用いて &man.md.4; ディスクを設定し、&man.newfs.8;
を用いて UFS ファイルシステムを作成し、&man.mount.8;
を用いてマウントします。たとえば、上記と同じファイルシステムを作成し、
マウントしたい場合は、下記のように入力するだけです。</para>
<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 in
5120+0 records out
&prompt.root; <userinput>mdmfs -F <replaceable>newimage</replaceable> -s <replaceable>5</replaceable>m md<replaceable>0</replaceable> <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4846 2 4458 0% /mnt</screen>
<para>ユニット番号を指定せずに <option>md</option>
オプションを使用した場合、&man.mdmfs.8;
は未使用のデバイスを自動的に選択するために &man.md.4; デバイスの
auto-unit 機能を使用します。&man.mdmfs.8;
についての詳細はマニュアルページを参照してください。</para>
</sect2>
<sect2 id="disks-md-freebsd4">
<title>FreeBSD&nbsp;4.X でのメモリベースのファイルシステム</title>
<indexterm>
<primary>ディスク</primary>
<secondary>メモリファイルシステム (4.X)</secondary>
</indexterm>
<para>&man.md.4; ドライバは FreeBSD&nbsp;4.X
においてメモリファイルシステムを作成するために単純で効果的な手段です。
メモリを割り当てるために &man.malloc.9; 関数が使用されます。</para>
<para>&man.vnconfig.8; を用いて作成したファイルシステムを例に取ると、
以下のようにします。</para>
<example>
<title>FreeBSD&nbsp;4.X での md メモリディスク</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>
<para>詳細については &man.md.4; マニュアルページを参照してください。</para>
</sect2>
<sect2 id="disks-md-freebsd5">
<title>FreeBSD&nbsp;5.X でのメモリベースのファイルシステム</title>
<indexterm>
<primary>ディスク</primary>
<secondary>メモリファイルシステム (5.X)</secondary>
</indexterm>
<para>メモリベースおよびファイルベースのファイルシステムに対しても
同じツール (&man.mdconfig.8; または &man.mdmfs.8;) を使用できます。
メモリベースのファイルシステムに対する記憶領域は
&man.malloc.9; 関数を用いて割り当てられます。</para>
<example>
<title><command>mdconfig</command> を用いたメモリベースディスクの新規作成</title>
<screen>&prompt.root; <userinput>mdconfig -a -t malloc -s <replaceable>5</replaceable>m -u <replaceable>1</replaceable></userinput>
&prompt.root; <userinput>newfs -U md<replaceable>1</replaceable></userinput>
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
with soft updates
super-block backups (for fsck -b #) at:
32, 2624, 5216, 7808
&prompt.root; <userinput>mount /dev/md<replaceable>1</replaceable> <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4846 2 4458 0% /mnt</screen>
</example>
<example>
<title><command>mdmfs</command> を用いたメモリベースディスクの新規作成</title>
<screen>&prompt.root; <userinput>mdmfs -M -s <replaceable>5</replaceable>m md<replaceable>2</replaceable> <replaceable>/mnt</replaceable></userinput>
&prompt.root; <userinput>df <replaceable>/mnt</replaceable></userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4846 2 4458 0% /mnt</screen>
</example>
<para>&man.mdconfig.8; のコマンドラインの <option>malloc</option> を
<option>swap</option> に置き換えることで、&man.malloc.9;
関数によるファイルシステムを使用する代わりに
スワップ領域を使用することが可能です。デフォルトでは &man.mdmfs.8;
ユーティリティはスワップベースのディスクを作成します
(<option>-M</option> なし)。詳細は &man.mdconfig.8; および
&man.mdmfs.8; マニュアルページを参照してください。</para>
</sect2>
<sect2>
<title>システムからメモリディスクを切り離す</title>
<indexterm>
<primary>ディスク</primary>
<secondary>メモリディスクの切り離し</secondary>
</indexterm>
<para>メモリベースまたはファイルベースのファイルシステムが使用されていない場合、
すべてのリソースをシステムに開放するべきです。
はじめにファイルシステムをアンマウントします。
次にシステムからディスクを切り離し、リソースを開放するために
&man.mdconfig.8; を使用します。</para>
<para>たとえば <filename>/dev/md4</filename> によって使用されたすべてのリソースを切り離し、開放するには以下のようにします。</para>
<screen>&prompt.root; <userinput>mdconfig -d -u <replaceable>4</replaceable></userinput></screen>
<para><command>mdconfig -l</command> コマンドを使用することによって、
設定された &man.md.4; デバイスについての情報を表示することが可能です。</para>
<para>FreeBSD&nbsp;4.X では &man.vnconfig.8; はデバイスを切り離すのに使用されます。たとえば <filename>/dev/vn4</filename> によって使用されたすべてのリソースを切り離し、開放するには以下のようにします。</para>
<screen>&prompt.root; <userinput>vnconfig -u vn<replaceable>4</replaceable></userinput></screen>
</sect2>
</sect1>
<sect1 id="snapshots">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
<!-- 15 JUL 2002 -->
</sect1info>
<title>ファイルシステムのスナップショット</title>
<indexterm>
<primary>ファイルシステム</primary>
<secondary>スナップショット</secondary>
</indexterm>
<para>FreeBSD&nbsp;5.0 は
Soft Updates
<!-- Furukawa:2004/1/8
should be refer this after updating config/chapter.sgml
<link linkend="soft-updates">Soft Updates</link>
-->
と協調するファイルシステムスナップショットという新しい機能を提供します。</para>
<para>スナップショットは指定したファイルシステムのイメージを作成し、
また、ファイルとして扱うことができるようになります。
スナップショットファイルはアクションが実行されるファイルシステム内で作成されなければなりません。
また、ユーザは一つのファイルシステムあたり 20
までスナップショットを作成することができます。
有効なスナップショットはスーパーブロック内に記録されるので、
リブートしてから永続的にアンマウントおよびリマウントを記録します。
スナップショットが必要無くなったときは、
標準の &man.rm.1; コマンドを用いて削除することができます。
スナップショットはどんな順番で削除してもよいのですが、
その他のスナップショットが開放されたブロックのうちいくらかをおそらく必要とするので、
使用されていたすべてのスペースを得られるとは限りません。</para>
<para>初めてスナップショットを作成すると、<username>root</username>
でさえも書き込めないように <option>schg</option>
フラグ (&man.chflags.1; のマニュアルページを参照) が設定されます。
&man.unlink.1; コマンドは、スナップショットに <option>schg</option>
フラグが設定されていてもそれらを削除することのできる例外です。
したがって、スナップショットファイルを削除する前に、
<option>schg</option> フラグをクリアする必要はありません。</para>
<para>スナップショットは &man.mount.8; コマンドを用いて作成されます。
<filename>/var</filename> のスナップショットを
<filename>/var/snapshot/snap</filename> に作成したいときは、
以下のコマンドを使用します。</para>
<screen>&prompt.root; <userinput>mount -u -o snapshot /var/snapshot/snap /var</userinput></screen>
<para>スナップショットにはいくつかの利用法があります。</para>
<itemizedlist>
<listitem>
<para>スナップショットをバックアップ目的に使用する管理者もいます。
なぜならスナップショットは CD やテープに転送できるからです。</para>
</listitem>
<listitem>
<para>ファイルの完全性を検証するために、
&man.fsck.8; をスナップショットに実行してもよいでしょう。
スナップショットをマウントしたときにそのファイルシステムがクリーンであったとすると、
そのスナップショットをマウントするときはいつでもクリーンな
(そして変更のない) 結果を得るでしょう。
これは本質的には バックグラウンド &man.fsck.8; が行うことです。</para>
</listitem>
<listitem>
<para>スナップショット上で &man.dump.8; ユーティリティを実行すると、
スナップショットのファイルシステムとタイムスタンプが一致するダンプが返されるでしょう。
&man.dump.8; は <option>-L</option> オプションを使用することで、
一つのコマンドでスナップショットをとり、ダンプイメージを作成して、スナップショットを削除することが可能です。</para>
</listitem>
<listitem>
<para>ファイルシステムの <quote>凍結された</quote> イメージとしてスナップショットを
&man.mount.8; します。
<filename>/var/snapshot/snap</filename> のスナップショットを
&man.mount.8; するには以下のようにします。</para>
<screen>&prompt.root; <userinput>mdconfig -a -t vnode -f /var/snapshot/snap -u 4</userinput>
&prompt.root; <userinput>mount -r /dev/md4 /mnt</userinput></screen>
</listitem>
</itemizedlist>
<para>これで <filename>/mnt</filename> にマウントした
凍結状態の <filename>/var</filename> ファイルシステム構造を探索できます。
すべてがスナップショットが作成された時と同じ状態になるはずです。ただし、
以前に作成されたスナップショットがサイズ 0 のファイルとして現れることが唯一の例外です。
スナップショットの使用を終えた場合、以下のようにアンマウントできます。</para>
<screen>&prompt.root; <userinput>umount /mnt</userinput>
&prompt.root; <userinput>mdconfig -d -u 4</userinput></screen>
<para><option>softupdates</option>
およびファイルシステムスナップショットに関する詳細については、
<ulink url="http://www.mckusick.com/">http://www.mckusick.com/</ulink>
にある Marshall Kirk McKusick のウェブサイトを参照してください。
ここには技術的な論文もあります。</para>
</sect1>
<sect1 id="quotas">
<title>ファイルシステムクォータ</title>
<indexterm>
<primary>アカウンティング</primary>
<secondary>ディスク領域</secondary>
</indexterm>
<indexterm><primary>ディスククォータ</primary></indexterm>
<para>クォータは OS の持っているオプショナルな機能であり、
ファイルシステム毎にユーザやグループのメンバが使用するディスク容量やファイルの数を制限することができます。
この機能は、あるユーザやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます。
この機能を用いることによって使用可能なディスク容量の全てを一人のユーザやユーザのグループが使ってしまうことを防ぐことができます。</para>
<sect2>
<title>ディスククォータを使うためのシステム設定</title>
<para>ディスククォータの設定を始める前に、
まずはカーネルにクォータが組み込まれていることを確認しましょう。
カーネルのコンフィグレーションファイルに次の行を入れます。</para>
<programlisting>options QUOTA</programlisting>
<para>標準の <filename>GENERIC</filename> カーネルでは、
この機能は有効になっていませんので、
ディスククォータを利用するためには上記を設定後カーネルを構築しなおし、
作成されたカスタムカーネルをインストールしなければいけません。
カーネルのコンフィグレーションに関しては
<xref linkend="kernelconfig"> をご覧ください。</para>
<para>次に <filename>/etc/rc.conf</filename>
でディスククォータを有効にする必要があります。
次の行を加えましょう。</para>
<programlisting>enable_quotas="YES"</programlisting>
<indexterm>
<primary>ディスククォータ</primary>
<secondary>チェック</secondary>
</indexterm>
<para>起動時の動作をさらに細かくコントロールするためにもう一つ設定用の変数があります。
通常、起動時には &man.quotacheck.8;
によりそれぞれのファイルシステムのクォータの整合性がチェックされます。
&man.quotacheck.8; の役割は、
クォータデータベースのデータが正しくファイルシステム上のデータを反映しているか確認することです。
これはかなり時間を食う処理であり、
起動にかかる時間に大きな影響を及ぼします。
このステップをとばしたい人のために
<filename>/etc/rc.conf</filename> に次の変数が用意されています。</para>
<programlisting>check_quotas="NO"</programlisting>
<para>もし 3.2-RELEASE よりも前の FreeBSD
を使っているならば設定はもっと単純で、一つの変数のみです。
次の行を <filename>/etc/rc.conf</filename> で設定してください。</para>
<programlisting>check_quotas="YES"</programlisting>
<para>最後に、ファイルシステム毎にディスククォータを有効にするために
<filename>/etc/fstab</filename> を編集する必要があります。
ここでユーザもしくはグループ、
あるいはその両方にクォータを設定することができるのです。</para>
<para>あるファイルシステム上にユーザ毎のクォータを有効にする場合には、
<filename>/etc/fstab</filename>
中でクォータを有効にしたいファイルシステムエントリのオプション部に
<option>userquota</option> を加えます。
例えば次のようになります。</para>
<programlisting>/dev/da1s2g /home ufs rw,userquota 1 2</programlisting>
<para>同様に、グループクォータを有効にするには
<option>userquota</option> キーワードの代わりに
<option>groupquota</option> を用います。
ユーザとグループの両方のクォータを有効にするには次のようにします。</para>
<programlisting>/dev/da1s2g /home ufs rw,userquota,groupquota 1 2</programlisting>
<para>デフォルトでは、
クォータファイルはそのファイルシステムのルートディレクトリに
ユーザ用、グループ用それぞれ
<filename>quota.user</filename>, <filename>quota.group</filename>
という名前で置かれます。さらに詳しい情報は &man.fstab.5;
をご覧ください。&man.fstab.5;
マニュアルには別の場所を指定することができると書いてはありますが、
あまり勧められません。なぜなら、
様々なクォータ関係のユーティリティがそれにうまく対処できるようにないためです。</para>
<para>この時点で、
一度システムを再起動して新しいカーネルで立ち上げましょう。
<filename>/etc/rc</filename> が自動的に適当なコマンドを実行し、
<filename>/etc/fstab</filename>
で有効にした全てのクォータ用に初期ファイルを作ってくれます。
従って、空のクォータファイルを手で作る必要は一切ありません。</para>
<para>通常の運用では &man.quotacheck.8; や
&man.quotaon.8;, &man.quotaoff.8;
といったコマンドを手で動かす必要はないのですが、
慣れるためにもこれらのマニュアルは読んでおきましょう。</para>
</sect2>
<sect2>
<title>クォータリミットの設定</title>
<indexterm>
<primary>ディスククォータ</primary>
<secondary>制限</secondary>
</indexterm>
<para>一旦クォータを有効にしたら本当に有効になっているのか確認しておきましょう。簡単な方法は次のコマンドを実行することです。</para>
<screen>&prompt.root; <userinput>quota -v</userinput></screen>
<para>ディスクの使用状況と、クォータが有効になっているファイルシステムのクォータリミットが一行にまとめて出力されるでしょう。</para>
<para>さあ、&man.edquota.8; でクォータリミットを設定する準備ができました。</para>
<para>ユーザやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります。割り当てディスク容量を制限
(ブロッククォータ) することもファイル数を制限 (inode クォータ)
することも、両者を組み合わせることもできるのです。
これらの制限はそれぞれさらに二つのカテゴリ、
ハードリミットとソフトリミット、に分けることができます。</para>
<indexterm><primary>ハードリミット</primary></indexterm>
<para>ハードリミットを越えることはできません。
あるユーザが一旦ハードリミットにたっした場合、
そのファイルシステムではそれ以上の割り当ては望めません。
例えばあるファイルシステム上に
500 ブロックのハードリミットが設定されており現在
490 ブロックを使用している場合、さらに 10 ブロックしか使えないのです。
11 ブロックを使おうとすると失敗します。</para>
<indexterm><primary>ソフトリミット</primary></indexterm>
<para>一方、
ソフトリミットはある限られた時間内であれば越えることができます。
この時間は猶予期間として知られており、デフォルトでは 1 週間です。
あるユーザが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり、それ以上使用することはできなくなります。
ユーザがソフトリミットよりも減らせば猶予期間はリセットされます。</para>
<para>以下は &man.edquota.8;
コマンドを実行した時に見ることになるであろう例です。
&man.edquota.8; コマンドが起動されると環境変数
<envar>EDITOR</envar> で指定されるエディタに入ります。
<envar>EDITOR</envar> が設定されていない場合には
<application>vi</application> が起動されます。
ここでクォータリミットを編集します。</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>通常、クォータが有効になっているファイルシステム毎に 2 行あります。
一つはブロックリミット用でもう一つは inode リミット用です。
クォータリミットを変更したいところを書き変えるだけでかまいません。
たとえばこのユーザのブロックリミットを、ソフトリミットは 50 から 500
へ、ハードリミットは 75 から 600 に変更する場合、</para>
<programlisting>/usr: blocks in use: 65, limits (soft = 50, hard = 75)</programlisting>
<para>から</para>
<programlisting> /usr: blocks in use: 65, limits (soft = 500, hard = 600)</programlisting>
<para>へ書き換えます。新しいクォータリミットはエディタを終了すれば設定されます。</para>
<para>ある範囲の UID
に対してクォータリミットを設定したい場合がありますが、このような時には
&man.edquota.8; コマンドの <option>-p</option>
オプションを使うといいでしょう。まず、
あるユーザに割り当てたいクォータリミットを設定し、次に
<command>edquota -p protouser startuid-enduid</command>
を実行するのです。例えばユーザ <username>test</username>
にお望みのクォータリミットが付いているとしましょう。
次のコマンドにより 10,000 から 19,999 の間の UID
に対して同じクォータリミットを付けることができるのです。</para>
<screen>&prompt.root; <userinput>edquota -p test 10000-19999</userinput></screen>
<para>さらに詳しいことは &man.edquota.8; のマニュアルページをご覧ください。</para>
</sect2>
<sect2>
<title>クォータリミットとディスク使用状況のチェック</title>
<indexterm>
<primary>ディスククォータ</primary>
<secondary>チェック</secondary>
</indexterm>
<para>&man.quota.1; または &man.repquota.8;
といったコマンドを使ってクォータリミットやディスクの利用状況を確認することができます。
&man.quota.1; コマンドは個々のユーザやグループのクォータやディスク利用状況を確認するのに使えます。
ユーザは自身のクォータ、そして所属するグループのグループのみ確認することができます。
スーパーユーザのみが他のユーザや所属していないグループのクォータと利用状況を見ることができます。
&man.repquota.8; コマンドを使うと、クォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリを得ることができます。</para>
<para>以下は二つのファイルシステムにクォータ制限がかけられているユーザに対する<command>quota -v</command> コマンドの出力例です。</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>猶予期間</primary></indexterm>
<para>上の例で、<filename>/usr</filename>
ファイルシステム上ではこのユーザは現在
50 ブロックというソフトリミットを 15 ブロックオーバーし
5 日間の猶予期間が残っています。アスタリスク <literal>*</literal>
はクォータリミットを越えているユーザを示していることに注意してください。</para>
<para>通常、そのユーザが全く使っていないファイルシステムは、
クォータリミットが付けられているとしても
&man.quota.1; コマンドの出力には現われません。
<option>-v</option> オプションを用いればそのようなファイルシステム、
上の例では <filename>/usr/var</filename>、
を表示することができます。</para>
</sect2>
<sect2>
<title>NFS 上の クォータ</title>
<indexterm><primary>NFS</primary></indexterm>
<para>クォータは NFS サーバ上のクォータサブシステムにより実行されます。
&man.rpc.rquotad.8; デーモンにより、NFS クライアント上の &man.quota.1;
コマンドは情報を得ることができ、クライアントマシン上のユーザが自分のクォータの統計を見ることができます。</para>
<para><filename>/etc/inetd.conf</filename> において以下のように
<command>rpc.rquotad</command> を有効にしましょう。</para>
<programlisting>rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad</programlisting>
<para>そして以下のように <command>inetd</command> を再起動します。</para>
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/inetd.pid`</userinput></screen>
</sect2>
</sect1>
<sect1 id="disks-encrypting">
<sect1info>
<authorgroup>
<author>
<firstname>Lucky</firstname>
<surname>Green</surname>
<contrib>寄稿: </contrib>
<affiliation>
<address><email>shamrock@cypherpunks.to</email></address>
</affiliation>
</author>
</authorgroup>
<!-- 11 MARCH 2003 -->
</sect1info>
<title>ディスクパーティションの暗号化</title>
<indexterm>
<primary>ディスク</primary>
<secondary>暗号化</secondary></indexterm>
<para>FreeBSD
は無許可のデータアクセスに対する優れたオンライン保護機能を提供します。
ファイルのパーミッションおよび強制的アクセスコントロール
(MAC: Mandatory Access Control)
(Mandatory Access Control (MAC) を参照)
<!-- Furukawa:2004/1/8
should be refer this after updating security/chapter.sgml
(<xref linkend="mac"> を参照)
-->
は、コンピュータが動作中で、OS が実行中であるときに、
無許可の第三者がデータにアクセスするのを防ぐことに役立ちます。
しかしながら、攻撃者がコンピュータに物理的にアクセスし、
機密データをコピーし分析するためにコンピュータのハードドライブを別のシステムに移動させることができれば、
OS によって強化された許可属性は意味をなさなくなります。</para>
<para>攻撃者が電源の落ちたコンピュータや
ハードドライブを手にいれる手段にかかわらず、
<application>GEOM ベースのディスク暗号化 (gbde: GEOM Based Disk Encryption)</application>
は、著しい資源を持ち本気で攻撃を仕掛けるつもりでやってきた攻撃者からさえもコンピュータのファイルシステム上にあるデータを保護することができます。
個々のファイルだけを暗号化する煩わしい方法と異なり、
<application>gbde</application>
は全ファイルシステムを透過的に暗号化します。
平文テキストは決してハードドライブのプラッタに関係しません。</para>
<sect2>
<title>カーネルで gbde を有効にする</title>
<procedure>
<step>
<title><username>root</username> になる</title>
<para><application>gbde</application>
の設定をするにはスーパユーザの権限が必要になります。
以下のコマンドを実行して、
<username>root</username> になってください。</para>
<screen>&prompt.user; <userinput>su -</userinput>
Password:</screen>
</step>
<step>
<title>オペレーティングシステムのバージョンを確かめる</title>
<para>&man.gbde.4; が動作するには FreeBSD 5.0 以降が必要です。
以下のコマンドを実行して、
オペレーティングシステムのバージョンを確認してください。</para>
<screen>&prompt.root; <userinput>uname -r</userinput>
5.0-RELEASE</screen>
</step>
<step>
<title>カーネルコンフィギュレーションファイルに &man.gbde.4;
対応を追加する</title>
<para>お好みのテキストエディタを使用して、
以下の行をカーネルコンフィギュレーションファイルに加えます。</para>
<para><literal>options GEOM_BDE</literal></para>
<para>FreeBSD カーネルを設定、再コンパイル、インストールします。
この手順は <xref linkend="kernelconfig"> で説明されています。</para>
<para>新しいカーネルで再起動します。</para>
</step>
</procedure>
</sect2>
<sect2>
<title>暗号化されたハードドライブの準備</title>
<para>以下の例では、システムに新しいハードディスクを追加しようとしています。このシステムは単一の暗号化されたパーティションを保持することになります。
このパーティションは <filename>/private</filename>
としてマウントされます。<application>gbde</application> は
<filename>/home</filename> および <filename>/var/mail</filename>
を暗号化するのにも使用できますが、
より複雑な指示を必要となるのでこの解説の範疇を越えています。</para>
<procedure>
<step>
<title>新しいハードドライブを追加する</title>
<para><xref linkend="disks-adding"> で説明されている通りに新しいドライブをシステムに設置します。
この例では、新しいハードドライブは
<devicename>/dev/ad4s1c</devicename> パーティションに
加えられたものとします。
<devicename>/dev/ad0s1<replaceable>*</replaceable></devicename>
デバイスは、この例のシステム上に存在する標準的な
FreeBSD パーティションを表します。</para>
<screen>&prompt.root; <userinput>ls /dev/ad*</userinput>
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4</screen>
</step>
<step>
<title>gbde ロックファイルを保持するディレクトリを作成する</title>
<screen>&prompt.root; <userinput>mkdir /etc/gbde</userinput></screen>
<para><application>gbde</application> ロックファイルには、
暗号化されたパーティションにアクセスするのに必要となる情報が格納されています。
ロックファイルにアクセスしない場合、
<application>gbde</application> は
膨大な手動による介在なしには (ソフトウェアは対応していません)、暗号化されたパーティションに含まれるデータを解読することはできないでしょう。
それぞれの暗号化されたパーティションは別々のロックファイルを使用します。</para>
</step>
<step>
<title>gbde パーティションを初期化する</title>
<para><application>gbde</application>
パーティションは使用する前に初期化されなければなりません。
この初期化は一度だけ実行される必要があります。</para>
<screen>&prompt.root; <userinput>gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c</userinput></screen>
<para>エディタが開くので、
テンプレートをもとにさまざまなオプションを設定してください。
UFS1 または UFS2 で使用するには、sector_size を
2048 に設定してください。</para>
<programlisting>$<!-- This is not the space you are looking
for-->FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working. 512 is the
# minimum and always safe. For UFS, use the fragment size
#
sector_size = 2048
[...]
</programlisting>
<para>&man.gbde.8;
はデータを保護するのに使用するパスフレーズを二度尋ます。
パスフレーズはそれぞれ同じでなければなりません。
データを保護する <application>gbde</application> の能力は、
あなたが選択したパスフレーズの品質にまったく依存します。
<footnote>
<para>記憶するのが簡単で、
安全なパスフレーズを選択する方法については、
<ulink url="http://world.std.com/~reinhold/diceware.html">
Diceware Passphrase</ulink>
ウェブサイトを参照してください。</para></footnote></para>
<para><command>gbde init</command> コマンドは
<application>gbde</application>
パーティションに対するロックファイルを作成します。この例では
<filename>/etc/gbde/ad4s1c</filename> に格納されます。</para>
<caution>
<para><application>gbde</application> ロックファイルは、
すべての暗号化されたパーティションの内容とともにバックアップされなければ <emphasis>なりません</emphasis>。
ロックファイルだけを削除している間、
ロックファイルなしでは信念の固い攻撃者が
<application>gbde</application>
パーティションを解読することを防ぐことができない一方で、
正当な所有者は、&man.gbde.8; およびこの設計者にまったく支持されない膨大な量の作業なしには、
暗号化されたパーティション上のデータにアクセスすることができないでしょう。</para>
</caution>
</step>
<step>
<title>カーネルに暗号化されたパーティションを接続する</title>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c</userinput></screen>
<para>暗号化されたパーティションを初期化する際に選択したパスフレーズを入力するように求められます。
新しい暗号化デバイスは <filename>/dev</filename> に
<filename>/dev/device_name.bde</filename>
として現れます。</para>
<screen>&prompt.root; <userinput>ls /dev/ad*</userinput>
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde</screen>
</step>
<step>
<title>暗号化デバイス上にファイルシステムを作成する</title>
<para>カーネルに暗号化デバイスが接続されると、
デバイス上にファイルシステムを作成できます。
暗号化デバイス上にファイルシステムを作成するには &man.newfs.8;
を使用します。従来の UFS1 ファイルシステムで初期化するより、
新しい UFS2 ファイルシステムで初期化した方が高速なので、
<option>-O2</option> オプションとともに &man.newfs.8;
を使用することが推奨されています。</para>
<note><para>&os;&nbsp;5.1-RELEASE 以降では、<option>-O2</option>
オプションはデフォルトです。</para></note>
<screen>&prompt.root; <userinput>newfs -U -O2 /dev/ad4s1c.bde</userinput></screen>
<note>
<para>&man.newfs.8; は、デバイス名に
<filename><replaceable>*</replaceable>.bde</filename>
拡張子によって認識される、
接続された <application>gbde</application>
パーティションに対して実行されなければなりません。</para>
</note>
</step>
<step>
<title>暗号化パーティションをマウントする</title>
<para>暗号化ファイルシステムに対するマウントポイントを作成します。</para>
<screen>&prompt.root; <userinput>mkdir /private</userinput></screen>
<para>暗号化ファイルシステムをマウントします。</para>
<screen>&prompt.root; <userinput>mount /dev/ad4s1c.bde /private</userinput></screen>
</step>
<step>
<title>暗号化ファイルシステムが利用可能か確かめる</title>
<para>これで暗号化ファイルシステムは &man.df.1; で見ることができ、
利用する準備ができました。</para>
<screen>&prompt.user; <userinput>df -H</userinput>
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1037M 72M 883M 8% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 8.1G 55K 7.5G 0% /home
/dev/ad0s1e 1037M 1.1M 953M 0% /tmp
/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr
/dev/ad4s1c.bde 150G 4.1K 138G 0% /private</screen>
</step>
</procedure>
</sect2>
<sect2>
<title>存在する暗号化ファイルシステムをマウントする</title>
<para>システムを起動する度に、すべての暗号化ファイルシステムは
使用前にカーネルに接続し、
エラーの有無をチェックし、マウントする必要があります。
必要なコマンドは <username>root</username>
ユーザとして実行されなければなりません。</para>
<procedure>
<step>
<title>カーネルに gbde パーティションを接続する</title>
<screen>&prompt.root; <userinput>gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c</userinput></screen>
<para>パーティションの暗号化を初期化する際に選択したパスフレーズを入力するように求められるでしょう。</para>
</step>
<step>
<title>ファイルシステムのエラーをチェックする</title>
<para>暗号化ファイルシステムを自動的にマウントするために
<filename>/etc/fstab</filename> に設定を掲載することはまだできないため、
マウントする前に &man.fsck.8; を実行して、
ファイルシステムのエラーをチェックしなければなりません。</para>
<screen>&prompt.root; <userinput>fsck -p -t ffs /dev/ad4s1c.bde</userinput></screen>
</step>
<step>
<title>暗号化ファイルをマウントする</title>
<screen>&prompt.root; <userinput>mount /dev/ad4s1c.bde /private</userinput></screen>
<para>これで暗号化ファイルシステムが利用できるようになりました。</para>
</step>
</procedure>
<sect3>
<title>暗号化パーティションを自動的にマウントする</title>
<para>スクリプトを作成して、暗号化パーティションを自動的に接続、
チェック、マウントすることは可能です。しかしながら、
安全上の理由によりスクリプトに &man.gbde.8;
パスワードを含めるべきではありません。その代わりに、コンソールまたは
&man.ssh.1; による接続からパスワードを入力するようなスクリプトが手動で実行されることが推奨されます。</para>
</sect3>
</sect2>
<sect2>
<title>gbde が採用した暗号の保護</title>
<para>&man.gbde.8; は 128bit AES の
CBC モードを使用してセクタペイロードを暗号化します。
ディスク上のそれぞれのセクタは異なる AES 鍵で暗号化されます。
セクタ鍵がユーザが入力したパスフレーズからどのように導き出されるかを含め、
<application>gbde</application> の暗号手法の設計についての詳細は、
&man.gbde.4; を参照してください。</para>
</sect2>
<sect2>
<title>互換性に関する問題</title>
<para>&man.sysinstall.8; は
<application>gbde</application> 暗号化デバイスと互換性がありません。
&man.sysinstall.8; を実行する前に
<devicename><replaceable>*</replaceable>.bde</devicename>
デバイスはすべてカーネルから切断されなければなりません。
そうしないと、&man.sysinstall.8; が初めにデバイスを走査する際にクラッシュしてしまうでしょう。
暗号化デバイスを切断するには、以下のコマンドを使用します。</para>
<screen>&prompt.root; <userinput>gbde detach /dev/ad4s1c</userinput></screen>
<para>&man.vinum.4; は &man.geom.4; サブシステムを使用しないので、
<application>vinum</application> ボリュームと
<application>gbde</application>
を併用できないことにも注意してください。</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:
-->