バックアップ ハードウェアコンパチビリティの問題は現在のコンピュータ業界 でもっとも多く起きる種類の問題であり, FreeBSD もこれに無縁ではありません. 市場にある驚くほど多様な種類の製品をサポートすることによって, FreeBSDは 安価に普及している PC ハードウェアで 動かすことができるという利点はこの点では不利でもあります. FreeBSD のサポートするハードウェアを徹底的に調べて 提供することは不可能ですが, このセクションでは FreeBSD に含まれるデバイスドライバとそのドライバがサポートする ハードウェアのカタログを示します. 可能で適切なものについては 特定の製品についての注釈を含めました. また,このハンドブックの コンフィグレーションファイル のセクションにも サポートされているデバイスのリストがありますので そちらもご覧ください. FreeBSD はボランティアプロジェクトでテスト部門には 資金がありませんから, より多くの情報をこのカタログに載せるには あなたがたユーザに頼らなければなりません. あなた自身の経験により, あるハードウェアが FreeBSD で動くか動かないかがわかったとしたら &a.doc; へ e-mail して知らせてください. サポートされているハードウェアについての 質問は, &a.questions; (詳しいことは メーリングリストを参照してください) へ宛ててください. 情報を提供したり質問をする時は FreeBSD のバージョンと使っている ハードウェアのできるだけ詳しい情報を含めることを 忘れないでください. * フロッピーへのバックアップはどうでしょう? テープメディア 一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ DLT があります. 4mm (DDS: Digital Data Storage) 4mm テープはワークステーションのバックアップメディアとして QIC から置き換えられつつあります. この傾向は QICドライブの製造のリーダであった Archiveを Connerが買収し QICドライブの製造を中止したことで加速しました. 4mmドライブは小型で静かですが 8mm ドライブの持っているような信頼性の評判はありません. カートリッジは 8mmカートリッジよりも安価で小型 (3 x 2 x 0.5 インチ; 76 x 51 x 12 mm) です. 4mmドライブ は 8mm同様にヘリカルスキャン (訳注: VTRと同様の回転ヘッドを使う方式) を使用しているという理由でヘッドの寿命は短いです. これらのドライブのデータスループットは 150kB/s程度から最大で500kB/s程度の範囲です. データ容量は 1.3GBから 2.0GBです. ハードウェア圧縮が多くのドライブで可能で, およそ 2倍の容量になります. マルチドライブテープライブラリユニットは1つの筐体に 6ドライブを持つことができ自動的にテープを交換します. ライブラリの容量は 240GBに達します.1つの例外です) 送りだしリールと巻き取りリールの両方が カートリッジの中にあります. 4mmドライブは 8mmドライブ同様にヘリカルスキャンを使います. ヘリカルスキャンの利点と欠点は 4mm ドライブ と 8mm ドライブ共通です. テープの寿命は 2000 回のパスあるいは 100 回のフルバックアップ です. 8mm (Exabyte) 8mm テープは SCSI テープドライブとして最もよく使われているもので, データ交換用として最良の選択です. ほとんどのサイトには Exabyte の 2GB 8mm テープドライブがあるでしょう (訳注: Unix ワークステーションを何台も置いているようなサイトには 1 台くらいはあるというような意味です). 8mm ドライブは信頼性が高く, 使いやすく, 静かです. カートリッジは安価で小型です (4.8 x3.3 x 0.6 インチ; 122 x 84 x 15 mm). 欠点は, テープとヘッドの相対的な速度が高速なために 比較的ヘッドとテープの寿命が短いことです. データスループットは 250kB/s 程度から 500kB/s 程度の範囲です. データ容量は 300MB から 7GB です. ハードウェア圧縮が多くのドライブで可能で,およそ 2 倍の容量になります. 単一のユニットのドライブから, 1 つの筐体に 6 台のドライブと 120 巻のテープを持ったマルチドライブテープライブラリまで 利用することができます. ライブラリではテープはユニットにより 自動的に交換されます. ライブラリの容量は 840GB 以上に達します. データはヘリカルスキャンを使ってテープに記録されます. ヘリカルスキャン方式ではヘッドはメディアに対してある傾き (約6度) に配置されます. テープはヘッドのある円筒の周の 270度にわたって接触します. テープが円筒面を走行する間, 円筒は回転しています. この結果, 高密度のデータのつまったトラックは, 狭い間隔でテープの上端と下端の間を斜めに横切ります. QIC QIC-150 テープとドライブはたぶん最も一般的に使われている ドライブとメディアでしょう. QIC テープドライブは現実的なバックアップドライブとして 少なくとも高価なものではありません. 欠点はメディアのコストです. QIC テープは 8mm や 4mm テープに比較して GB あたりのデータの保存で 5 倍ほど高価です. しかしあなたの必要とする量が半ダース程のテープで十分であれば, QICは正しい選択となるかもしれません. QIC は 最も一般的なテープドライブです. すべてのサイトに QICドライブのどれかの容量のものがあります. 問題は, QIC は同じようなテープ (まったく同じ場合もある) に多様な記録密度があることです. QIC ドライブは静かではありません. これらのドライブはデータ記録を 開始する前に音をたててシークしますし, リード, ライト, シークの時にはっきりと聞こえる音を出します. QIC テープの大きさは (6 x 4 x 0.7 インチ; 152 x 102 x 17 mm). ミニカートリッジ で使われている 1/4 インチ幅のテープについては別に議論します. テープライブラリやチェンジャはありません. データスループットは 150kB/s から 500kB/s の範囲です. データ容量の範囲は 40MB から 15GB です. ハードウェア圧縮が 最近の多くのドライブで使えるようになっています. QIC ドライブは DAT ドライブに置き換えられつつあり, あまり頻繁には利用されなくなっています. データは複数のトラックにわかれてテープに記録されます. トラックはテープメディアの 長さ方向の一端からもう一方の端までです. (訳注: 1トラックの read/write が終わるとテープの 走行方向を反転させ次のトラックの read/write を行います) トラックの数と, それに対応するトラックの幅は テープの容量によって変わります. すべてではありませんがほとんどの最近のドライブは 少なくとも読み出しについては (場合によっては書き込みも) 下位互換性があります. QIC はデータの安全性についてはよいといわれています (ヘリカルスキャンドライブに比べて機構は単純でより丈夫です). テープは 5000回のバックアップで寿命となるでしょう. * ミニカートリッジ DLT DLTはここに示したドライブのタイプの中で 最高速のデータ転送レートです. 1/2 インチ (12.5mm) テープが単リールのカートリッジ (4 x 4 x 1 インチ; 100 x 100 x 25 mm) に入っています. カートリッジのひとつの側面全体がスイングゲートになっています. ドライブの機構がこのゲートを開け, テープリーダを引き出します. テープリーダには楕円形の穴があり, ドライブがテープを引っ掛けるのに使います. 巻き取りのためのリールはドライブの中にあります. ここに挙げた他のカートリッジはすべて ( 9 トラックテープはただ1つの例外です) 送りだしリールと巻き取りリールの両方がカートリッジの中に あります. データスループットは約1.5MB/sで, 4mm, 8mm, QIC テープドライブの3倍です. データ容量は単一のドライブで 10GBから 20GBの範囲です. マルチテープチェンジャ,マルチテープドライブ,5から 900巻のテープを1から20ドライブで扱う マルチドライブテープライブラリがあり, 50GB から 9TB の容量が得られます. データは ( QIC テープのように) テープの走行方向と並行に複数あるトラックへ記録されます. 2 つのトラックに同時書き込みを行います. Read/Write ヘッドの寿命は比較的長いと言えます. テープの走行が止まればヘッドと テープの間の相対運動はありません. 新品のテープを最初に使う場合 新品の完全な空テープを読もうとしたり書き込もうとすると処理 は失敗するでしょう. 次のようなコンソールメッセージが出るでしょう. st0(ncr1:4:0): NOT READY asc:4,1 st0(ncr1:4:0): Logical unit is in process of becoming ready テープに識別ブロック (Identifire Block:block number 0) がありません.QIC-525標準の採用されている QICテープドライブのすべてで識別ブロックをテープに書きます. 2つの解決方法があります. (訳注: 方法1)mt fsf 1 によってテープドライブは識別ブロックをテープに書きます. (訳注: 方法2)フロントパネルのボタンを押してテープをとりだします. 再びテープを入れ,データをテープに &man.dump.8; します. &man.dump.8; はそのうちに DUMP: End of tape detected と表示し, コンソールには HARDWARE FAILURE info:280 asc:80,96と表示されるでしょう. mt rewindを使ってテープを巻戻します. この次からはテープの操作は成功するでしょう. バックアッププログラム よく使われる3つのプログラムは &man.dump.8;, &man.tar.1;, &man.cpio.1; です. ダンプとリストア &man.dump.8; と &man.restore.8; は伝統的な Unixのバックアッププログラムです. これらはドライブのファイルシステム上のファイル, リンク, ディレクトリをディスクブロックの集まりとして処理します. &man.dump.8; はデバイスやファイルシステム全体をバックアップし, 一部分のバックアップや, &man.ln.1; によるソフトリンクや 他のファイルシステムをマウントを行った, 1 つ以上のファイルシステムにまたがる ディレクトリツリーのバックアップはできません. &man.dump.8; はファイルやディレクトリを構成する データブロックをテープに書くだけで, ファイルやディレクトリをテープに書くことはありません. &man.dump.8; には初期の ATT UNIX のバージョン 6 (1975 年ごろ) に由来する癖が残っています. デフォルトのパラメタは 9 トラックテープ (6250 bpi) に適したものになっていて現在の高密度メディア (最大 62,182 ftpi) に適していません. 現在のテープドライブの容量を有効に利用するため, デフォルト値をコマンドラインで置き換えなければなりません. &man.rdump.8; と &man.rrestore.8; は他のコンピュータに接続されているテープドライブに ネットワーク経由でバックアップをします. どちらのプログラムもリモートテープドライブにアクセスするために &man.rcmd.3; と &man.ruserok.3; に依存しています. このためユーザがバックアップを実行するためには rhosts によるリモートアクセスが必要です. &man.rdump.8; と &man.rrestore.8; の引数はリモートコンピュータに適切なものを用います. &man.rrestore.8; はリモートコンピュータから使うのに適しています. (例えば FreeBSD コンピュータより komodo という名前の Sun に接続されている Exabyte テープドライブへ /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrst8 /dev/rsd0a 2>&1 として rdumpしたような場合の restoreに使います) 警告: セキュリティは rhostsの管理にかかっています. あなたの状況を注意深く調べてください. Tar &man.tar.1; ATT Unix のバージョン 6 (1975ごろ) にさかのぼる事ができます. &man.tar.1; はファイルシステムと協調して機能し, ファイルやディレクトリをテープに書きます. &man.tar.1; は &man.cpio.1; で使えるようなフルレンジのオプションは持ちませんが &man.cpio.1; で使うような奇妙なコマンドパイプラインは必要ありません. 大部分の &man.tar.1; にはネットワーク経由のバックアップの機能はありませんが, FreeBSD で使用されている GNU の &man.tar.1; は, rdump とおなじ構文でリモートデバイスを扱うことができます. komodo というホスト名の Sun に繋いである Exabyte のテープデバイスに対して &man.tar.1; を実行するには, 次のようにします. /usr/bin/tar cf komodo:/dev/nrst8 . 2>&1 リモートデバイスをサポートしていない tar を使用している場合は, パイプラインと &man.rsh.1; を使うことで, リモートテープデバイスにデータを送る事ができます. (コマンド使用例はまだです) Cpio &man.cpio.1; は本来, Unix ファイルを磁気メディアで交換するためのプログラムです. &man.cpio.1; はバイトスワッピング, 多くの異なるアーカイブフォーマットの書き込みのオプション (それ以外にも多数のオプションがあります)があり, パイプで他のプログラムにデータを渡す事もできます. この最後に挙げた特徴により, &man.cpio.1; はインストールメディアについては優れた選択です. &man.cpio.1; は STDIN からの入力でなければならず, ディレクトリツリーの探索や ファイルリストについての機能はありません. &man.cpio.1; はネットワーク経由のバックアップの機能はありません. リモートテープドライブにはパイプラインと &man.rsh.1; を使って送る事ができます. (コマンド使用例はまだです) Pax &man.pax.1; は tarcpio に対する IEEE/POSIX の回答です. 長年の間, 様々なバージョンの tarcpio は, 互いにわずかながら非互換性を有していました. 各々をしらみ潰しに標準化する代わりに, POSIX は新しいアーカイブユーティリティを作ることにしました. pax は専用に開発された新しいフォーマットに加えて, いくつもの cpio や tar のフォーマットの読み書きに対応しようと試みています. コマンド群は tar よりも cpio の方にいくぶん似ています. Amanda Amanda (Advanced Maryland Network Disk Archiver) は単一のプログラムではなくクライアント / サーバ型のバックアップシステムです. Amanda サーバは, Amanda クライアントであるネットワークで サーバに接続された複数のコンピュータから 一つのテープドライブへバックアップをおこないます. このような場合の一般的な問題はいくつもの大容量の ディスクからデータディレクトリをテープにバックアップするには 時間がかかりすぎてしまうという事です. Amanda はこの問題を解決します. Amanda は同時に複数のファイルシステムのバックアップを おこなう時に 「ホールディングディスク」を使う事ができます. Amandaの設定ファイルに書いたすべてのファイルシステムの フルバックアップを特定の間隔でとるために「アーカイブセット」 と呼ばれるテープグループを作ります. これには夜間に作られるすべてのファイルシステムの増分 (あるいは差分として) のバックアップも含みます. 障害の起きたファイルシステムの回復には最も新しい フルバックアップと増分のバックアップが必要です. 設定ファイルでバックアップのコントロールと Amanda によるネットワークトラフィック量を設定します. Amanda はデータをテープに書くのにバックアッププログラムの いずれかを使うでしょう. Amanda はその一部分でもパッケージでも利用可能ですが, デフォルトではインストールされません. 何もしない “何もしない” というのはコンピュータのプログラムではありませんが, バックアップの戦略として最も広く採用されている物です. これには初期投資が必要ありません. したがわなければならないバックアップスケジュールもありません. ただ何もしないだけです. もしデータに何かが起きたら, 苦笑いして耐えてください. あなたにとって時間やデータの価値が少ないか あるいはまったくないのであれば “何もしない” のはあなたのコンピュータに最も適した バックアッププログラムでしょう. しかし注意してください. Unix は便利なツールです. 6 ヶ月も使っていれば価値のあるファイルの 山ができ上がっているでしょう. “何もしない” は /usr/obj やその他の, コンピュータによってつくり出された ディレクトリツリーについては適切な方法です. 一つの例はこのハンドブックのファイルで, これらは SGML のファイルより生成された物です. HTML ファイルのバックアップを作る必要はありません. SGML のソースファイルは定期的にバックアップします. どのバックアッププログラムが最適でしょう? 定期的に &man.dump.8; しましょう. Elizabeth D. Zwicky はここで検討したプログラムすべてについて 拷問的なテストをおこないました. すべてのデータと Unixファイルシステムの状態すべてを保存するには明らかに &man.dump.8; でしょう. Elizabeth は大きく変化に富んだ異常な状態 (いくつかはあまり異常でもない状態のものもあります) になっているファイルシステムで, それぞれのプログラムでファイルシステムの バックアップとリストアを行ってテストしました. 特色のある状態には, ホールを持つファイル, ホールとヌルブロックを持つファイル, 奇妙な文字をファイル名に持つファイル, 読み出し不可, 書き込み不可のファイル, デバイスファイル, バックアップ中にファイルのサイズを変更する, バックアップ中にファイルの作成/削除をおこなうなどがあります. 彼女は1991年10月の LISA Vで結果の発表をしています.torture-testing Backup and Archive Programs を参照してください. 緊急時のリストア手順 災難の起きる前に 起き得るどのような災難に対しても以下の 4ステップだけが必要な準備です. ステップ 1では, ファイルシステムテーブル(/etc/fstab) やブートメッセージで示されるすべてのディスクの disklabelをそれぞれ2コピーづつプリント (例えば disklabel sd0 | lpr を実行します) します. ステップ 2では, boot.flpfixit.flp にそのシステムのすべてのデバイスドライバが 含まれているか確認します. 最も簡単な確認の方法は, フロッピーをドライブに入れてリブートし, ブートメッセージを確認することです. あなたのシステムのデバイスがすべて含まれ, 機能していれば, step 3へ飛んでください. そうでないなら, そのシステムのすべてのディスクをマウントでき, テープドライブにもアクセスできる 2種類のカスタムブートフロッピーディスクを作る必要があります. これらのフロッピーには &man.fdisk.8;, &man.disklabel.8;, &man.newfs.8;, &man.mount.8;, と利用したいバックアッププログラムが 入っていなければなりません. これらのプログラムはスタティックリンクされた プログラムである必要があります. &man.dump.8; を使うのであればフロッピーに &man.restore.8; を入れる必要があります. ステップ 3では, 通常の方法でバックアップを作ります. 最新のバックアップの後でおこなわれた変更は 回復することはできません. バックアップテープにライトプロテクトをしてください. ステップ 4では, フロッピー (boot.flpfixit.flp あるいはステップ 2で作った2枚のカスタムブートフロッピーディスクです) とバックアップテープのテストをします. 手順のノートを作りましょう. このノートはブートフロッピーディスク, バックアップテープに入れておきプリントアウトしておきます. あなたがリストアをおこなうような時は おそらく錯乱状態でしょうからこのノートはバックアップを 破壊してしまうようなことを防ぐのに役立つでしょう (どのようにして破壊するって? tar xvf /dev/rst0 とする替りに偶然 tar cvf /dev/rst0 とタイプしてバックアップテープに上書きしてしまうかも しれません). 訳注: 上書きはライトプロテクトをしておけば防げますが, なんらかの原因でプロテクトがはずれているかもしれません. ちなみに訳者の経験から言えば上のようなミスタイプは 結構起きます. 安全性を増すために, 毎回ブートフロッピーディスクを作り, 2 巻のバックアップテープを取ります. 一方を離れた場所に保管します. 離れた場所は同じ建物の地下室ではいけません. 世界貿易センタービルにあった数多くの会社は 苦い経験よりこの教訓を得ました. 離れた場所とはコンピュータやディスクドライブから かなり離れていて物理的に分離されていなければなりません. ブートフロッピーディスクを作るスクリプトの一例 /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 sd0 ./MAKEDEV sd1 ./MAKEDEV sd2 ./MAKEDEV st0 ./MAKEDEV pty0 cd / # # create minimum filesystem table 最小限のファイルシステムテーブル # cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < 災難の後に 重要な問題は, ハードウェアが生き残ったかどうかです. 定期的なバックアップを取っていれば ソフトウェアについて心配する必要はありません. ハードウェアがダメージを受けていたら, 最初にそのダメージを受けた部品を交換してください. ハードウェアに問題がなければ, フロッピーをチェックしてください. カスタムブートフロッピーディスクを使っているのであれば シングルユーザ(boot: プロンプトの出た時に -s とタイプしてください) でブートしてください. それから次の 「ファイルシステムを1つずつ回復する」 を読んでください. boot.flpfixit.flp を使っているのであればこのまま読み続けてください. boot.flp を入れてブートしてください. 本来のインストールメニューが表示されるはずです. (ここで) fixit XXXオプションを選びます. 指示の通り fixit.flp を入れてください. restore とその他の必要なプログラムは /mnt2/standに置かれています. ファイルシステムを一つずつ回復する 最初のディスクのrootパーティションを &man.mount.8; (例えば mount /dev/sd0a /mnt のように) マウントして見てください. ディスクラベルが破壊されている場合は &man.disklabel.8; を使ってあらかじめプリントしておいた通りに パーティションを作り直しラベルをつけてセーブしてください. &man.newfs.8; を使いファイルシステムを作り直します. ルートパーティションを読み書き可能にマウント (mount -u -o rw /mnt) しなおします. バックアッププログラムとバックアップテープを使って このファイルシステムのデータを回復します (例えば restore vrf /dev/st0とします). ファイルシステムをアンマウント (umount /mntなど) して, 障害を受けたファイルシステムそれぞれについて 繰り返してください. システムが動き出したら, 新しいテープにデータをバックアップしてください. どのような理由で再び事故が起きたりデータが 失われるかはわかりません. これに時間を費す事で, 後々の災難から救われる事になります. * 災難対策をしていませんでした. どうしたらいいでしょう?