Index: head/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml
===================================================================
--- head/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml (revision 50698)
+++ head/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml (revision 50699)
@@ -1,1696 +1,1696 @@
&os; のアップデートとアップグレード
Jim
Mock
再構成、再編成および改訂:
Jordan
Hubbard
原作:
Poul-Henning
Kamp
John
Polstra
Nik
Clayton
この章では
あるリリースから次のリリースまでの期間にも、
&os; の開発は休みなく続けられています。
最新の開発ツリーと同期することを好む人がいれば、
公式のリリース版を好んで使う方もいるでしょう。
しかしながら、公式のリリースといえども、
セキュリティや他の重要な修正のため、時にはアップデートを行う必要があります。
使用しているバージョンに関わらず、&os; は、
手元のシステムを最新の開発ツリーと同期するために必要なツールをすべて用意しています。
そして、これらのツールを使って、
&os; のバージョンをアップグレードできます。
この章では、開発ブランチを追いかける方法、および、&os;
システムをアップデートする基本的なツールについて解説します。
この章を読んで分かるのは:
freebsd-update もしくは
Subversion
を使った &os; システムの更新方法
インストールされているシステムと、変更が行われていない状態との比較方法。
Subversion
またはドキュメント用の ports を使って、
インストールされているドキュメントを最新版にアップデートする方法。
2 つの開発ブランチ、&os.stable; と &os.current; の違い
ベースシステム全体を再構築しインストールする方法
この章を読む前に、以下の準備をしましょう。
ネットワーク接続の適切な設定
()
サードパーティ製のソフトウェアのインストール方法の習得
()
この章を通じて、
&os; のソースコードをダウンロードしたりアップデートするのに
svn が用いられます。
このコマンドを使うためには、devel/subversion port または package
をインストールしておく必要があります。
&os; Update
Tom
Rhodes
寄稿:
Colin
Percival
ベースとなったノートの提供:
Updating and Upgrading
freebsd-update
updating-upgrading
システム管理における重要な側面として、
すみやかにセキュリティパッチを適用し、
オペレーティングシステムを新しいリリースにアップグレードすることがあげられます。
&os; には、これらの処理を行うために freebsd-update
と呼ばれるユーティリティが用意されています。
このユーティリティを用いると、&os; のセキュリティおよび
eratta アップデートをバイナリによって行うことができます。
手動でパッチもしくは新しいカーネルをコンパイルし、
インストールする必要はありません。
バイナリアップデートは、
セキュリティチームがサポートしているすべてのアーキテクチャとリリースで利用できます。
http://www.FreeBSD.org/ja/security/ には、
サポートが行われているリリースや保守終了予定日の一覧があります。
このユーティリティは、マイナーリリースであったり、
他のリリースブランチへのアップグレードにも対応しています。
新しいリリースにアップデートする前に、
アップデートしようとしているリリースのアナウンスに目を通し、
重要な情報がないかどうかを確認してください。
リリースのアナウンスは http://www.FreeBSD.org/ja/releases/
で確認できます。
もし crontab の中に
&man.freebsd-update.8; の機能が含まれていたら、
オペレーティングシステムのアップグレード作業を終えるまでは無効にしてください。
この節では、freebsd-update
で使われる設定ファイルの説明、
セキュリティパッチの適応方法のデモンストレーション、
オペレーティングシステムをアップグレードする際に考慮すべきことについて説明します。
設定ファイル
freebsd-update のデフォルトの設定ファイルは、
そのままでも用いることができます。
/etc/freebsd-update.conf
の設定をデフォルトからきめ細かく調整して、
アップデートプロセスを制御するユーザもいます。
このファイルのコメントにおいて利用可能なオプションが説明されていますが、
以下の項目については補足が必要でしょう。
# Components of the base system which should be kept updated.
Components world kernel
このパラメータは、&os; のどの部分を最新に維持するかを設定します。
デフォルトでは、ベースシステム全体、
そしてカーネルをアップデートします。
src/base や src/sys
のように、個々の項目を指定することもできます。
この部分についてはデフォルトのままにしておき、
アップデートする項目をユーザがリストに加える形にするのがベストでしょう。
ソースコードとバイナリが同期していないと、
長い年月の間に悲惨な結果がもたらされる可能性があります。
# Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePaths /boot/kernel/linker.hints
/bin や /sbin
等の特定のディレクトリをアップデートで変更しないように、
これらのパスを追加してください。
このオプションは、ローカルの変更点を freebsd-update
が上書きすることを防ぐ目的にも利用できます。
# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile
このオプションは、指定したディレクトリにある設定ファイルを、
ローカルで変更されていない場合のみアップデートします。
ユーザがこれらのファイルを変更していると、
これらのファイルの自動アップデートは妨げられます。
他に、KeepModifiedMetadata
という別のオプションが存在します。
このオプションは、freebsd-update
がマージ中に変更点を保存するようにします。
# When upgrading to a new &os; release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/ /boot/device.hints
freebsd-update
がマージすべきファイルが存在するディレクトリの一覧です。
ファイルのマージのプロセスは、
&man.mergemaster.8; と同様 &man.diff.1; パッチの連続ですが、
選択肢は少なく、マージを承認するか、エディタを起動するか、
freebsd-update
を中断するかどうかを選んでください。
もし、心配な点があれば、
/etc
をバックアップしてからマージを承認してください。
mergemaster の詳細な情報については、
&man.mergemaster.8; で確認してください。
# Directory in which to store downloaded updates and temporary
# files used by &os; Update.
# WorkDir /var/db/freebsd-update
ここではすべてのパッチや一次ファイルを置くディレクトリを指定しています。
バージョンをアップグレードするのであれば、
この場所には少なくともギガバイトの空き容量が必要です。
# When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which &os; Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents no
このオプションを yes に設定すると、
freebsd-update は
Components のリストが完全に正しいと判断し、
このリスト以外の変更点については取り扱いません。
freebsd-update は、効率的に
Components
リストに属するファイルをアップデートします。
セキュリティパッチの適用
&os; のセキュリティパッチを適用する過程は簡単になりました。
管理者は freebsd-update を使うことで、
システムを完全にパッチがあたった状態に保つ事ができます。
&os; セキュリティ勧告の詳細については、
&os; セキュリティ勧告
の節で説明されています。
以下のコマンドを実行すると、&os;
のセキュリティパッチがダウンロードされ、インストールされます。
最初のコマンドは、未対応のパッチがあるかどうかを調べます。
もし未対応のパッチがある場合には、
パッチが当てられた際に変更されるファイルのリストが作成されます。
2 番目のコマンドはパッチを適用します。
&prompt.root; freebsd-update fetch
&prompt.root; freebsd-update install
アップデートによってカーネルにパッチが当たった場合には、
パッチが当たったカーネルで起動するように、
システムを再起動する必要があります。
もし、実行中のバイナリにパッチが当てられた場合には、
パッチの当てられたバージョンのバイナリが使われるように、
影響のあるアプリケーションを再起動する必要があります。
毎日一度アップデートがないかどうかを自動的に確認するように設定するには、
以下のエントリを /etc/crobntab
に追加してください。
@daily root freebsd-update cron
パッチが存在すると、
自動的にダウンロードされますが、適用はされません。
root宛てにメールで、
ダウンロードされたパッチを確認し、
freebsd-update install
とともに手動でインストールする必要のあることが通知されます。
うまく行かなかった場合には、freebsd-update
を以下のように実行すると、最後の変更までロールバックできます。
&prompt.root; freebsd-update rollback
Uninstalling updates... done.
カーネルまたはカーネルモジュールがアップデートされた場合には、
完了後にもう一度システムを再起動して、
影響のあったバイナリを再起動してください。
freebsd-update
ユーティリティが自動的にアップデートするカーネルは
GENERIC のみです。
カスタムカーネルがインストールされている場合には、
freebsd-update がインストールした後、
カーネルを再構築し、もう一度インストールする必要があります。
しかしながら、GENERIC カーネルが
/boot/GENERIC に存在する場合には、
現在のシステムで実行されているカーネルでなくとも、
freebsd-update
によりアップデートされます。
GENERIC カーネルを、
常に /boot/GENERIC に置いておいてください。
さまざまな問題を解決する際や、
バージョンをアップグレードする際に助けとなります。
GENERIC カーネルを用意する方法については、
を参照してください。
/etc/freebsd-update.conf
のデフォルトの設定を変更しない限り、
freebsd-update は、
他の更新と共にカーネルソースをアップデートします。
新しいカスタムカーネルの再構築と再インストールは、
通常通り行うことができます。
freebsd-update は、
常にカーネルをアップデートするとは限りません。
freebsd-update install
によってカーネルソースが変更されなかった場合には、
カスタムカーネルを再構築する必要はありません。
しかしながら freebsd-update は、
/usr/src/sys/conf/newvers.sh
を常にアップデートします。
これは、現在のシステムのパッチレベルを
uname -r が -p
で表示する時にこのファイルが参照されます。
そのため、何も変更されていない場合でも、
カスタムカーネルを再構築することにより、
uname がシステムの正確なパッチレベルを報告するようになります。
各システムにインストールされているアップデートをすばやく把握できるようになるので、
特に複数のシステムを管理するときに助けとなります。
メジャーおよびマイナーバージョンのアップグレードを行う
&os; のマイナーバージョン間のアップグレード、
たとえば、&os; 9.0 から &os; 9.1 へのアップグレードは、
マイナーバージョン アップグレードと呼ばれます。
メジャーバージョン アップグレードは、
&os; 9.X から &os; 10.X へのアップグレードといった、
&os; のメジャーバージョンが変わるようなアップグレードのことです。
どちらのアップグレードもリリース番号のターゲットを指定する事で、
freebsd-update によって行う事ができます。
カスタムカーネルを使っているシステムでは、
アップグレードを行う前に
GENERIC カーネルが、
/boot/GENERIC
に置かれている事を確認してください。
GENERIC カーネルを用意する方法については、
を参照してください。
以下のコマンドを実行すると、&os; 9.0
のシステムを &os; 9.1 にアップグレードします。
&prompt.root; freebsd-update -r 9.1-RELEASE upgrade
コマンドを実行すると、freebsd-update
は設定ファイルと現在のシステムを評価し、
アップデートするために必要な情報を収集します。
画面には、どのコンポーネントが認識され、
どのコンポーネントが認識されていないといったリストが表示されます。
たとえば以下のように表示されます。
Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 9.0-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/base world/info world/lib32 world/manpages
The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs
Does this look reasonable (y/n)? y
ここで、freebsd-update
はアップグレードに必要なすべてのファイルをダウンロードします。
何をインストールし、どのように進むかといった質問をされることもあります。
カスタムカーネルを使っていると、
上記のステップで以下のような警告が表示されます。
WARNING: This system is running a "MYKERNEL" kernel, which is not a
kernel configuration distributed as part of FreeBSD 9.0-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"
この時点ではこの警告を無視してもかまいません。
アップデートされた GENERIC カーネルは、
アップグレードプロセスの途中で利用されます。
すべてのパッチがローカルシステムへダウンロードされたら、
次にパッチが適用されます。
このプロセスには時間がかかります。
この時間はコンピュータの性能とワークロードに依存します。
その後、設定ファイルがマージされます。
このプロセスでは、ユーザはファイルをマージするか、
画面上にエディタを立ち上げて手動でマージするかを尋ねられます。
プロセスが進むごとに、成功したマージのすべての結果の情報がユーザに示されます。
マージに失敗したり、無視した場合には、プロセスが中断します。
ユーザによっては /etc
のバックアップを取り、
master.passwd や group
のような重要なファイルを後で手動でマージする方もいます。
すべてのパッチは別のディレクトリでマージされており、
まだ、システムには反映されていません。
すべてのパッチが正しく適用され、
すべての設定ファイルがマージされてプロセスがスムーズに進んだら、
ユーザは以下のコマンドを用いて、
変更点をディスクに反映してください。
&prompt.root; freebsd-update install
パッチは最初にカーネルとカーネルモジュールに対して当てられます。
システムがカスタムカーネルを実行している場合には、
&man.nextboot.8; を使って次回の再起動時のカーネルを、
アップデートされた /boot/GENERIC
に設定してください。
&prompt.root; nextboot -k GENERIC
GENERIC カーネルで再起動する前に、
カーネルにシステムが適切に起動するために必要なすべてのドライバが含まれていること、
もしアップデートしているコンピュータがリモートでアクセスしているのであれば、
ネットワーク接続に必要なすべてのドライバも含まれていることを確認してください。
特に、これまで実行しているカスタムカーネルが、
カーネルモジュールとして提供されているビルドインの機能を含んでいるのであれば、
これらのモジュールを一時的に /boot/loader.conf
の機能を用いて、
GENERIC に読み込んでください。
アップグレードプロセスが終わるまでは、
重要ではないサービスを無効にするとともに、
必要のないディスクやネットワークのマウントなども避けることが推奨されています。
アップデートされたカーネルでコンピュータを再起動してください。
&prompt.root; shutdown -r now
システムがオンラインに戻ったら、以下のコマンドを使って
freebsd-update を再び実行してください。
アップデートプロセスの状態は保存されているので、
freebsd-update を実行すると、
最初からではなく、次のステップに進み、
古い共有ライブラリとオブジェクトファイルを削除します。
&prompt.root; freebsd-update install
使用しているライブラリのバージョン番号の付けられ方によって、
3 つのインストールフェーズが 2 つになる場合もあります。
アップグレードはこれで終了です。
もしメジャーアップグレードを行った場合には、
で説明されているようにすべての ports および package
を再構築してください。
&os; 9.X 以降のシステムにおけるカスタムカーネル
freebsd-update を使う前に、
GENERIC カーネルが
/boot/GENERIC
に置かれていることを確認してください。
ただ一度だけカスタムカーネルを構築したのであれば、
/boot/kernel.old
は GENERIC カーネルそのものです。
このディレクトリの名前を
/boot/kernel
へと変更してください。
もし、2 回以上カスタムカーネルを構築した後であったり、
カスタムカーネルを構築した回数がわからなければ、
現在のオペレーティングシステムのバージョンの
GENERIC カーネルを入手してください。
コンピュータへの物理的なアクセスが可能であれば、
インストールメディアから GENERIC
カーネルをインストールできます。
&prompt.root; mount /cdrom
&prompt.root; cd /cdrom/usr/freebsd-dist
&prompt.root; tar -C/ -xvf kernel.txz boot/kernel/kernel
別な方法としては、
GENERIC カーネルをソースから再構築して、
インストールしてください。
&prompt.root; cd /usr/src
&prompt.root; make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null
freebsd-update がこのカーネルを
GENERIC カーネルとして認識するために、
GENERIC コンフィグレーションファイルは、
とにかく変更してはいけません。
また、特別なオプションを指定しないで構築してください。
freebsd-update は、
/boot/GENERIC
が存在する事だけを必要とするので、
GENERIC
カーネルで再起動する必要はありません。
メジャーバージョンアップグレード後の
package のアップグレード
一般的に、マイナーバージョンアップグレードの後では、
インストールされているアプリケーションは、問題なく動作するでしょう。
メジャーバージョンが異なるとアプリケーションバイナリーインタフェース
(ABI) が異なるため、
サードパーティ製のアプリケーションの多くは動作しなくなるでしょう。
メジャーバージョンアップグレード後には、
インストールされているすべての packages, ports
をアップグレードする必要があります。
package は、pkg upgrade
を使ってアップグレードできます。
インストールされている ports をアップグレードする場合には、
ports-mgmt/portmaster
といったユーティリティを使ってください。
すべての package の強制的なアップグレードでは、
バージョン番号が上がらない package に対しても、
リポジトリから最新のバージョンで、インストールされている
package を置き換えます。
&os; のメージャーバージョンが変わるようなアップグレードでは、
ABI のバージョンも変わるため、
このようなアップグレードが必要になります。
強制的なアップグレードを行うには、以下のように実行してください。
&prompt.root; pkg-static upgrade -f
インストールされているすべてのアプリケーションを再構築するには、
以下のコマンドを実行してください。
&prompt.root; portmaster -af
このコマンドを実行すると、
設定を変更するオプションを持つアプリケーションは、
設定変更のスクリーンを表示し、
ユーザからの指示待ちの状態で停止します。
この振る舞いをやめ、デフォルトのオプションを使用するには、
上記のコマンドに を含めてください。
ソフトウェアのアップグレードが終わったら、最後にもう一度
freebsd-update
を実行して、
すべてのアップグレードプロセスのやり残し作業を行い、
アップグレードのプロセスを完了してください。
&prompt.root; freebsd-update install
GENERIC
カーネルを一時的に読み込んでいたのであれば、 に書かれている手順に従って、
新しいカスタムを構築し、インストールしてください。
コンピュータを再起動し、新しい &os; を立ち上げてください。
これでアップグレードのプロセスは完了です。
システムの状態の比較
freebsd-update を用いて、
インストールされている &os; の状態と、
正しく動作することが分かっている状態とを比較できます。
このコマンドは、現在のシステムのユーティリティ、ライブラリ、
設定ファイルを評価するので、
組み込みの侵入検知システム (IDS)
として使うことができます。
このコマンドは、security/snort
のような本当の IDS
の置き換えになるものではありません。
freebsd-update はデータをディスクに保存するので、
不正な変更が行われる可能性があります。
kern.securelevel と、
freebsd-update のデータを使用しないときに、
読み取りのみの許可属性に設定されているファイルシステムに置くことで、
不正な変更の可能性を低くできますが、
よりよい解決方法は、
DVD
または安全に保存されている外部 USB
ディスクのような安全なディスクとシステムを比較することです。
組み込まれているユーティリティを用いた、別の方法による
IDS 機能については、
&os; バイナリによる検出
の節をご覧ください。
比較を行うには、
結果の出力先のファイル名を指定してください。
&prompt.root; freebsd-update IDS >> outfile.ids
システムは検査され、リリースファイルの SHA256
ハッシュ値と現在インストールされているファイルのハッシュ値がファイルの一覧と共に、
指定した出力先のファイルに送られます。
これらの行は極めて長いのですが、出力形式は簡単にすぐに解析できます。
たとえば、これらのリリースで異なっているすべてのファイルを知りたいのであれば、
以下のコマンドを実行してください。
&prompt.root; cat outfile.ids | awk '{ print $1 }' | more
/etc/master.passwd
/etc/motd
/etc/passwd
/etc/pf.conf
上の表示例では出力は切り捨てられており、
実際にはもっと多くのファイルが存在します。
これらのファイルには、運用中に変更されるファイルがあります。
たとえば、/etc/passwd
はユーザがシステムに追加されると変更されます。
また、カーネルモジュールは、
freebsd-update
によりアップデートされるため、変更されます。
このような特別なファイルやディレクトリを除外するには、
それらを /etc/freebsd-update.conf の
IDSIgnorePaths オプションに追加してください。
ドキュメントのアップデート
Updating and Upgrading
Documentation
Updating and Upgrading
ドキュメントは、&os; オペレーティングシステムの必須要素です。
&os; ドキュメントの最新バージョンは、&os; ウェブサイト (http://www.freebsd.org/doc/)
から入手できますが、
&os; ウェブサイト、ハンドブック、FAQ
および文書の最新版をローカルに用意しておくと便利です。
この章では、ソースまたは Ports Collection を使って、
ローカルの &os; ドキュメントを最新に保つ方法を説明します。
ドキュメントを編集したり、
ドキュメントの誤りを報告する方法については、
新しい貢献者のための &os; ドキュメンテーションプロジェクト入門 (http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/)
をご覧ください。
ソースから &os; ドキュメントをインストールする
ソースから &os; ドキュメントを構築するのに必要なツールは、
&os; のベースシステムには含まれていません。
svn などの必要なツールは、
&os; ドキュメンテーションプロジェクトが開発している
textproc/docproj package または port
からインストールできます。
インストールしたら、svn
を使って、ドキュメントのソースをダウンロードしてください。
&prompt.root; svn checkout https://svn.FreeBSD.org/doc/head /usr/doc
最初にドキュメントのソースをダウンロードするには少し時間がかかります。
ダウンロードが終わるまでお待ちください。
ダウンロードしたドキュメントのソースをアップデートするには、
以下のコマンドを実行してください。
&prompt.root; svn update /usr/doc
最新のドキュメントのソースのスナップショットを
/usr/doc に用意できたら、
インストールされているドキュメントをアップデートする準備はすべて整いました。
利用可能なすべての言語のドキュメントをアップデートするには、
以下のように入力してください。
&prompt.root; cd /usr/doc
&prompt.root; make install clean
もし、ある特定の言語のみをアップデートしたいのであれば、
/usr/doc
の下にある各言語のサブディレクトリで make
を実行してください。
&prompt.root; cd /usr/doc/en_US.ISO8859-1
&prompt.root; make install clean
ドキュメントをアップデートする別の方法は、
/usr/doc
または各言語のサブディレクトリで以下のコマンドを実行してください。
&prompt.root; make update
FORMATS を設定して、
以下のようにインストールする出力形式を指定できます。
&prompt.root; cd /usr/doc
&prompt.root; make FORMATS='html html-split' install clean
ドキュメンテーションの一部のアップデートを簡単にするオプションや、
特定の翻訳のビルドを行うためのオプションが用意されています。
これらのオプションは、システム全般のオプションである
/etc/make.conf や、make
に与えるコマンドラインオプションで設定できます。
オプションには以下のようなものがあります。
DOC_LANG
ビルドおよびインストールの言語およびエンコーディングの一覧。
たとえば、英語のドキュメントを指定するには
en_US.ISO8859-1 を設定します。
FORMATS
ビルドを行うフォーマット、または出力フォーマットの一覧。
現在は html,
html-split, txt,
ps そして pdf
に対応しています。
DOCDIR
ドキュメントをインストールする場所。デフォルトは
/usr/share/doc です。
&os; のシステム全般のオプションに関連するもっと多くの
make 変数については、
&man.make.conf.5; をご覧ください。
ports を用いたドキュメンテーションのアップデート
Marc
Fonvieille
ベースとなった作業:
Updating and Upgrading
documentation package
Updating and Upgrading
これまでのセクションでは、ソースコードを用いた &os;
ドキュメントのアップデート方法について説明してきました。
この節では、インストールされている
&os; のドキュメントをアップデートするもう一つの方法である、
Ports Collection を用いた方法について説明し、
以下について説明します。
構築済のドキュメントの packages をインストールする方法。
ローカルでの構築作業やドキュメンテーションツールチェインをインストールする必要はありません。
ports フレームワークを使ったドキュメントのソースの構築方法。
チェックアウトおよび構築作業が簡単になります。
&os; のドキュメントをアップデートするこれらの方法は、
&a.doceng; が毎月アップデートしている
ドキュメンテーション ports および packages
によりサポートされています。
これらの ports は、&os; Ports Collection の
docs カテゴリ (http://www.freshports.org/docs/)
にまとめられています。
ドキュメンテーション ports の構成は以下の通りです。
misc/freebsd-doc-en package または portは、
すべての英語文書をインストールします。
misc/freebsd-doc-all メタ package
もしくは port は、
すべての利用可能な言語のすべてのドキュメントを構築します。
各言語のために package または port
が用意されています。たとえば、
misc/freebsd-doc-hu
はハンガリー語のドキュメンテーション port です。
バイナリ package を使うと、
インストールする言語に用意されているすべての形式の
&os; ドキュメントがインストールされます。
たとえば、以下のコマンドを実行すると、
ハンガリー語のドキュメントの最新 package
がインストールされます。
&prompt.root; pkg install hu-freebsd-doc
ドキュメントの package は、対応する port 名とは異なり、
lang-freebsd-doc
の形式で名前がつけられています。
ここで、lang は言語コードの短縮形です。
ハンガリー語の場合は hu、簡体字の場合には
zh_cn です。
ドキュメントのフォーマットを指定する場合には、package ではなく
port から構築してください。たとえば、
英語のドキュメントを構築してインストールするには以下のようにして下さい。
&prompt.root; cd /usr/ports/misc/freebsd-doc-en
&prompt.root; make install clean
この port には、
構築およびインストールするフォーマットを設定するメニューがあります。
デフォルトでは、http://www.FreeBSD.org
と同じ形式である分割版の HTML 形式、
PDF が選択されています。
以下のように、ドキュメンテーション ports を構築する際の
make オプションが用意されています。
WITH_HTML
HTML 形式を構築します。
各ドキュメントに対し、単一版の HTML ファイルが構築されます。
整形されたドキュメントは、
article.html や
book.html
といった名前でインストールされます。
WITH_PDF
整形されたドキュメントは、
article.pdf や
book.pdf
といった名前でインストールされます。
DOCBASE
ドキュメントのインストール先を設定します。
デフォルトのインストール先は
/usr/local/share/doc/freebsd
です。
以下は、上記の変数を用いてハンガリー語のドキュメントを
PDF 形式でインストールする方法です。
&prompt.root; cd /usr/ports/misc/freebsd-doc-hu
&prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean
に書かれている手順を使って、
ドキュメンテーション package または port
をアップデートできます。
たとえば、以下のコマンドを実行すると、
ports-mgmt/portupgrade
から、package
だけを使ってインストールされているハンガリー語のドキュメントをアップデートします。
&prompt.root; portmaster -PP hu-freebsd-doc
開発ブランチを追いかける
-CURRENT
-STABLE
&os; には二つの開発ブランチがあります。
それは &os.current; と &os.stable; です。
この節ではそれぞれのブランチと対象としている読者についての説明と、
どのようにしてシステムの対応するブランチを最新の状態に保つかについて説明します。
訳: &a.hanai;、1996 年 11 月 6 日
&os.current; を使う
&os.current; とは &os; の開発の 最前線
なので、
&os.current; のユーザは高い技術力を持つことが要求されます。
そこまでの技術力を持っていないが、
開発ブランチを追いかけたいと考えているユーザは、
かわりに &os.stable; を追いかけると良いでしょう。
&os.current; は &os; の最新のソースコードであり、
中には現在開発途上のソフトウェア、
実験的な変更、あるいは過渡的な機能などが含まれています。
また、この中に入っている機能がすべて、
次の公式リリースに入るとは限りません。&os.current;
をソースからほぼ毎日コンパイルしている人はたくさんいますが、
短い期間ではコンパイルさえできない状態になっている時期もあります。
これらの問題は可能な限り迅速に解決されますが、
&os.current; が不幸をもたらすか、
それとも新しい機能をもたらすかは、
まさにソースコードを同期した瞬間によるのです!
&os.current; は、
次の 3 つの重要なグループを対象としています。
ソースツリーのある部分に関して活発に作業している
&os; コミュニティのメンバ。
活発にテストしている &os; コミュニティのメンバ。
彼らは、種々の問題を解決するのに時間を惜しまない人々であり、
さまざまな変更に関する提案や
&os; の大まかな方向付けを行ないたいと思っている人々でもあり、
パッチも提出します。
さまざまな事に目を向け、
参考のために最新のソースを使いたいと思っていたり、
時々コメントやコードを寄稿したいと考えているユーザ。
&os.current; は、次のリリースの前に、
最も早く新しい機能を入手する手段として、
期待してはいけません。
リリース前の機能は十分にテストされていないため、
バグを含んでいる可能性が大いにあるためです。
また、バグを修正するための素早い方法でもありません。
いかなるコミットは、元からあるバグを修正するのと同じく、
新しいバグを生み出すおそれがあります。
&os.current; には 公式のサポート
はありません。
-CURRENT
using
&os.current; を追いかけるには
&a.current.name; と &a.svn-src-head.name;
-CURRENT
使用
メーリングリストに加わってください。
さまざまな人がシステムの現在の状態について述べているコメントを見たり、
&os.current; の現在の状態に関する重要な情報を見逃さないために、
必須の ことです。
&a.svn-src-head.name; メーリングリストでは、
それぞれの変更についての commit ログが記録されています。
また、それに関して起こり得る副作用の情報を得ることができますので、
参加する価値のあるメーリングリストです。
これらのメーリングリストに入るには、
&a.mailman.lists.link;
をたどって参加したいメーリングリストをクリックし、
手順の説明にしたがってください。
&os.current; だけでなく、
ソースツリー全体の変更点を追いかけるのであれば、
&a.svn-src-all.name; メーリングリストを購読してください。
&os.current; のソースを同期してください。
特に svn を使って
の一覧にある
Subversion ミラーサイトのひとつの
head ブランチから
-CURRENT コードをチェックアウトしてください。
リポジトリのサイズが大きいため、興味のある部分や、
パッチを当てる部分のソースのみを同期するユーザもいます。
しかしながら、
ソースからオペレーティングシステムをコンパイルしようと思っているユーザは、
一部分だけではなく、&os.current; の すべて
をダウンロードする必要があります。
&os.current; をコンパイル
-CURRENT
コンパイル
する前に
/usr/src/Makefile を注意深く読み、
に書かれている手順に従ってください。
&a.current; と /usr/src/UPDATING を読めば、
次のリリースへ向けて移ってゆくに当たって、
ときどき必要となる既存システムからの新システムの構築手順についての最新情報が得られるでしょう。
アクティブになってください!
&os.current; のユーザには、
拡張やバグ潰しに関して提案することが勧められています。
コードを伴う提案はいつでも歓迎されます!
ソースを用いた &os; のアップデート
ソースをコンパイルして&os; をアップデートする方法は、
バイナリを用いたアップデートに比べ、いくつもの利点があります。
特定のハードウェアをうまく利用するためのオプションを設定してコードを構築できます。
ベースシステムの特定の箇所の設定をデフォルトの設定から変更したり、
必要がない部分を完全に削除して構築することもできます。
システムを構築することによるアップデートは、
バイナリアップデートをインストールするだけのアップデートに比べ時間がかかりますが、
利用環境に合わせた &os;
を作成するような完全なカスタマイズが可能です。
クィックスタート
以下は、&os; のアップデートをソースを構築することにより行う典型的な方法のクイックリファレンスです。
その後の節では、このプロセスについてより詳細に説明します。
アップデートおよびビルド
&prompt.root; svn update /usr/src
check /usr/src/UPDATING
&prompt.root; cd /usr/src
&prompt.root; make -j4 buildworld
&prompt.root; make -j4 kernel
&prompt.root; shutdown -r now
&prompt.root; cd /usr/src
&prompt.root; make installworld
&prompt.root; mergemaster -Ui
&prompt.root; shutdown -r now
最新版のソースを入手してください。
ソースの入手およびアップデートに関する情報については
をご覧ください。
ソースの構築の前後で必要となる手動の作業について、
/usr/src/UPDATING
を確認してください。
ソースが置かれているディレクトリに移動してください。
world (カーネルを除くすべて)
をコンパイルしてください。
カーネルをコンパイルしてインストールしてください。
ここに書かれているコマンドは、make buildkernel
installkernel
と同じです。
新しいカーネルを使うため、
システムを再起動してください。
ソースが置かれているディレクトリに移動してください。
world をインストールしてください。
/etc/
に置かれている設定ファイルをアップデートしたりマージしてください。
新しく構築された world およびカーネルを利用するため、
システムを再起動してください。
ソースを用いたアップデートのための準備
/usr/src/UPDATING を読んでください。
このファイルには、
アップデートの前後で必要となる手動の作業について書かれています。
ソースコードのアップデート
&os; のソースコードは
/usr/src/ に置かれています。
このソースコードのアップデートには、
Subversion
バージョン管理システムを利用する方法が推奨されています。まず、
ソースコードがバージョン管理下にあることを確認してください。
&prompt.root; svn info /usr/src
Path: /usr/src
Working Copy Root Path: /usr/src
...
この結果は、/usr/src/
がバージョン管理下にあり、&man.svn.1;
を使ってアップデートできることを示しています。
&prompt.root; svn update /usr/src
このディレクトリをアップデートしていない期間が長いと、
アップデートのプロセスには時間がかかります。
このプロセスが終わると、ソースコードは最新となり、
次節以降で説明する構築のプロセスを実行できます。
ソースコードの入手
'/usr/src' is not a working copy
という出力が出た場合には、
ファイルがなかったり、別な方法によりインストールされているので、
新しくソースコードをチェックアウトする必要があります。
&os; のバージョンおよびリポジトリパス
uname -r の出力
リポジトリパス
説明
X.Y-RELEASE
base/releng/X.Y
このリリースバージョンに対する重大なセキュルティへの対応およびバグの修正パッチのみが適用されています。
このブランチは、ほとんどのユーザに推奨されます。
-
+
X.Y-STABLE
base/stable/X
リリースバージョンに対し、
そのブランチにおけるすべての開発の成果が反映されたものです。
STABLE は、
Applications Binary Interface
(ABI)
が変更されないことを意味しており、
このブランチの以前のバージョンでコンパイルされたソフトウェアは、
このバージョンでも実行できることを意味しています。
たとえば、&os; 10.1
で実行するようにコンパイルされたソフトウェアは、
&os; 10-STABLE においても実行できます。
STABLE ブランチは、
時期によってはユーザに影響するようなバグや非互換性を持つことがあります。
これらは通常すぐに修正されます。
X-CURRENT
base/head/
リリースが行われていない最新の &os;
の開発バージョンです。
CURRENT ブランチは大きなバグや非互換があることもあるので、
高度な知識を持ったユーザのみ使用が推奨されます。
&man.uname.1; を使って &os;
のバージョンを確認してください。
&prompt.root; uname -r
10.3-RELEASE
から分かるように、10.3-RELEASE
のアップデートのためのソースコードのパスは、
base/releng/10.3 です。
このパスは、ソースコードをチェックアウトする時に使います。
&prompt.root; mv /usr/src /usr/src.bak
&prompt.root; svn checkout https://svn.freebsd.org/base/releng/10.3 /usr/src
この古いディレクトリを、
邪魔にならないように移動してください。
このディレクトリ以下に対して変更を行ってなければ、
削除しても構わないでしょう。
リポジトリの URL に
に記載されているパスを追加します。
3 番目のパラメータには、
ローカルシステム上でソースコードが置かれるディレクトリを指定します。
ソースからの構築
まず最初に world
(カーネルを除くオペレーティングシステムのすべて) をコンパイルします。
このステップを最初に実行するのは、
カーネルの構築を最新のツールを使って行うようにするためです。
このステップが終わったら、カーネルそのものを構築します。
&prompt.root; cd /usr/src
&prompt.root; make buildworld
&prompt.root; make buildkernel
コンパイルされたコードは
/usr/obj に書き出されます。
これは基本のステップです。
構築をコントロールする追加のオプションについては、
以下で説明します。
クリーンビルドの実行
&os; ビルドシステムのいくつかのバージョンは、
オブジェクトが一時的に置かれるディレクトリ
/usr/obj
に前回のコンパイルされたコードを残します。
これにより、変更されていないコードを再コンパイルせずにすむので、
その後の構築時間を短縮できます。
すべてを再構築するには、構築を開始する前に、
cleanworld を実行してください。
&prompt.root; make cleanworld
ジョブの数の設定
マルチコアプロセッサを搭載するシステムでは、
構築のためのジョブの数を増やすことで、
構築にかかる時間を短縮できます。
sysctl hw.ncpu を使って、
コアの数を確認してください。
ジョブの数がどのように構築の速さに影響するかを確実に知るには、
プロセッサにより異なりますし、&os;
のバージョンにより使用されるビルドシステムも変わるため、
実際に試してみるしか方法はありません。
試してみる最初のジョブの数の候補としては、
コアの数の半分から倍の数の間で検討してみてください。
ジョブの数は、 を使って指定します。
構築のジョブの数を増やす
以下は 4 つのジョブで world とカーネルを構築する例です。
&prompt.root; make -j4 buildworld buildkernel
カーネルのみを構築する
ソースコードが変更された場合には、
buildworld を完了しなければいけません。
その後、いつでも
buildkernel でカーネルを構築できます。
カーネルだけを構築するには、以下のように実行してください。
&prompt.root; cd /usr/src
&prompt.root; make buildkernel
カスタムカーネルの構築
&os; 標準のカーネルは、
GENERIC と呼ばれる
カーネルコンフィグレーションファイル
に基づいています。
GENERIC カーネルには、
最も良く使われるデバイスドライバやオプションが含まれています。
しかしながら、
特定の目的に合わせてデバイスドライバやオプションを削除したり追加するためには、
カスタムカーネルを構築することが有用であったり、
必要となることがあります。
たとえば、極端に RAM
が制限されているような小さな組み込みのコンピュータを開発しているユーザであれば、
必要のないデバイスドライバやオプションを削除することで、
カーネルを少しでも小さくできるでしょう。
カーネルのコンフィグレーションファイルは、
/usr/src/sys/arch/conf/
に置かれています。ここで、
arch は
uname -m の出力です。
ほとんどのコンピュータは
amd64 であり、
コンフィグレーションファイルが置かれているディレクトリは
/usr/src/sys/amd64/conf/
です。
/usr/src は、
削除されたり作り直されたりする可能性があるため、
カスタムカーネルのコンフィグレーションファイルは、
/root
のような別のディレクトリで管理することが好ましいです。
カーネルコンフィグレーションファイルは、
conf ディレクトリにリンクします。
このディレクトリが削除されたり、上書きされた場合には、
カーネルコンフィグレーションファイルを新しいディレクトリにもう一度リンクしてください。
カスタムコンフィグレーションファイルは、
GENERIC
コンフィグレーションファイルをコピーして作成できます。
たとえば、
ストレージサーバ用の STORAGESERVER
という名前の新しいカスタムカーネルは、
以下のようにして作成できます。
&prompt.root; cp /usr/src/sys/amd64/conf/GENERIC /root/STORAGESERVER
&prompt.root; cd /usr/src/sys/amd64/conf
&prompt.root; ln -s /root/STORAGESERVER .
その後 /root/STORAGESERVER を編集し、
&man.config.5;
で示されるデバイスやオプションを追加したり削除してください。
コマンドラインからカーネルコンフィグレーションファイルを
KERNCONF に指定することで、
カスタムカーネルを構築できます。
&prompt.root; make buildkernel KERNCONF=STORAGESERVER
コンパイルされたコードのインストール
buildworld および
buildkernel が完了したら、
新しいカーネルと world をインストールしてください。
&prompt.root; cd /usr/src
&prompt.root; make installkernel
&prompt.root; shutdown -r now
&prompt.root; cd /usr/src
&prompt.root; make installworld
&prompt.root; shutdown -r now
カスタムカーネルを構築した場合は、
新しいカスタムカーネルを KERNCONF
に設定して実行してください。
&prompt.root; cd /usr/src
&prompt.root; make installkernel KERNCONF=STORAGESERVER
&prompt.root; shutdown -r now
&prompt.root; cd /usr/src
&prompt.root; make installworld
&prompt.root; shutdown -r now
アップデートの完了
アップデートの完了までに、いくつかの最終作業が残されています。
デフォルトから変更した設定ファイルを新しいバージョンのファイルにマージし、
古くなったライブラリを見つけて削除した後に、
システムを再起動します。
&man.mergemaster.8; を用いた設定ファイルのマージ
&man.mergemaster.8; を用いることで、
システムの設定ファイルに行われている変更を、
簡単にこれらのファイルの新しいバージョンにマージできます。
オプションを使って
&man.mergemaster.8; を実行すると、
ユーザが手を加えていないファイルのアップデートおよび新しく追加されたファイルのインストールを自動的に行います。
&prompt.root; mergemaster -Ui
ファイルのマージを手動で行う必要がある時は、
ファイルの中で残す箇所の選択を対話的におこなうようなインタフェースが表示さます。
詳細については、&man.mergemaster.8; をご覧ください。
使われなくなったファイルやライブラリの確認
アップデート後に、
使われなくなったファイルやディレクトリが残ることがあります。
これらのファイルは、
&prompt.root; make check-old
で確認でき、以下のようにして削除できます。
&prompt.root; make delete-old
同様に使われなくなったライブラリが残ることもあります。
これらのライブラリは、
&prompt.root; make check-old-libs
で確認でき、以下のようにして削除できます。
&prompt.root; make delete-old-libs
これらの古いライブラリを利用しているプログラムは、
ライブラリが削除されると動かなくなります。
これらのプログラムは、古いライブラリを削除した後に、
再構築もしくは置き換える必要があります。
古いファイルとディレクトリのすべてを削除しても問題ないことを確認したら、
コマンドに BATCH_DELETE_OLD_FILES
を設定することで、各ファイルを削除する際に
y および Enter
を押さなくても済むようにできます。以下はその例です。
&prompt.root; make BATCH_DELETE_OLD_FILES=yes delete-old-libs
アップデート後の再起動
コンピュータを再起動して、すべての変更を反映させることが、
アップデートの最後におこなう作業です。
&prompt.root; shutdown -r now
複数のマシンで追いかける
Mike
Meyer
寄稿:
NFS
複数のマシンにインストール
複数のコンピュータで同じソースツリーを追いかけていて、
全部のマシンにソースをダウンロードして全部を再構築するのは、
ディスクスペース、ネットワーク帯域、
そして CPU サイクルの無駄使いです。
解決策は 1 つのマシンに仕事のほとんどをさせ、
残りのマシンは NFS
経由でそれをマウントする、というものです。
このセクションではそのやり方を概観します。
NFS の使い方の詳細については、 をご覧下さい。
まず初めに、同じバイナリで動かそうとするマシンたちを決めます。
このマシンたちのことをビルドセットと呼びます。
それぞれのマシンはカスタムカーネルを持っているかもしれませんが、
同じユーザランドバイナリを動かそうというのです。
このビルドセットから、
ビルドマシンとなるマシンを 1 台選びます。
ベースシステムとカーネルを構築するのはこのマシンになります。
理想的には、このマシンは make buildworld
と make buildkernel
を実行するのに十分な CPU
を持った速いマシンであるべきです。
テストマシン
となるべきマシンも選んでください。
更新されたソフトウェアを使う前にそのマシンでテストするのです。
テストマシンはかなり長い時間落ちていても
だいじょうぶなマシンであったほうがいいでしょう。
ビルドマシンでもかまいませんが、
ビルドマシンである必要はありません。
このビルドセットのマシンはすべて
/usr/obj と
/usr/src
をビルドマシンから FTP
経由でマウントする必要があります。
ビルドセット自体が複数ある場合は、
/usr/src
はひとつのビルドマシン上にあるべきです。
他のマシンからはそれを NFS
マウントするようにしましょう。
ビルドセットのすべてのマシン上の
/etc/make.conf と
/etc/src.conf
がビルドマシンと一致していることを確認してください。つまり、
ビルドマシンはビルドセットのどのマシンもインストールしようとしている
ベースシステムを全部ビルドしなければならないということです。
また、各ビルドマシンは /etc/make.conf
にそれぞれのビルドマシンのカーネル名を
KERNCONF で指定し、
ビルドマシンは自分自身のカーネルから順に全部のカーネル名を
KERNCONF にリストアップしてください。
ビルドマシンは各マシンのカーネル設定ファイルを /usr/src/sys/arch/conf
に持っていなければなりません。
ビルドマシンにて、
に書いてあるようにカーネルとベースシステムを構築してください。
でも、まだビルドマシンにはインストールしないでください。
そのかわり、
ビルドしたカーネルをテストマシンにインストールしてください。
FTP 経由で
/usr/src および /usr/obj
をテストマシンにマウントしてください。
その後、shutdown now
を実行してシングルユーザモードに移行し、
新しいカーネルとベースシステムをインストールし、
いつもするように
mergemaster を実行してください。
終わったら、再起動して通常のマルチユーザ動作に戻します。
テストマシンにあるものすべてがちゃんと動いている確信が得られたら、
同じ手順でビルドセットの他のマシンにも新しいソフトウェアをインストールします。
ports ツリーにも同じ方法が使えます。
最初のステップは、
ビルドセットのすべてのマシンが NFS 経由で
/usr/ports をマウントすることです。
そして、distfiles を共有するように
/etc/make.conf を設定します。
NFS マウントによってマップされる
root
ユーザが何であれ、DISTDIR
はそのユーザが書き込める共通の共有ディレクトリに設定する必要があります。
ports をローカルでビルドする場合には、
各マシンは WRKDIRPREFIX
を自分のマシンのビルドディレクトリに設定しなければなりません。
また、ビルドシステムが packages
をビルドしてビルドセットのコンピュータに配布するのであれば、
DISTDIR と同じようにビルドシステム上の
PACKAGES
ディレクトリも設定してください。
Index: head/ja_JP.eucJP/books/handbook/disks/chapter.xml
===================================================================
--- head/ja_JP.eucJP/books/handbook/disks/chapter.xml (revision 50698)
+++ head/ja_JP.eucJP/books/handbook/disks/chapter.xml (revision 50699)
@@ -1,3293 +1,3295 @@
ストレージ
この章では
この章では、FreeBSD におけるディスクの使用方法を説明します。
これにはメモリディスク、ネットワークに接続されたディスク、
および標準的な SCSI/IDE 記憶デバイスが含まれます。
この章では、以下の分野について説明します。
物理ディスク上のデータ構成
について記述するために FreeBSD が使用する用語
(パーティションおよびスライス)
システムにハードディスクを追加する方法
メモリディスクのような仮想ファイルシステムを設定する方法
使用できるディスク容量を制限するためにクォータを設定する方法
攻撃者から保護するためにディスクを暗号化する方法
FreeBSD で CD や DVD を作成する方法
バックアップのためのさまざまな記憶メディアオプション
FreeBSD で利用できるバックアッププログラムの使用方法
フロッピーディスクにバックアップする方法
スナップショットとは何か、そしてそれを効果的に使用する方法
デバイス名
以下は、FreeBSD で対応している物理記憶デバイスとそれに対応するデバイス名のリストです。
物理ディスクへの名前付け
ドライブの種類
ドライブのデバイス名
IDE ハードドライブ
ad
IDE CD-ROM ドライブ
acd
SCSI ハードドライブおよび USB 大容量記憶デバイス
da
SCSI CD-ROM ドライブ
cd
その他の非標準的 CD-ROM ドライブ
ミツミ CD-ROM は mcd,
Sony CD-ROM は scd,
松下/パナソニック CD-ROM は matcd
フロッピードライブ
fd
SCSI テープドライブ
sa
IDE テープドライブ
ast
フラッシュドライブ
&diskonchip; フラッシュデバイスは
fla
RAID ドライブ
&adaptec; AdvancedRAID は aacd, &mylex;
は mlxd および mlyd,
AMI &megaraid; は amrd,
Compaq Smart RAID は idad,
&tm.3ware; RAID はtwed
ディスクの追加
DavidO'Brien原作:
ディスク
追加
現在一つしかドライブがない計算機に新しく SCSI
ディスクを追加したいとしましょう。まずコンピュータの電源を切り、
コンピュータやコントローラ、
ドライブの製造元の説明書に従ってドライブを取り付けます。
このあたりの手順は非常に多岐にわたるため、
詳細はこの文書の範囲外です。
root ユーザでログインします。
ドライブの取り付け後は /var/run/dmesg.boot
を調べて新しいディスクが見つかっていることを確認しておきます。
この例では、新しく付けたドライブは da1 で、
我々はそれを /1 にマウントしたいとしましょう
(もし IDE ドライブを付けようとしているのなら、デバイス名は
4.0 以前のシステムでは wd1, ほとんどの 4.x
システムでは ad1 になるでしょう)。
パーティション
スライス
fdisk
FreeBSD は IBM-PC 互換のコンピュータで動くため、
PC BIOS のパーティションを考慮に入れる必要があります。
これは従来の BSD パーティションとは異なります。PC ディスクは 4 つまでの
BIOS パーティションエントリを持つことができます。
もしそのディスクを本当に FreeBSD 専用にしたい場合には
専用 モードで用いることもできます。
そうでない場合には、FreeBSD は PC BIOS
パーティションのどれか一つの中に入れることになります。
FreeBSD では、従来の BSD パーティションと混乱しないように
PC BIOS パーティションのことをスライスと呼びます。
また、別の OS がインストールされていたコンピュータで使われていたが
FreeBSD 専用にするディスク上でもスライスを用いることができます。
これは、他の OS の fdisk
ユーティリティを混乱させないためです。
スライスの場合、ドライブは /dev/da1s1e
として加えられるでしょう。これは、SCSI ディスクでユニット番号は 1
(二つめの SCSI ディスク), スライスは 1 (PC BIOS のパーティションが 1) で
BSD パーティション e, と読みます。
専用ディスクの場合だと単純に /dev/da1e
として加えられるでしょう。
&man.sysinstall.8; の利用
sysinstall
ディスクの追加
su
sysinstall の操作
sysinstall の使い易いメニューを利用して、
新しいディスクのパーティション分けやラベル付けを行なうことができます。
root ユーザでログインするか
su コマンドを用いるかして root 権限を取得します。
/stand/sysinstall を実行して Configure
メニューに入ります。FreeBSD Configuration Menu
の中でスクロールダウンして Fdisk
の項目を選びます。
fdisk パーティションエディタ
fdisk では、ディスク全体を
FreeBSD で使うために A を入力します。
remain cooperative with any future possible operating systems
と聞かれたら YES と答えます。
W で変更をディスクに書き込みます。ここで
q と入力して FDISK エディタを抜けます。
次にマスタブートレコードについて聞かれます。
ここでは既に動いているシステムにディスクを追加しようとしているので
None を選びます。
ディスクラベルエディタ
BSD パーティション
次に sysinstall を終了し、
もう一度起動する必要があります。同じ手順を踏んで今度は
Label オプションを選択し、
Disk Label Editor に入ります。
ここでは従来の BSD パーティションを作成します。
一つのディスクは a から h までのラベルがついた最大
8 つのパーティションを持つことができます。
いくつかのパーティションラベルは特別な用途に用いられます。
a パーティションはルートパーティション
(/) です。したがって、システムディスク
(つまり起動ディスク) のみに a
パーティションがあるべきです。b
パーティションはスワップパーティションに用いられ、
複数のディスクにスワップパーティションを作ることができます。
c は専用モードにおけるディスク全体、
もしくはスライスモードにおけるスライス全体を指します。
他のパーティションは汎用的に用いられます。
sysinstall のラベルエディタ
は、ルートパーティションでもスワップパーティションでもないパーティションには、e
パーティションを採用しようとします。ラベルエディタでファイルシステムを作成するには
C を入力してください。
FS (ファイルシステム) かスワップかを聞かれたら
FS を選びマウントポイント
(たとえば /mnt) を入力します。
インストール後のモードでディスクを追加する場合、
sysinstall は
/etc/fstab にエントリを追加しないため、
ここで指定するマウントポイントはそれほど重要ではありません。
さて、ディスクに新しいラベルを書き込み、
そこにファイルシステムを作る準備が整いました。早速
W を叩いて実行しましょう。
sysinstall からの、
新しいパーティションをマウントできない、
というエラーは無視してください。Label Editor から抜け、
sysinstall を終了します。
終了
最後に /etc/fstab を編集し、
新しいディスクのエントリを追加します。
コマンドラインユーティリティの利用
スライスの利用
このセットアップ方法では、
すでにコンピュータに他のオペレーティングシステムがインストールされていても
正しく協調動作することが可能で、他のオペレーティングシステムの
fdisk ユーティリティを混乱させることもありません。
新しいディスクにインストールする場合は、
この方法を用いることが推奨されています。
後述する 専用モード は、
そうしなければならない理由がある時にのみ、
利用するようにしてください。
&prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1
&prompt.root; fdisk -BI da1 # 新しいディスクの初期化
&prompt.root; disklabel -B -w -r da1s1 auto # ディスクにラベルを付ける
&prompt.root; disklabel -e da1s1 # 作成したディスクラベルを編集し、パーティションを追加する
&prompt.root; mkdir -p /1
&prompt.root; newfs /dev/da1s1e # 作成したすべてのパーティションに対してこれを繰り返す
&prompt.root; mount /dev/da1s1e /1 # パーティションをマウントする
&prompt.root; vi /etc/fstab # /etc/fstab に適切なエントリを追加する
IDE ディスクを使う場合は da の部分を
ad とします。4.X より前のシステムでは、
(訳注: ad ではなく)
wd としてください。
専用モード
OS/2
新しいドライブを他の OS と共有しない場合には
専用 モードを用いることもできます。
このモードはマイクロソフトの OS
を混乱させることを憶えておいてください
(しかし、それらによって壊されることはありません)。 一方、IBM の &os2;
はどんなパーティションでも見つけたら理解できなくても
専有
します。
&prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1
&prompt.root; disklabel -Brw da1 auto
&prompt.root; disklabel -e da1 # `e' パーティションの作成
&prompt.root; newfs -d0 /dev/da1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # /dev/da1e エントリの追加
&prompt.root; mount /1
もう一つの方法は次の通り。
&prompt.root; dd if=/dev/zero of=/dev/da1 count=2
&prompt.root; disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
&prompt.root; newfs /dev/da1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # /dev/da1e エントリの追加
&prompt.root; mount /1
&os; 5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていない数多くのオプションやパラメタが削除されました。
たとえば オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
のマニュアルページを参照してください。
RAID
ソフトウェア RAID
Concatenated Disk Driver (CCD) の設定
ChristopherShumway原作:
JimBrown改訂:
RAID
ソフトウェア
RAID
CCD
大容量記録に関する解決法を選択する際にもっとも重視すべき要素は、
速度、信頼性、そして費用です。
三つを同時にバランスよく実現することは稀です。
通常、速くて信頼性のある大容量記録装置は高価であり、
費用を抑えようとすると速度または信頼性のどちらかが犠牲になります。
ここで例にあげるシステムの設計においては、
費用が最も重要な要素として、次に速度、最後に信頼性が選択されています。
このシステムでのデータ転送速度は結局のところネットワークによって制限されます。
信頼性は大変重要です。ただし、以下で説明する CCD ドライブは、
データ自体はすでに CD-R に完全にバックアップしてあるもの
(したがって交換は簡単にできます)
の、オンラインデータの役割をさせています。
あなた自身の要求事項を決定することは、
大容量記録に関する解決法を選択することの最初の段階です。
もしあなたの要求事項が費用より速度または信頼性を優先するなら、
解決法はこのシステムとは違うものになるでしょう。
ハードウェアのインストール
IDE システムディスクに加えて、Western Digital 製の
30GB, 5400RPM の IDE ディスク三台を使って、
以下に説明されているような約 90GB のオンラインストレージとなる
CCD ディスクを作成しました。各 IDE ディスクがそれぞれの
IDE コントローラとケーブルをもっていることが理想的ですが、
費用を最低限にするために、
IDE コントローラを追加していません。その代わり、それぞれの IDE
コントローラがマスタデバイスを一つ、
スレーブデバイスを一つ持つように、
ディスクはジャンパを使って設定されています。
再起動の際に、システム BIOS
が接続されたディスクを自動的に検出するように設定されました。
より重要なことは、FreeBSD が再起動の際にそれらを検出することです。
ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33
FreeBSD がディスクをすべて検出しないときは、
ジャンパを正しく設定してあるか確認してください。多くの IDE
ドライブは ケーブルセレクト
ジャンパを持っています。
これはマスタ/スレーブの関係を設定するジャンパでは
ありません。ドライブの文書を参照して、
正しいジャンパ設定を見つけてください。
次に、ファイルシステムの一部分として、
それらをどのように接続するのかを考慮します。&man.vinum.8;
および &man.ccd.4;
の両方を検討すべきでしょう。この設定では、&man.ccd.4;
を選択しました。
CCD の設定
&man.ccd.4; ドライバは、いくつかの同じディスクを使って、
一つの論理的ファイルシステムに連結することができます。
&man.ccd.4; を使用するためには、カーネルが &man.ccd.4;
に対応している必要があります。
次の行をカーネルコンフィギュレーションファイルに追加して、
カーネルを再構築し、再インストールしてください。
pseudo-device ccd 4
5.X システムでは、
上記の代わりに次の行を追加しなければなりません。
device ccd
FreeBSD 5.X では &man.ccd.4;
デバイスの数を指定する必要はありません。&man.ccd.4;
デバイスドライバは自己複製するようになりました —
新しいデバイスインスタンスは、
必要に応じてその都度自動的に作成されます。
FreeBSD 3.0 以降では、
カーネルモジュールを読み込んで
&man.ccd.4; に対応することもできます。
&man.ccd.4; を設定するために、まず &man.disklabel.8;
を使用してディスクにラベルを書き込まなくてはなりません。
disklabel -r -w ad1 auto
disklabel -r -w ad2 auto
disklabel -r -w ad3 auto
このコマンドはディスク全体を示す
ad1c,
ad2c および
ad3c に対するディスクラベルを作成します。
&os; 5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていない数多くのオプションやパラメタが削除されました。
たとえば オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
のマニュアルページを参照してください。
次に、ディスクラベルのタイプを変更します。
&man.disklabel.8; を使用してディスクラベルを編集してください。
disklabel -e ad1
disklabel -e ad2
disklabel -e ad3
このコマンドは EDITOR
環境変数に設定されているエディタ (一般的には &man.vi.1;)
でそれぞれのディスクの現在のディスクラベルを開きます。
変更されていないディスクラベルは以下のようになります。
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
&man.ccd.4; で使用する e
パーティションを作成します。通常では c
パーティションの行をコピーすれば良いでしょう。しかし、
は 4.2BSD
でなければ なりません。
ディスクラベルは以下のようになるでしょう。
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)
ファイルシステムの構築
ccd0c
デバイスノードはまだ存在していないかも知れません。
そのときは、次のコマンドを実行して作成してください。
cd /dev
sh MAKEDEV ccd0
FreeBSD 5.0 では &man.devfs.5; が
/dev 以下のデバイスノードを自動的に管理するので、
MAKEDEVを使用する必要はありません。
すべてのディスクにラベルを書き込んだので、
&man.ccd.4; を構築してください。
これを行うためには、以下のようなオプションで
&man.ccdconfig.8; を使います。
ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
各オプションの使用法と意味は以下の通りです。
一番目の引数は設定するデバイスです。この例の場合は
/dev/ccd0c です。
/dev/ の部分はオプションです。
ファイルシステムに対するインタリーブです。インタリーブは、
ディスクブロック内のストライプサイズを定義します。
ディスクブロックは通常 512 バイトです。したがって 32
インタリーブは 16,384 バイトとなります。
これは &man.ccdconfig.8; に対するフラグです。
ドライブミラーリングを有効にしたい場合、
ここにフラグを指定します。
この設定では &man.ccd.4; に対するミラーリングは提供しませんので、
0 (ゼロ) を指定しています。
この &man.ccdconfig.8; に対する最後の引数は、
アレイ内に置くデバイスです。
それぞれのデバイスに対する完全なパス名を使用します。
&man.ccdconfig.8; を実行すると &man.ccd.4; が設定されます。
これでファイルシステムをインストールすることが可能です。
オプションについて &man.newfs.8; を参照するか、
次のように実行してください。
newfs /dev/ccd0c
自動的に設定する
一般的に、再起動するたびに &man.ccd.4;
をマウントしたいと思うでしょう。これを行うために、
まず設定をしなければなりません。次のコマンドを用いて、
現在の設定を /etc/ccd.conf に書き出します。
ccdconfig -g > /etc/ccd.conf
/etc/ccd.conf が存在すると、
再起動の際に /etc/rc スクリプトが
ccdconfig -C を実行します。これにより、
&man.ccd.4; は自動的に設定された後、マウントされます。
シングルユーザモードで起動している場合には、
&man.ccd.4; を &man.mount.8; する前に、
アレイを設定するために次のコマンドを実行する必要があります。
ccdconfig -C
自動的に &man.ccd.4; をマウントするには、
/etc/fstab に &man.ccd.4;
のエントリ追加します。このように設定すると起動時にマウントされます。
/dev/ccd0c /media ufs rw 2 2
Vinum ボリュームマネージャ
RAID
ソフトウェア
RAID
Vinum
Vinum ボリュームマネージャは、
仮想ディスクドライブを実装したブロックデバイスドライバです。
Vinum は、ディスクハードウェアをブロックデバイスインタフェースから
分離し、データを配置します。
その結果、ディスク記憶装置を従来のスライスで扱うのと比較して、
柔軟性、性能および信頼性が向上しています。
&man.vinum.8; は RAID-0, RAID-1 および RAID-5 モデル、
そしてそれぞれの組合せを実装しています。
&man.vinum.8; の詳細については Vinum ボリュームマネジャ
を参照してください。
ハードウェア RAID
RAID
ハードウェア
FreeBSD は、さまざまなハードウェア RAID
コントローラにも対応しています。これらのデバイスはアレイを制御するための
特別なソフトウェアを FreeBSD で必要することなく、
RAID サブシステムを制御します。
カード上の BIOS を使用して、
カードはそれ自身でディスク操作のほとんどを制御します。以下は
Promise IDE RAID
コントローラを使用した設定の簡単な説明です。
このカードがインストールされ、システムが起動したときには、
情報の入力を促すプロンプトを表示します。
指示にしたがってカードの設定画面に進んでください。
接続されたドライブを組み合わせるように設定することができます。
設定後、ディスクは FreeBSD に対して単一のドライブのように見えます。
他の RAID レベルは適宜設定できます。
ATA RAID1 アレイの再構築
FreeBSD はアレイ内の障害ディスクを動作中に交換できます。
ただし、再起動前にそれを検知していることが必要です。
/var/log/messages または &man.dmesg.8;
の出力に次のような行があるでしょう。
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
&man.atacontrol.8; を使用して詳細を調べてください。
&prompt.root; atacontrol list
ATA channel 0:
Master: no device present
Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0
ATA channel 1:
Master: no device present
Slave: no device present
ATA channel 2:
Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
ATA channel 3:
Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
&prompt.root; atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
ディスクを安全に取り外すために、
まずアレイから切り離します。
&prompt.root; atacontrol detach 3
ディスクを取り外します。
スペアのディスクを取り付けます。
&prompt.root; atacontrol attach 3
Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
アレイを再構築します。
&prompt.root; atacontrol rebuild ar0
再構築コマンドは完了するまで他の操作を受け付けません。しかし、
もう一つ別のターミナルを
(Alt
Fn
を押して) 開き、
次のコマンドを実行すると進行状態を確認することができます。
&prompt.root; dmesg | tail -10
[output removed]
ad6: removed from configuration
ad6: deleted from ar0 disk1
ad6: inserted into ar0 disk1 as spare
&prompt.root; atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
操作が完了するまでお待ちください。
光メディア (CD & DVD) の作成と使用
MikeMeyer寄稿:
CDROM
作成
はじめに
CD は他の一般的なディスクと異なる様々な特徴を持っています。
そもそもユーザが書き込むことができません。
また遅延なしで連続的に読み出せるように、
トラック間をヘッドが移動しないですむようにデザインされています。
さらにこのサイズのメディアの中ではシステムをまたぐデータの
移動が比較的簡単でもあります。
CD はトラックの概念を持っていますが、
これはデータを連続的に読み出すためのものであってディスクの物理特性ではありません。
FreeBSD で CD を作成するには、まず CD
のトラックとなるデータファイルを用意し、
そのトラックを CD に書き込みます。
ISO 9660
ファイルシステム
ISO 9660
ISO 9660 ファイルシステムはこの様な差異を扱うべく設計されました。
その結果、ファイルシステムは一般的に使用するのに差しつかえない程度に
制限されて標準化されています。幸いなことに、ISO 9660
ファイルシステムには拡張機構が提供されています。適切に書かれた CD は、
拡張機構に対応したシステムでは拡張を利用して、そうでないシステムでは
拡張機構を使用しない範囲で動作するようになっています。
sysutils/mkisofs
sysutils/mkisofs プログラムは
ISO 9660 ファイルシステムを含むデータファイルを作成するのに使われます。
これには様々な拡張をサポートするオプションがあり、
以下で説明します。 このソフトウェアは、ports の
sysutils/mkisofs
からインストールすることができます。
CD ライタ
ATAPI
CD に書き込むためのツールは、お使いの CD ライタが ATAPI
接続か否かにも依存します。ATAPI CD ライタなら、ベースシステムの一部である
burncd
プログラムを使います。SCSI や USB の CD ライタなら、ports の
sysutils/cdrecord
をインストールして
cdrecord
プログラムを使うべきでしょう。
burncd
が対応しているドライブは限定されています。
ドライブが対応されているかどうかを確認するには、
CD-R/RW supported
drives にある一覧を見てください。
CD ライタ
ATAPI/CAM ドライバ
&os; 5.X または &os; 4.8-RELEASE
以降のバージョンを使用している場合、
ATAPI/CAM モジュール を使用すると
ATAPI ハードウェア上で SCSI ドライブ用の
cdrecord
および他のツールを使用できるようになります。
mkisofs
sysutils/mkisofs は &unix;
ファイルシステムの名前空間におけるディレクトリツリーのイメージとして
ISO 9660 ファイルシステムを作成します。
最も簡単な使い方は以下の通りです。
&prompt.root; mkisofs -o imagefile.iso /path/to/tree
ファイルシステム
ISO 9660
このコマンドは /path/to/tree
以下のディレクトリツリーのコピーである ISO 9660
ファイルシステムを含んだ imagefile.iso
ファイルを作成します。この過程において、ファイル名は標準的な ISO 9660
ファイルシステムの制限に適合するようなファイル名に対応づけられ、
ISO ファイルシステムでファイル名を文字化できないファイルは除外されます。
ファイルシステム
HFS
ファイルシステム
Joliet
この制限を回避するために利用できるオプションはいくつもあります。
特に オプションは &unix; システムで標準的な Rock Ridge
拡張を有効にします。 オプションは Microsoft
のシステムで標準的な Joliet 拡張を有効にし、
オプションは &macos; で使用されている
HFS ファイルシステムを作成するために使われます。
FreeBSD でしか使わないのであれば、
オプションを使用するとあらゆるファイル名制限を無効にできます。
さらに オプションとともに使うことで
FreeBSD と同一のファイルシステムイメージを作成できますが、
これは ISO 9660 標準の多くを無視しています。
CDROM
ブータブル (起動可能な) CDROM の作成
一般的に使われる最後のオプションは オプションです。
これは El Torito
ブータブル CD
を作成するのに使う起動イメージのありかを指定します。
このオプションは引数として起動イメージへのパスを、
CD に書き込まれるディレクトリツリーの頂点からの相対位置で取ります。
したがって /tmp/myboot がブート可能な
FreeBSD システムで /tmp/myboot/boot/cdboot
にブートイメージがあるならば、以下のようにすることで ISO 9660
ファイルシステムのイメージを /tmp/bootable.iso
に作成することができます。
&prompt.root; mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot
この後、カーネルで vn (FreeBSD 4.X)
または md (FreeBSD 5.X)
が設定されていれば、
ファイルシステムを以下のようにしてマウントすることができます。
&prompt.root; vnconfig -e vn0c /tmp/bootable.iso
&prompt.root; mount -t cd9660 /dev/vn0c /mnt
FreeBSD 4.X および FreeBSD 5.X に対しては以下の通りです。
&prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
&prompt.root; mount -t cd9660 /dev/md0 /mnt
/mnt と
/tmp/myboot が同一かどうか確認してください。
sysutils/mkisofs
には挙動を細かく制御するために他にもたくさんのオプションがあります。
特に、ISO 9660
レイアウトの変更や Joliet および HFS ディスク作成などの
詳細は &man.mkisofs.8; のマニュアルページをご覧ください。
burncd
CDROM
書き込み
あなたが持っているのが ATAPI CD ライタなら、CD に ISO
イメージを書き込むために burncd コマンドが使えます。
burncd はベースシステムの一部で
/usr/sbin/burncd としてインストールされています。
使い方はとても単純でオプションも少ししかありません。
&prompt.root; burncd -f cddevice data imagefile.iso fixate
以上のコマンドは imagefile.iso
のコピーを cddevice に書き込みます。
デフォルトのデバイスは /dev/acd0c です。
書き込み速度や操作完了後に CD を自動的に取り出す方法、
オーディオデータの書き込みなどのオプションについては &man.burncd.8;
を見てください。
cdrecord
あなたが持っている CD ライタが ATAPI ではなければ、
CD を書き込むのに cdrecord を使う必要があります。
cdrecord はベースシステムの一部ではなく、
sysutils/cdrtools の port または
適切な package を利用してインストールしなければなりません。
なお、ベースシステムを変更するとバイナリに矛盾が発生し、
コースター
を作ってしまうおそれがあります。
したがって、システムをアップグレードする度にこの port も作り直すか、
- あるいはFreeBSD の安定版を追いかけているのならば、
+
+ あるいは FreeBSD の安定版を追いかけているのならば、
新しいバージョンが利用できるようになった時に ports
をアップグレードする必要があります。
cdrecord にはたくさんのオプションがありますが、
基本的な使い方は burncd よりもさらに簡単です。
ISO 9660 イメージを書き込むには以下のようにします。
&prompt.root; cdrecord dev=device imagefile.iso
cdrecord のトリッキーな部分は、使用する
を見つけるところにあります。
適切な設定を見つけるためには cdrecord の
フラグを使います。
たとえば、以下のような結果が出力されるでしょう。
CDROM
書き込み
&prompt.root; cdrecord -scanbus
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *
リストにあるデバイスに対する適切な
の値がここに示されています。あなたの CD ライタをこのリストから見つけ、
カンマで区切られた 3 つの数値を
の値として使ってください。この例では CRW デバイスは 1,5,0
なので、適切な入力は となります。
値を明示するもっと簡単な方法もあります。詳細は &man.cdrecord.1;
を見てください。そこにはオーディオトラックを書き込む方法や、
書き込み速度その他を操作する方法も書かれています。
オーディオ CD の複製
CD からオーディオデータを連続したファイルに展開し、ブランク CD
にこれらのファイルを書き込むことで、オーディオ CD
を複製することができます。
この手順は ATAPI および SCSI ドライブの間で少し異なります。
SCSI ドライブ
cdda2wav を使用してオーディオを展開します。
&prompt.user; cdda2wav -v255 -D2,0 -B -Owav
cdrecord を使用して
.wav ファイルに書き出します。
&prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wav
に説明されているように
2.0
が適切に指定されていることを確かめてください。
ATAPI ドライブ
ATAPI CD ドライバでは、それぞれのトラックを
/dev/acddtnn のように利用できます。
ここで d はドライブ番号であり、
nn は二桁十進のトラック番号です。
一桁の場合 0 を前に付加する必要があります。
したがって、一番目のディスクの一番目のトラックは
/dev/acd0t01、二番目のトラックは
/dev/acd0t02、三番目のトラックは
/dev/acd0t03 などとなります。
適切なデバイスファイルが /dev
に存在することを確かめてください。
存在しなければ、たとえば次のようにして作成します。
&prompt.root; cd /dev
&prompt.root; sh MAKEDEV acd0t99
FreeBSD 5.0 では &man.devfs.5; が
/dev にエントリを自動的に作成、
管理するので、MAKEDEV
を使用する必要はありません。
&man.dd.1; を使用して各トラックを展開します。
ファイルを展開する際、ブロックサイズを指定しなければなりません。
&prompt.root; dd if=/dev/acd0t01 of=track1.cdr bs=2352
&prompt.root; dd if=/dev/acd0t02 of=track2.cdr bs=2352
...
burncd を使用して、
展開したファイルをディスクに書き込みます。
これらがオーディオファイルであること、
そして書き込みが終了したときに burncd
がディスクを固定 (fixate) することを明示しなければなりません。
&prompt.root; burncd -f /dev/acd0c audio track1.cdr track2.cdr ... fixate
データ CD の複製
データ CD を、sysutils/mkisofs
を用いて作成されたイメージファイルと機能的に等価なイメージファイルにコピーできます。
これを使用して、すべてのデータ CD を複製することができます。
ここでの例は CDROM デバイスが acd0
であるとしています。あなたの CDROM デバイスに読み替えてください。
CDROM の場合には、パーティション全体またはディスク全体
を指定するために c
をデバイス名の後に追加しなければなりません。
&prompt.root; dd if=/dev/acd0c of=file.iso bs=2048
これでディスクイメージを取り出すことができました。
すでに説明した方法を用いて CD に書き込むことができます。
データ CD の使用
さて、標準的なデータ CDROM を作成したので、
おそらく次はそれをマウントしてデータを読み出したいと思うでしょう。
デフォルトでは &man.mount.8; は、ファイルシステムタイプを
ufs としています。
次のように実行しようとすると、
&prompt.root; mount /dev/cd0c /mnt
Incorrect super block
というエラーが返されてマウントできないでしょう。
CDROM は UFS ファイルシステムではないために、
このような手順でマウントしようすると失敗します。
ファイルシステムのタイプが ISO9660 であると
&man.mount.8; に教えさえすれば、すべてはうまく動作します。
&man.mount.8; に
オプションを指定することでこれを行います。
たとえば /dev/cd0c の CDROM デバイスを
/mnt にマウントしたい場合は、
以下のように実行します。
&prompt.root; mount -t cd9660 /dev/cd0c /mnt
使用している CDROM インタフェースによっては、
デバイス名
(この例では /dev/cd0c)
が異なるかもしれないことに注意してください。
また、 オプションは、単に
&man.mount.cd9660.8; を実行します。
この例を以下のように短縮することもできます。
&prompt.root; mount_cd9660 /dev/cd0c /mnt
一般的にこの方法では、すべてのメーカの データ CDROM
を使用することができます。しかしながら、特定の ISO 9660
拡張が施されたディスクでは奇妙な動作をするかもしれません。
たとえば Joliet ディスクは、
すべてのファイル名を 2 バイトの Unicode 文字で格納します。
FreeBSD カーネルは (まだ) Unicode を理解できないので、
非英語文字はクエスチョンマークで表示されます
(FreeBSD 4.3 以降を使用している場合、CD9660 ドライバには適切な Unicode
変換表を読み込むための急ごしらえのフックが含まれています。
いくつかの共通のエンコードに対するモジュールは
sysutils/cd9660_unicode port
から利用可能です)。
CDROM をマウントしようとする時に、
Device not configured
と表示されるかもしれません。これは、ディスクがトレーにないと
CDROM ドライブが判断しているか、
ドライブがバス上に認識できないことを通常意味します。
ディスクが挿入されたことを CDROM ドライブが認識するには数秒かかりますので、
辛抱強く待ってください。
バスのリセットに返答するためのタイムアウトが短いために、時々 SCSI
CDROM は認識に失敗するかもしれません。SCSI CDROM を持っている場合は、
次のオプションをカーネルコンフィギュレーションファイルに追加して、
カーネルを再構築してください。
options SCSI_DELAY=15000
これより、SCSI バスを起動時に 15 秒間停止させて、
CDROM ドライブがバスリセットに応答する機会を与えます。
Raw データ CD の書き込み
ISO 9660 ファイルシステムを作成すること無く、
ファイルを直接 CD に書き込むこともできます。
この方法をバックアップ目的に使用している人もいます。
これは、標準 CD を書き込むよりもさらに速く実行することができます。
&prompt.root; burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate
このように CD に書き込まれたデータを取得するには、
raw デバイスノードからデータを読み込まなくてはなりません。
&prompt.root; tar xzvf /dev/acd1c
このディスクを通常の CDROM としてマウントすることはできません。
このような CDROM は FreeBSD を除いて、
他のすべてのオペレーティングシステムでは読み込むことはできません。
CD をマウントしたいか、
その他のオペレーティングシステムとデータを共有したい場合は、
上記に説明したように
sysutils/mkisofs
を使用しなくてはなりません。
ATAPI/CAM ドライバの使用
CD ライタ
ATAPI/CAM ドライバ
このドライバは、ATAPI デバイス (CD-ROM, CD-RW, DVD ドライブなど)
へ SCSI サブシステムを通じてアクセスすることを可能にします。
これにより、sysutils/cdrdao または
&man.cdrecord.1; のようなアプリケーションが使用できるようになります。
このドライバを使用するためには、
カーネルコンフィギュレーションファイルに次の行を追加する必要があります。
device atapicam
device scbus
device cd
device pass
次の行もカーネルコンフィギュレーションファイルに必要です。
device ata
device atapicd
両方がすでに存在しなければなりません。
それから再構築し、新しいカーネルをインストールし、
コンピュータを再起動します。
起動プロセス中にディスクライタは以下のように表示されるでしょう。
acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: <MATSHITA CDRW/DVD UJDA740 1.00> 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
ドライブは /dev/cd0
デバイスを通じてアクセスすることが可能となります。
たとえば、次のようにして CD-ROM を /mnt
にマウントします。
&prompt.root; mount -t cd9660 /dev/cd0c /mnt
root 権限で次のコマンドを実行して、
ライタの SCSI アドレスを得ることができます。
&prompt.root; camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)
したがって、1,0,0 が &man.cdrecord.1;
およびその他の SCSI アプリケーションで使用する SCSI アドレスです。
ATAPI/CAM および SCSI システムの詳細は &man.atapicam.4; および
&man.cam.4; マニュアルページを参照してください。
フロッピーディスクの作成と使用
JulioMerino原作:
MartinKarlsson改訂:
フロッピーディスクにデータを格納することはしばしば役にたちます。
たとえば、ある人が他のリムーバブル記録メディアを何も持っていないときや、
小さなデータを他のコンピュータに移動させる必要があるときです。
この節では、FreeBSD におけるフロッピーディスクの使用方法を説明します。
主に 3.5 インチの DOS フロッピーのフォーマットと操作方法を扱いますが、
他のフロッピーディスクの形式についても概念は似ています。
フロッピーのフォーマット
デバイス
他のデバイスと同様に、フロッピーディスクは
/dev にあるエントリを通じてアクセスされます。4.X
およびそれ以前のリリースにおいて raw
フロッピーディスクにアクセスするには
/dev/fdN
または /dev/fdNX
を使用します。N はドライブ番号を表し、
大抵は 0 です。X は文字を表します。
5.0 およびそれ以降のリリースでは、単に
/dev/fdN を使用します。
4.X およびそれ以前のリリースでのディスクサイズ
/dev/fdN.size というデバイスもあります。
size
はフロッピーディスクのサイズをキロバイトで示したものです。
これらのエントリは低レベルフォーマットの際に、
ディスクサイズを決定するのに使用されます。
1440kB は以下の例で使用されるサイズです。
時々 /dev 下のエントリは (再)
作成されなければなりません。次のコマンドでこれを行います。
&prompt.root; cd /dev && ./MAKEDEV "fd*"
5.X およびそれ以降のリリースでのディスクサイズ
FreeBSD 5.0 では &man.devfs.5; が
/dev 内のエントリを自動的に管理するので、
MAKEDEVを使用する必要はありません。
所望のディスクサイズは &man.fdformat.1; に
フラグを通して渡されます。対応しているサイズは &man.fdcontrol.8;
のマニュアルページに掲載されていますが、最良に動作するのは
1440kB だと助言しておきます。
フォーマット
フロッピーディスクは、
使用前に低レベルフォーマットをする必要があります。
通常、ベンダは低レベルフォーマット済みのディスクを出荷していますが、
フォーマットはメディアの品質を確認するよい方法です。
より大きな (または小さな) ディスクサイズにすることも可能ですが、
ほとんどのフロッピーディスクのサイズは 1440kB で動作するように設計されています。
フロッピーディスクを低レベルフォーマットするには
&man.fdformat.1; を使用する必要があります。
このユーティリティは引数としてデバイス名を指定します。
ディスクが良好かあるいは不良であるかを決定するのに役立つので、
エラーメッセージをすべてメモに取っておいてください。
4.X 以前のリリースでのフォーマット
/dev/fdN.size デバイスを使ってフロッピーをフォーマットします。
新しい 3.5 インチフロッピーディスクをドライブに挿入し、
以下のコマンドを実行してください。
&prompt.root; /usr/sbin/fdformat /dev/fd0.1440
5.0 以降のリリースでのフォーマット
/dev/fdN
デバイスを使用してフロッピーをフォーマットします。
新しい 3.5 インチフロッピーディスクをドライブに挿入し、
以下のコマンドを実行してください。
&prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0
ディスクラベル
ディスクを低レベルフォーマットしたら、
次にディスクラベルを作成する必要があります。
ディスクラベルは後で破棄されますが、
システムがディスクのサイズとジオメトリを決定するのに必要になります。
新しいディスクラベルはディスク全体を引き継ぎ、
フロッピーのジオメトリに関する適切な情報のすべてが含まれます。
ディスクラベルに対するジオメトリの値は
/etc/disktab に掲載されています。
次のように &man.disklabel.8; を実行できます。
&prompt.root; /sbin/disklabel -B -r -w /dev/fd0 fd1440
&os; 5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていないオプションおよびパラメタの数多くが削除されました。
たとえば オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
マニュアルページを参照してください。
ファイルシステム
これでフロッピーを高レベルフォーマットする準備ができました。これは
FreeBSD がディスクを読み書きする新しいファイルシステムを作成します。
新しいファイルシステムを作成するとディスクラベルは破棄されます。
したがって、ディスクを再フォーマットするときには、
ディスクラベルを再作成しなくてはなりません。
フロッピーのファイルシステムには UFS または FAT を使用できます。
フロッピーに対しては FAT が一般的によりよい選択です。
フロッピー上に新しいファイルシステムを作成するには次のようにします。
&prompt.root; /sbin/newfs_msdos /dev/fd0
これでディスクが使用できるようになりました。
フロッピーの使用
フロッピーを使用するために、&man.mount.msdos.8;
(4.X 以前のリリース) または &man.mount.msdosfs.8;
(5.0 以後のリリース) を用いてマウントします。
Ports Collection から
emulators/mtools
を使用することもできます。
データテープの作成と使用
テープメディア
一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ、
DLT があります。
4mm (DDS: Digital Data Storage)
テープメディア
DDS (4mm) テープ
テープメディア
QIC テープ
4mm テープはワークステーションのバックアップメディアとして
QIC に取って代わりつつあります。この傾向は
QIC ドライブの主要なメーカであった Archive を Conner が買収し
QIC ドライブの製造を中止したことで加速しました。
4mm ドライブは小型で静かですが 8mm
ドライブが持っている信頼性ほど、その評判は良くありません。
また、4mm カートリッジは 8mm カートリッジよりも安価で小型
(3 x 2 x 0.5 インチ、76 x 51 x 12 mm) になっています。
ただし、8mm と同様に、4mm のヘッドはヘリカルスキャン方式
(訳注: VTR と同様の回転ヘッドを使う方式)
を採用しているため、比較的寿命が短いです。
ドライブのデータスループットは、150 kB/s から
最大で 500 kB/s 程度です。 データ容量は 1.3 GB から
2.0 GB です。
ドライブのほとんどで利用可能なハードウェア圧縮を使用すると、
容量が約 2 倍になります。
マルチドライブテープライブラリユニットは 1 つの筐体に
6 つのドライブを収容可能で、自動的にテープの交換ができます。
ライブラリの容量は 240 GB に達します。
現在の DDS-3 標準は 12 GB (圧縮時 24 GB)
までのテープ容量に対応しています。
8mm ドライブと同様に
4mm ドライブはヘリカルスキャンを使用します。
ヘリカルスキャン方式の利点および欠点はすべて 4mm および 8mm
ドライブの両方に当てはまります。
テープは 2,000 回のパスあるいは
100 回フルバックアップした後には交換するべきです。
8mm (Exabyte)
テープメディア
Exabyte (8mm) テープ
8mm テープは SCSI
テープドライブとして最もよく使われているもので、
データ交換用として最良の選択です。ほとんどのサイトには Exabyte
2 GB 8mm テープドライブがあるでしょう。8mm
ドライブは信頼性が高く、使いやすく、静かです。
カートリッジは安価で小型です
(4.8 x 3.3 x 0.6 インチ、122 x 84 x 15 mm)。8mm
テープの欠点は、テープとヘッドの相対的な速度が高速なために、
比較的ヘッドとテープの寿命が短いことです。
データスループットは 250 kB/s から 500 kB/s
程度です。データ容量は 300 MB から 7 GB です。
ほとんどのドライブで利用可能なハードウェア圧縮を利用すると、
容量が約 2 倍になります。
これらのドライブは、単一のユニットから
6 つのドライブと 120
本のテープを一つの筐体に収容したマルチドライブテープライブラリまで利用可能です。
テープはユニットによって自動的に取り換えられます。
ライブラリの容量は 840 GB 以上に達します。
Exabyte の Mammoth
モデルはテープ 1 本あたり 12 GB
(圧縮時 24 GB) に対応し、
従来のテープドライブと比べ費用は約 2 倍になります。
データはヘリカルスキャンを用いてテープに記録されます。
ヘッダはメディアに対してある傾き (約 6 度) に配置されます。
テープはヘッドのある円筒の周の 270 度にわたって接触します。
テープが円筒面を走行する間、円筒は回転しています。
この結果、高密度のデータのつまったトラックは、
狭い間隔でテープの上端と下端の間を斜めに横切ります。
QIC
テープメディア
QIC-150
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 インチ幅のテープも使用している
ミニカートリッジ
は別に議論します。テープライブラリやチェンジャはありません。
データスループットは ~1500 kB/s から ~5000 kB/s
程度です。データ容量は 400 MB から 150 GB です。
ハードウェア圧縮が最近のドライブの多くで利用できます。
QIC ドライブは DAT ドライブに置き換えられつつあり、
あまり頻繁には使用されなくなっています。
データは複数のトラックに分かれてテープに記録されます。
トラックはテープメディアの長さ方向の一端からもう一方の端までです
(訳注: 1 トラックの read/write が終わるとテープの走行方向を反転させ
次のトラックの read/write を行います)。トラックの数と、
それに対応するトラックの幅はテープの容量によって変わります。
すべてではありませんが、
最近のドライブはほとんど、少なくとも読み出しについては
(場合によっては書き込みも) 下位互換性があります。
QIC はデータの安全性についてはよいといわれています
(ヘリカルスキャンドライブに比べて機構は単純でより丈夫です)。
テープは 5000 回のバックアップで寿命となるでしょう。
XXX* ミニカートリッジ
DLT
テープメディア
DLT
DLT はここに示したドライブのタイプの中で最高速のデータ転送レートを発揮します。
1/2 インチ (12.5mm) テープが単リールのカートリッジ
(4 x 4 x 1 インチ、100 x 100 x 25 mm) に入っています。
カートリッジのひとつの側面全体がスイングゲートになっています。
ドライブの機構がこのゲートを開け、テープリーダを引き出します。
テープリーダには楕円形の穴があり、
ドライブがテープを 引っ掛ける
のに使います。
巻き取りのためのリールはドライブの中にあります。
ここに挙げた他のカートリッジはすべて
(9 トラックテープは唯一の例外です)
送り出しリールと巻き取りリールの両方がカートリッジの中にあります。
データスループットは約 1.5 MB/s で、4mm, 8mm, QIC
テープドライブの 3 倍です。データ容量は単一のドライブで
10 GB から 20 GB の範囲です。マルチテープチェンジャ、
マルチテープドライブ、5 から 900 巻のテープを 1 から
20 ドライブで扱うマルチドライブテープライブラリがあり、
50 GB から 9 TB の容量が得られます。
圧縮によって、DLT Type IV フォーマットは
70 GB までの容量に対応しています。
データは (QICテープのように)
テープの走行方向と平行に複数あるトラックへ記録されます。
2 つのトラックに同時書き込みを行います。
read/write ヘッドの寿命は比較的長いと言えます。
テープの走行が止まればヘッドとテープの間の相対運動は無いからです。
AIT
テープメディア
AIT
AIT は、Sony が発表した新しいフォーマットで、
テープ 1 本あたり 50 GB (圧縮時) まで格納できます。
テープにはメモリチップが搭載されており、
テープの内容の索引情報を保持しています。
他のテープではテープ上のファイルの位置を把握するのに数分必要とするのですが、
このテープドライブでは索引情報を読んで直ちに決定することができます。
SAMS:Alexandria
のようなソフトウェアは、40 を超える
ATI テープライブラリを操作できるのはもちろんのこと、
テープのメモリチップと直接通信して、スクリーンに内容を表示し、
どのファイルがどのテープにバックアップされたかを調べて、
正しいテープを見つけ、読み込み、
テープからデータを復元することができます。
このようなライブラリは大体 $20,000 くらいするので、
愛好家が購入できる価格帯からは外れてしまいます。
新品のテープを初めて使う場合
全く新品の空テープを読もうとしたり書き込もうとすると、
処理は失敗するでしょう。
次のようなメッセージがコンソールに出力されるでしょう。
sa0(ncr1:4:0): NOT READY asc:4,1
sa0(ncr1:4:0): Logical unit is in process of becoming ready
テープに識別ブロック (Identifier Block:block number 0)
がありません。QIC-525 標準を採用したすべての QIC
テープドライブは識別ブロックをテープに書き込みます。
2 つの解決方法があります。
mt fsf 1
によりテープドライブはテープに識別ブロックを書き込みます。
フロントパネルのボタンを押してテープを取り出します。
再びテープを挿入し、データをテープに dump
します。
dump は
DUMP: End of tape detected と報告し、
コンソールには
HARDWARE FAILURE info:280 asc:80,96
と表示されるでしょう。
mt rewind を使ってテープを巻戻します。
次からはテープの操作はうまくいくでしょう。
フロッピーディスクへのバックアップ
データをバックアップするのにフロッピーは使えますか?
バックアップフロッピー
フロッピーディスク
フロッピーディスクは以下の理由によって、
実際にバックアップをつくるための適切なメディアではありません。
メディアの信頼性が (特に長期間の場合) 低い。
バックアップとリストアがとても遅い。
容量が非常に小さい
(1 ダースかそこらのフロッピーディスクに
ハードディスク全体をバックアップしていた時代は、
はるか遠くに過ぎ去りました)。
しかしながら、データをバックアップする他の手段がないのなら、
バックアップを取らないよりもフロッピーディスクを使う方がましでしょう。
フロッピーディスクを使用せざるを得ないときは、
品質のよいディスクを使用してください。
事務所のその辺に数年転がっていたフロッピーは使わない方が良いでしょう。
評判のよいメーカの新しいディスクを使用することが理想です。
それではどうやってデータをフロッピーにバックアップするのですか?
フロッピーにバックアップする最もよい方法は、
(マルチボリューム) オプション付きで
&man.tar.1; コマンドを使用することです。これで、
複数のフロッピーにわたってバックアップすることが可能になります。
カレントディレクトリとサブディレクトリ内のすべてのファイルをバックアップするには、
以下のコマンドを (root 権限で)
使用します。
&prompt.root; tar Mcvf /dev/fd0 *
1 枚目のフロッピーが一杯になると、
&man.tar.1; は次のボリュームを挿入するように要求します
(&man.tar.1; はさまざまなメディアを扱えるので、
ボリュームと表示します。この文脈ではフロッピーディスクのことです)。
Prepare volume #2 for /dev/fd0 and hit return:
指定したファイルがすべて保存されるまで
(ボリューム番号を増やしながら) これが繰り返されます。
バックアップを圧縮することはできませんか?
tar
gzip
圧縮
残念なことに &man.tar.1; はマルチボリュームアーカイブに対して、
オプションを使うことができません。
もちろん、すべてのファイルを &man.gzip.1; で圧縮し、
それらを &man.tar.1; を用いてフロッピーに保存して、
それから再び &man.gunzip.1; することはできます。
どのようにしてバックアップをリストアしたらいいのでしょうか?
すべてのアーカイブをリストアするには以下のようにします。
&prompt.root; tar Mxvf /dev/fd0
特定のファイルだけをリストアするには 2 つの方法があります。
1 つ目は、1 枚目のフロッピーを用いて以下のようにするものです。
&prompt.root; tar Mxvf /dev/fd0 filename
&man.tar.1; ユーティリティは、
必要なファイルを見つけるまで次のディスクを挿入するように要求します。
もう 1 つは、
必要なファイルがどのフロッピーに保存されているか分かっている場合、
そのフロッピーを挿入して上記と同じコマンドを使用するだけでもよいです。
あるフロッピー上にある 1 番目のファイルが、
その前のフロッピーから続いている場合は、
そのファイルのリストアを要求していなくても &man.tar.1;
はそれをリストアできないと警告することに注意してください!
バックアップの基本
主なバックアッププログラムは
&man.dump.8;, &man.tar.1;, &man.cpio.1; の三つです。
ダンプとリストア
バックアップソフトウェア
ダンプ / リストア
dump
restore
伝統的な &unix; のバックアッププログラムは
dump と restore です。
これらはファイルシステムによって作成されるファイル、リンク、
ディレクトリといった抽象の下位にある、
ディスクブロックの集合としてドライブを操作します。
dump
はデバイス上のファイルシステム全体をバックアップします。
ファイルシステムの一部分だけ、
または二つ以上のファイルシステムにわたるディレクトリツリーをバックアップすることはできません。
dump
はファイルおよびディレクトリをテープに書き込まずに、
ファイルおよびディレクトリを含んだ raw データブロックを書き込みます。
ルートディレクトリで dump
を使った場合、
/home, /usr
など、他の多くのディレクトリはバックアップされません。
これらのディレクトリは通常、
他のファイルシステムへのマウントポイントであったり、
シンボリックリンクとなっているためです。
dump には AT&T UNIX のバージョン 6
(およそ 1975 年) の初期から残っている癖があります。
デフォルトのパラメタは、現在利用可能な高密度メディア
(最大 62,182 ftpi) ではなく、9 トラックテープ (6250 bpi)
に最適な値となっています。
現在のテープドライブの容量を利用するために、
これらのデフォルト値をコマンドラインで上書きしなければなりません。
.rhosts
rdump と rrestore
を用いて他のコンピュータに接続されているテープドライブにネットワーク経由でデータをバックアップすることも可能です。
どちらのプログラムもリモートのテープドライブにアクセスするために
rcmd および ruserok
に依存しています。
したがって、バックアップを実行するユーザがリモートコンピュータの
.rhosts ファイルに書かれていなければなりません。
rdump および rrestore
の引数はリモートコンピュータに適切なものを用いなければなりません。
FreeBSD コンピュータから komodo と呼ばれる Sun
に接続されている Exabyte テープへ rdump
するには以下のようにします。
&prompt.root; /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1
注意: .rhosts
認証を許可することには、セキュリティに関する暗黙の仮定があります。
あなたの置かれている状況を注意深く調べてください。
ssh 越しに
dump と restore
をより安全な形で使うこともできます。
ssh 越しの
dump の利用
&prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz
または、環境変数 RSH を設定して、
dump の組み込み機能を利用する。
RSH を設定した ssh 越しの dump を利用
&prompt.root; RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0
tar
バックアップソフトウェア
tar
&man.tar.1; は AT&T UNIX の バージョン 6 (1975 年ごろ)
にまで遡ることができます。tar
はファイルシステムと協調して動作し、
ファイルとディレクトリをテープに書き込みます。tar
は &man.cpio.1;
で使用可能なフルレンジのオプションには対応していませんが、
tar には cpio
が使用するような奇妙なコマンドパイプラインは必要ありません。
tar
tar
の多くの版はネットワーク経由のバックアップには対応していません。
FreeBSD が使用している GNU 版の tar は、
rdump
と同じ構文でリモートデバイスに対応しています。
komodo と呼ばれる Sun に接続された Exabyte
テープドライブに対して tar
を実行するには以下のようにします。
&prompt.root; /usr/bin/tar cf komodo:/dev/nsa8 . 2>&1
リモートデバイスに対応していない版に対しては、パイプラインと
rsh
を使用してリモートテープドライブにデータを送ることができます。
&prompt.root; tar cf - . | rsh hostname dd of=tape-device obs=20b
ネットワークを越えたバックアップのセキュリティを懸念しているなら、
rsh の代わりに ssh
を使うべきです。
cpio
バックアップソフトウェア
cpio
&man.cpio.1; は本来 &unix;
ファイルを磁気メディアで交換するためのプログラムです。
cpio はバイトスワッピング、
多くの異なるアーカイブフォーマットの書き込みオプションがあり
(それ以外にも多数のオプションがあります)、
パイプで他のプログラムにデータを渡すこともできます。
この最後にあげた特徴が、cpio
をインストールメディアとしては優れた選択肢にしています。
cpio
はディレクトリツリーの探索の機能はなく、ファイルリストは
stdin からの入力でなくてはなりません。
cpio
cpio
はネットワーク経由のバックアップには対応していません。
以下のようにパイプラインと rsh
を用いてリモートテープドライブにデータを送ることができます。
&prompt.root; for f in directory_list; do
find $f >> backup.list
done
&prompt.root; cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"
directory_list
はバックアップしたいディレクトリのリストで、
user@host
はバックアップを実行したいユーザとホスト名の組であり、
backup_device
はバックアップを書き込みたいデバイスです
(たとえば /dev/nsa0)。
pax
バックアップソフトウェア
pax
pax
POSIX
IEEE
&man.pax.1; は tar と
cpio に対する IEEE/&posix;
の回答です。長年の間、さまざまな版の
tar と cpio
は互いにわずかに非互換になってきていました。
それらをしらみ潰しに標準化する代わりに、&posix;
は新しいアーカイブユーティリティを作りました。
pax
は、いくつもの cpio や
tar
のフォーマットの読み書きに対応しようと試みているほか、
専用に新しいフォーマットを開発しました。
コマンド群は tar よりも
cpio の方にいくぶん似ています。
Amanda
バックアップソフトウェア
Amanda
Amanda
Amanda (Advanced Maryland
Network Disk Archiver) は単一のプログラムではなく、
クライアント/サーバ型のバックアップシステムです。
Amanda サーバは、
Amanda クライアントを有する
ネットワークに接続されたコンピュータからデータを受け取り、
備え付けられたテープドライブにバックアップします。
いくつもの大容量ディスクを備えたサイトでの共通の問題は、
データディレクトリをテープにバックアップするのに時間がかかりすぎることです。
Amanda はこの問題を解決します。
Amanda は
ホールディングディスク
を使用して、
同時に複数のファイルシステムのバックアップを行うことができます。
Amanda の設定ファイルにかかれたすべてのファイルシステムのフルバックアップを特定の間隔でとるために
アーカイブセット
と呼ばれるテープグループを作成します。
アーカイブセット
には
夜間に作成されるすべてのファイルシステムの増分 (または差分)
のバックアップも含まれます。
障害が起きたファイルシステムのリストアには、
最も新しいフルバックアップと増分のバックアップが必要です。
設定ファイルでは、バックアップの制御と
Amanda
によるネットワークトラフィック量を設定します。
Amanda
は上記のバックアッププログラムのいずれかを使ってデータをテープに書き込みます。
Amanda は port または package
として利用可能です。デフォルトではインストールされていません。
何もしない
何もしない
というのはコンピュータのプログラムではありませんが、
バックアップの戦略として最も広く採用されています。
これには初期投資が必要ありません。
従わなければならないバックアップスケジュールもありません。
ただ何もしないだけです。データに何か起きたら苦笑いして耐えてください!
あなたにとって時間やデータの価値が少ないか、
あるいはまったくないのであれば 何もしない
のはあなたのコンピュータに最も適したバックアッププログラムでしょう。
しかし注意してください。&unix; は便利なツールです。
6 ヶ月も使用していれば、
あなたにとって価値のあるファイルの山が出来上がっているでしょう。
何もしない
ことはコンピュータが同じものをもう一度作り直すことのできる
/usr/obj
やその他のディレクトリツリーについては適切なバックアップ方法です。
一例として、このハンドブックの HTML 版 または &postscript;
版を構成するファイルがあります。
これらの文書形式は SGML ファイルから作成されたものです。
HTML または &postscript; ファイルのバックアップは必要ありません。
SGML ファイルは定期的にバックアップされています。
どのバックアッププログラムが最適ですか?
LISA
&man.dump.8; です。以上。
Elizabeth D. Zwicky
はここで検討したプログラムすべてについて拷問的なテストを行いました。
すべてのデータと &unix;
ファイルシステムの状態すべてを保存するのに最適なのは、明らかに
dump です。
Elizabeth は多種多様の特異な状態
(いくつかはあまり珍しくないものもあります)
を含むファイルシステムを作成し、
それらのファイルシステムのバックアップとリストアを行って、
それぞれのプログラムのテストを行いました。特異な状態とは、
ホールがあるファイル、ホールとヌルブロックがあるファイル、
奇妙な文字をファイル名に持つファイル、読み取り不可、
書き込み不可のファイル、デバイスファイル、
バックアップ中のファイルのサイズ変更、
バックアップ中のファイルの作成および削除、などです。
彼女は 1991 年 10 月の LISA V で結果を発表しています。
torture-testing Backup and Archive Programs
を参照してください。
緊急時のリストア手順
惨事が起きる前に
発生する可能性があるどのような惨事に対しても、
備えるのに必要な手順は以下の 4 ステップだけです。
disklabel
最初に、
各ディスクのディスクラベルとファイルシステムテーブル
(/etc/fstab)、
ブートメッセージ全体をそれぞれ 2 枚ずつ印刷します
(たとえば disklabel da0 | lpr)。
fix-it フロッピー
2 番目に、ブートフロッピーと fix-it フロッピー
(boot.flp および fixit.flp)
にそのシステムのデバイスがすべて含まれているか確認します。
最も簡単に確認する方法は、フロッピーをドライブに入れてマシンをリブートしてブートメッセージを確認することです。
あなたのシステムのデバイスのすべてが含まれ、
機能していれば 3 番目の手順に進んでください。
さもなければ、
そのシステムのすべてのディスクをマウントでき、
テープドライブにもアクセスできるカーネルを備えた
カスタムブートフロッピーを 2 枚作成する必要があります。
これらのフロッピーディスクには fdisk,
disklabel, newfs,
mount
と、利用するバックアッププログラムが入っていなければなりません。
これらのプログラムはスタティックリンクされていなければなりません。
dump を使用するのなら、このフロッピーには
restore も含まれていなければなりません。
3 番目に、定期的にバックアップテープを作成します。
最後のバックアップの後で行われた変更は、回復できずに失われます。
バックアップテープにライトプロテクトを施してください。
4 番目に、フロッピーディスク
(boot.flp と
fixit.flp、
か、第 2 段階で作成した
2 枚のカスタムブートフロッピーディスクのどちらか)
およびバックアップテープのテストをします。
手順のメモを作りましょう。
このメモはブートフロッピー、印刷した紙、
バックアップテープと一緒に保存しておきます。
リストアを行うときには、
このメモがバックアップテープを壊すのを防ぐくらい取り乱しているかもしれません
(どのように?
tar xvf /dev/sa0 の代わりに、うっかり
tar cvf /dev/sa0
と入力してバックアップテープを上書きしてしまうかもしれません)。
訳注
上書きはライトプロテクトをしておけば防げますが、
何らかの原因でプロテクトがはずれているかもしれません。
ちなみに訳者の経験から言えば、
上のようなミスタイプは結構起きます。
安全性を増すために、毎回、
ブートフロッピーを作成し、
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 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 < /mnt/etc/master.passwd <
惨事の後は
重要な問題は、ハードウェアが生き残ったかどうかです。
定期的にバックアップを取っていれば、
ソフトウェアについて心配する必要はありません。
ハードウェアに障害があれば、
コンピュータを使用する前にその部品を交換してください。
ハードウェアに問題が無ければ、フロッピーを確認してください。
カスタムブートフロッピーディスクを使用しているのであれば、
シングルユーザモードでブートして (boot:
プロンプトで -s を入力します)、
次の段落は飛ばしてください。
boot.flp と fixit.flp
を使用しているのであればこのまま読み進めてください。
boot.flp
フロッピーをフロッピードライブに入れて、
コンピュータを起動してください。
本来のインストールメニューが画面に表示されます。
Fixit--Repair mode with CDROM or floppy.
オプションを選択します。指示された通り
fixit.flp をいれてください。
restore とその他必要となるプログラムは
/mnt2/stand にあります。
そして、ファイルシステムを一つずつ回復します。
mount
root パーティション
disklabel
newfs
最初のディスクのルートパーティションを mount
してみてください (たとえば mount /dev/da0a /mnt)。
ディスクラベルが破壊されている場合は、disklabel
を用いてあらかじめ印刷して保存しておいた通りにパーティションを作り直し、ディスクラベルを作成してください。
newfs を使用してファイルシステムを作り直します。
ルートパーティションを読み書き可能にマウントし直します
(mount -u -o rw /mnt)。
バックアッププログラムとバックアップテープを使用して、
このファイルシステムのデータを回復します
(たとえば restore vrf /dev/sa0)。
ファイルシステムをアンマウントします
(たとえば umount /mnt)。
障害を受けたファイルシステムそれぞれについて繰り返してください。
システムが動き出したら、
新しいテープにデータをバックアップしてください。
どのような理由で再び事故が起きたり、データが失われるかわかりません。
これに数時間を費すことで、後々の災難から救われます。
ネットワーク、メモリ、そしてファイルベースのファイルシステム
MarcFonvieille再構成および追記:
仮想ディスク
ディスク
仮想
FreeBSD にはフロッピーや CD,
ハードディスクなどの手元の計算機に取り付けたディスクの他に、
別の形態のディスク、仮想ディスク、もあります。
NFS
Coda
ディスク
メモリ
これには、Network File System
のようなネットワークファイルシステムや Coda,
メモリベースのファイルシステムおよびファイルベースのファイルシステムがあります。
稼働させている FreeBSD のバージョンによって、
ファイルベースおよびメモリベースのファイルシステムを作成したり操作するために、異なるツールを使用しなければならないでしょう。
FreeBSD 4.X の使用者は必要なデバイスを作成するために
&man.MAKEDEV.8; を使用しなければならないでしょう。FreeBSD 5.0
以降では、&man.devfs.5; がデバイスノードを自動的に割り当ててくれるので、
使用者が意識する必要はありません。
FreeBSD 4.X でファイル中に構築されるファイルシステム
ディスク
ファイルベース (4.X)
&man.vnconfig.8;
ユーティリティを使えば擬似ディスクデバイスを設定し、
有効にすることができます。
vnode とはファイルの内部的な表現方法であり、
ファイルに関する操作の中心となるものです。つまり、&man.vnconfig.8;
はファイルシステムを生成したり操作したりするためにファイルを用いるのです。
一つ例を挙げると、
ファイルに収められたフロッピーや CD-ROM のイメージをマウントするために用いることができます。
&man.vnconfig.8; を使用するためには、
カーネルが &man.vn.4; デバイスに対応している必要があります。
そうでなければ、カーネルコンフィギュレーションファイルに
次の行を追加してカーネルを再構築し、システムを再起動してください。
pseudo-device vn
既にあるファイルシステムイメージのマウント
FreeBSD 4.X での vnconfig を用いた既存のファイルシステムイメージのマウント
&prompt.root; vnconfig vn0 diskimage
&prompt.root; mount /dev/vn0c /mnt
&man.vnconfig.8; を用いたファイルシステムイメージの新規作成
vnconfig を用いたファイルベースディスクの新規作成
&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; vnconfig -s labels -c vn0 newimage
&prompt.root; disklabel -r -w vn0 auto
&prompt.root; newfs vn0c
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; mount /dev/vn0c /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/vn0c 4927 1 4532 0% /mnt
FreeBSD 5.X でファイル中に構築されるファイルシステム
ディスク
ファイルベース (5.X)
&man.mdconfig.8; ユーティリティは FreeBSD 5.X において
メモリディスク (&man.md.4;) を設定し、有効にするために使用されます。
&man.mdconfig.8; を使用するためには &man.md.4; モジュールを読み込むか、
カーネルコンフィギュレーションファイルに &man.md.4;
デバイスを追加してカーネルを再構築し、システムを再起動してください。
device md
&man.mdconfig.8; コマンドは、
三つのタイプのメモリベース仮想ディスクに対応しています。
&man.malloc.9; を用いて割り当てられたメモリディスク、
ファイルをベースにしたメモリディスク、
およびスワップ領域をベースにしたメモリディスクです。
想定される使用法は、ファイル内に保持されたフロッピーイメージまたは
CD イメージをマウントすることです。
既にあるファイルシステムイメージのマウント
FreeBSD 5.X での mdconfig を用いた既存のファイルシステムイメージのマウント
&prompt.root; mdconfig -a -t vnode -f diskimage -u 0
&prompt.root; mount /dev/md0c /mnt
&man.mdconfig.8; を用いたファイルシステムイメージの新規作成
mdconfig を用いたファイルシステムイメージの新規作成
&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; mdconfig -a -t vnode -f newimage -u 0
&prompt.root; disklabel -r -w md0 auto
&prompt.root; newfs md0c
/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; mount /dev/md0c /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4846 2 4458 0% /mnt
オプションを用いて
ユニット番号を指定しない場合、&man.mdconfig.8;
は未使用のデバイスを自動的に選択するために
&man.md.4; デバイスの auto-unit 機能を使用します。
割り当てられたユニットの名前は md4
のように標準出力に出力されます。&man.mdconfig.8;
の詳細についてはマニュアルページを参照してください。
&os; 5.1-RELEASE から、従来の &man.disklabel.8;
プログラムは &man.bsdlabel.8;
ユーティリティに置き換えられました。&man.bsdlabel.8; では、
使用されていないオプションおよびパラメタの数多くが削除されました。
たとえば オプションは &man.bsdlabel.8;
では取り除かれました。詳細については &man.bsdlabel.8;
マニュアルページを参照してください。
&man.mdconfig.8; ユーティリティは大変役に立ちますが、
ファイルベースのファイルシステムを作成するために、
多くのコマンドの入力が必要となります。FreeBSD 5.0 では
&man.mdmfs.8; と呼ばれるツールも用意されています。このプログラムは
&man.mdconfig.8; を用いて &man.md.4; ディスクを設定し、&man.newfs.8;
を用いて UFS ファイルシステムを作成し、&man.mount.8;
を用いてマウントします。たとえば、上記と同じファイルシステムを作成し、
マウントしたい場合は、下記のように入力するだけです。
mdmfs を用いたファイルベースディスクの設定とマウント
&prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; mdmfs -F newimage -s 5m md0 /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4846 2 4458 0% /mnt
ユニット番号を指定せずに
オプションを使用した場合、&man.mdmfs.8;
は未使用のデバイスを自動的に選択するために &man.md.4; デバイスの
auto-unit 機能を使用します。&man.mdmfs.8;
についての詳細はマニュアルページを参照してください。
FreeBSD 4.X でのメモリベースのファイルシステム
ディスク
メモリファイルシステム (4.X)
&man.md.4; ドライバは FreeBSD 4.X
においてメモリファイルシステムを作成するために単純で効果的な手段です。
メモリを割り当てるために &man.malloc.9; 関数が使用されます。
&man.vnconfig.8; を用いて作成したファイルシステムを例に取ると、
以下のようにします。
FreeBSD 4.X での md メモリディスク
&prompt.root; dd if=newimage of=/dev/md0
5120+0 records in
5120+0 records out
&prompt.root; mount /dev/md0c /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0c 4927 1 4532 0% /mnt
詳細については &man.md.4; マニュアルページを参照してください。
FreeBSD 5.X でのメモリベースのファイルシステム
ディスク
メモリファイルシステム (5.X)
メモリベースおよびファイルベースのファイルシステムに対しても
同じツール (&man.mdconfig.8; または &man.mdmfs.8;) を使用できます。
メモリベースのファイルシステムに対する記憶領域は
&man.malloc.9; 関数を用いて割り当てられます。
mdconfig を用いたメモリベースディスクの新規作成
&prompt.root; mdconfig -a -t malloc -s 5m -u 1
&prompt.root; newfs -U md1
/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; mount /dev/md1 /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4846 2 4458 0% /mnt
mdmfs を用いたメモリベースディスクの新規作成
&prompt.root; mdmfs -M -s 5m md2 /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4846 2 4458 0% /mnt
&man.mdconfig.8; のコマンドラインの を
に置き換えることで、&man.malloc.9;
関数によるファイルシステムを使用する代わりに
スワップ領域を使用することが可能です。デフォルトでは &man.mdmfs.8;
ユーティリティはスワップベースのディスクを作成します
( なし)。詳細は &man.mdconfig.8; および
&man.mdmfs.8; マニュアルページを参照してください。
システムからメモリディスクを切り離す
ディスク
メモリディスクの切り離し
メモリベースまたはファイルベースのファイルシステムが使用されていない場合、
すべてのリソースをシステムに開放するべきです。
はじめにファイルシステムをアンマウントします。
次にシステムからディスクを切り離し、リソースを開放するために
&man.mdconfig.8; を使用します。
たとえば /dev/md4 によって使用されたすべてのリソースを切り離し、開放するには以下のようにします。
&prompt.root; mdconfig -d -u 4
mdconfig -l コマンドを使用することによって、
設定された &man.md.4; デバイスについての情報を表示することが可能です。
FreeBSD 4.X では &man.vnconfig.8; はデバイスを切り離すのに使用されます。たとえば /dev/vn4 によって使用されたすべてのリソースを切り離し、開放するには以下のようにします。
&prompt.root; vnconfig -u vn4
ファイルシステムのスナップショット
TomRhodes寄稿:
ファイルシステム
スナップショット
FreeBSD 5.0 は
Soft Updates
と協調するファイルシステムスナップショットという新しい機能を提供します。
スナップショットは指定したファイルシステムのイメージを作成し、
また、ファイルとして扱うことができるようになります。
スナップショットファイルはアクションが実行されるファイルシステム内で作成されなければなりません。
また、ユーザは一つのファイルシステムあたり 20
までスナップショットを作成することができます。
有効なスナップショットはスーパーブロック内に記録されるので、
リブートしてから永続的にアンマウントおよびリマウントを記録します。
スナップショットが必要無くなったときは、
標準の &man.rm.1; コマンドを用いて削除することができます。
スナップショットはどんな順番で削除してもよいのですが、
その他のスナップショットが開放されたブロックのうちいくらかをおそらく必要とするので、
使用されていたすべてのスペースを得られるとは限りません。
初めてスナップショットを作成すると、root
でさえも書き込めないように
フラグ (&man.chflags.1; のマニュアルページを参照) が設定されます。
&man.unlink.1; コマンドは、スナップショットに
フラグが設定されていてもそれらを削除することのできる例外です。
したがって、スナップショットファイルを削除する前に、
フラグをクリアする必要はありません。
スナップショットは &man.mount.8; コマンドを用いて作成されます。
/var のスナップショットを
/var/snapshot/snap に作成したいときは、
以下のコマンドを使用します。
&prompt.root; mount -u -o snapshot /var/snapshot/snap /var
また、スナップショットを作成するのに &man.mksnap.ffs.8;
も使えます。
&prompt.root; mksnap_ffs /var /var/snapshot/snap
スナップショットにはいくつかの利用法があります。
スナップショットをバックアップ目的に使用する管理者もいます。
なぜならスナップショットは CD やテープに転送できるからです。
ファイルの完全性を検証するために、
&man.fsck.8; をスナップショットに実行してもよいでしょう。
スナップショットをマウントしたときにそのファイルシステムがクリーンであったとすると、
そのスナップショットをマウントするときはいつでもクリーンな
(そして変更のない) 結果を得るでしょう。
これは本質的には バックグラウンド &man.fsck.8; が行うことです。
スナップショット上で &man.dump.8; ユーティリティを実行すると、
スナップショットのファイルシステムとタイムスタンプが一致するダンプが返されるでしょう。
&man.dump.8; は オプションを使用することで、
一つのコマンドでスナップショットをとり、ダンプイメージを作成して、スナップショットを削除することが可能です。
ファイルシステムの 凍結された
イメージとしてスナップショットを
&man.mount.8; します。
/var/snapshot/snap のスナップショットを
&man.mount.8; するには以下のようにします。
&prompt.root; mdconfig -a -t vnode -f /var/snapshot/snap -u 4
&prompt.root; mount -r /dev/md4 /mnt
これで /mnt にマウントした
凍結状態の /var ファイルシステム構造を探索できます。
すべてがスナップショットが作成された時と同じ状態になるはずです。ただし、
以前に作成されたスナップショットがサイズ 0 のファイルとして現れることが唯一の例外です。
スナップショットの使用を終えた場合、以下のようにアンマウントできます。
&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 4
およびファイルシステムスナップショットに関する詳細については、
http://www.mckusick.com/
にある Marshall Kirk McKusick のウェブサイトを参照してください。
ここには技術的な論文もあります。
ファイルシステムクォータ
アカウンティング
ディスク領域
ディスククォータ
クォータは OS の持っているオプショナルな機能であり、
ファイルシステム毎にユーザやグループのメンバが使用するディスク容量やファイルの数を制限することができます。
この機能は、あるユーザやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます。
この機能を用いることによって使用可能なディスク容量の全てを一人のユーザやユーザのグループが使ってしまうことを防ぐことができます。
ディスククォータを使うためのシステム設定
ディスククォータの設定を始める前に、
まずはカーネルにクォータが組み込まれていることを確認しましょう。
カーネルのコンフィグレーションファイルに次の行を入れます。
options QUOTA
標準の GENERIC カーネルでは、
この機能は有効になっていませんので、
ディスククォータを利用するためには上記を設定後カーネルを構築しなおし、
作成されたカスタムカーネルをインストールしなければいけません。
カーネルのコンフィグレーションに関しては
をご覧ください。
次に /etc/rc.conf
でディスククォータを有効にする必要があります。
次の行を加えましょう。
enable_quotas="YES"
ディスククォータ
チェック
起動時の動作をさらに細かくコントロールするためにもう一つ設定用の変数があります。
通常、起動時には &man.quotacheck.8;
によりそれぞれのファイルシステムのクォータの整合性がチェックされます。
&man.quotacheck.8; の役割は、
クォータデータベースのデータが正しくファイルシステム上のデータを反映しているか確認することです。
これはかなり時間を食う処理であり、
起動にかかる時間に大きな影響を及ぼします。
このステップをとばしたい人のために
/etc/rc.conf に次の変数が用意されています。
check_quotas="NO"
もし 3.2-RELEASE よりも前の FreeBSD
を使っているならば設定はもっと単純で、一つの変数のみです。
次の行を /etc/rc.conf で設定してください。
check_quotas="YES"
最後に、ファイルシステム毎にディスククォータを有効にするために
/etc/fstab を編集する必要があります。
ここでユーザもしくはグループ、
あるいはその両方にクォータを設定することができるのです。
あるファイルシステム上にユーザ毎のクォータを有効にする場合には、
/etc/fstab
中でクォータを有効にしたいファイルシステムエントリのオプション部に
を加えます。
例えば次のようになります。
/dev/da1s2g /home ufs rw,userquota 1 2
同様に、グループクォータを有効にするには
キーワードの代わりに
を用います。
ユーザとグループの両方のクォータを有効にするには次のようにします。
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
デフォルトでは、
クォータファイルはそのファイルシステムのルートディレクトリに
ユーザ用、グループ用それぞれ
quota.user, quota.group
という名前で置かれます。さらに詳しい情報は &man.fstab.5;
をご覧ください。&man.fstab.5;
マニュアルには別の場所を指定することができると書いてはありますが、
あまり勧められません。なぜなら、
様々なクォータ関係のユーティリティがそれにうまく対処できるようにないためです。
この時点で、
一度システムを再起動して新しいカーネルで立ち上げましょう。
/etc/rc が自動的に適当なコマンドを実行し、
/etc/fstab
で有効にした全てのクォータ用に初期ファイルを作ってくれます。
従って、空のクォータファイルを手で作る必要は一切ありません。
通常の運用では &man.quotacheck.8; や
&man.quotaon.8;, &man.quotaoff.8;
といったコマンドを手で動かす必要はないのですが、
慣れるためにもこれらのマニュアルは読んでおきましょう。
クォータリミットの設定
ディスククォータ
制限
一旦クォータを有効にしたら本当に有効になっているのか確認しておきましょう。簡単な方法は次のコマンドを実行することです。
&prompt.root; quota -v
ディスクの使用状況と、クォータが有効になっているファイルシステムのクォータリミットが一行にまとめて出力されるでしょう。
さあ、&man.edquota.8; でクォータリミットを設定する準備ができました。
ユーザやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります。割り当てディスク容量を制限
(ブロッククォータ) することもファイル数を制限 (inode クォータ)
することも、両者を組み合わせることもできるのです。
これらの制限はそれぞれさらに二つのカテゴリ、
ハードリミットとソフトリミット、に分けることができます。
ハードリミット
ハードリミットを越えることはできません。
あるユーザが一旦ハードリミットにたっした場合、
そのファイルシステムではそれ以上の割り当ては望めません。
例えばあるファイルシステム上に
500 ブロックのハードリミットが設定されており現在
490 ブロックを使用している場合、さらに 10 ブロックしか使えないのです。
11 ブロックを使おうとすると失敗します。
ソフトリミット
一方、
ソフトリミットはある限られた時間内であれば越えることができます。
この時間は猶予期間として知られており、デフォルトでは 1 週間です。
あるユーザが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり、それ以上使用することはできなくなります。
ユーザがソフトリミットよりも減らせば猶予期間はリセットされます。
以下は &man.edquota.8;
コマンドを実行した時に見ることになるであろう例です。
&man.edquota.8; コマンドが起動されると環境変数
EDITOR で指定されるエディタに入ります。
EDITOR が設定されていない場合には
vi が起動されます。
ここでクォータリミットを編集します。
&prompt.root; edquota -u test
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)
通常、クォータが有効になっているファイルシステム毎に 2 行あります。
一つはブロックリミット用でもう一つは inode リミット用です。
クォータリミットを変更したいところを書き変えるだけでかまいません。
たとえばこのユーザのブロックリミットを、ソフトリミットは 50 から 500
へ、ハードリミットは 75 から 600 に変更する場合、
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
から
/usr: blocks in use: 65, limits (soft = 500, hard = 600)
へ書き換えます。新しいクォータリミットはエディタを終了すれば設定されます。
ある範囲の UID
に対してクォータリミットを設定したい場合がありますが、このような時には
&man.edquota.8; コマンドの
オプションを使うといいでしょう。まず、
あるユーザに割り当てたいクォータリミットを設定し、次に
edquota -p protouser startuid-enduid
を実行するのです。例えばユーザ test
にお望みのクォータリミットが付いているとしましょう。
次のコマンドにより 10,000 から 19,999 の間の UID
に対して同じクォータリミットを付けることができるのです。
&prompt.root; edquota -p test 10000-19999
さらに詳しいことは &man.edquota.8; のマニュアルページをご覧ください。
クォータリミットとディスク使用状況のチェック
ディスククォータ
チェック
&man.quota.1; または &man.repquota.8;
といったコマンドを使ってクォータリミットやディスクの利用状況を確認することができます。
&man.quota.1; コマンドは個々のユーザやグループのクォータやディスク利用状況を確認するのに使えます。
ユーザは自身のクォータ、そして所属するグループのグループのみ確認することができます。
スーパーユーザのみが他のユーザや所属していないグループのクォータと利用状況を見ることができます。
&man.repquota.8; コマンドを使うと、クォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリを得ることができます。
以下は二つのファイルシステムにクォータ制限がかけられているユーザに対するquota -v コマンドの出力例です。
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
猶予期間
上の例で、/usr
ファイルシステム上ではこのユーザは現在
50 ブロックというソフトリミットを 15 ブロックオーバーし
5 日間の猶予期間が残っています。アスタリスク *
はクォータリミットを越えているユーザを示していることに注意してください。
通常、そのユーザが全く使っていないファイルシステムは、
クォータリミットが付けられているとしても
&man.quota.1; コマンドの出力には現われません。
オプションを用いればそのようなファイルシステム、
上の例では /usr/var、
を表示することができます。
NFS 上の クォータ
NFS
クォータは NFS サーバ上のクォータサブシステムにより実行されます。
&man.rpc.rquotad.8; デーモンにより、NFS クライアント上の &man.quota.1;
コマンドは情報を得ることができ、クライアントマシン上のユーザが自分のクォータの統計を見ることができます。
/etc/inetd.conf において以下のように
rpc.rquotad を有効にしましょう。
rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
そして以下のように inetd を再起動します。
&prompt.root; kill -HUP `cat /var/run/inetd.pid`
ディスクパーティションの暗号化
LuckyGreen寄稿:
shamrock@cypherpunks.to
ディスク
暗号化
FreeBSD
は無許可のデータアクセスに対する優れたオンライン保護機能を提供します。
ファイルのパーミッションおよび強制的アクセスコントロール
(MAC: Mandatory Access Control)
(Mandatory Access Control (MAC) を参照)
は、コンピュータが動作中で、OS が実行中であるときに、
無許可の第三者がデータにアクセスするのを防ぐことに役立ちます。
しかしながら、攻撃者がコンピュータに物理的にアクセスし、
機密データをコピーし分析するためにコンピュータのハードドライブを別のシステムに移動させることができれば、
OS によって強化された許可属性は意味をなさなくなります。
攻撃者が電源の落ちたコンピュータや
ハードドライブを手にいれる手段にかかわらず、
GEOM ベースのディスク暗号化 (gbde: GEOM Based Disk Encryption)
は、著しい資源を持ち本気で攻撃を仕掛けるつもりでやってきた攻撃者からさえもコンピュータのファイルシステム上にあるデータを保護することができます。
個々のファイルだけを暗号化する煩わしい方法と異なり、
gbde
は全ファイルシステムを透過的に暗号化します。
平文テキストは決してハードドライブのプラッタに関係しません。
カーネルで gbde を有効にする
root になる
gbde
の設定をするにはスーパユーザの権限が必要になります。
以下のコマンドを実行して、
root になってください。
&prompt.user; su -
Password:
オペレーティングシステムのバージョンを確かめる
&man.gbde.4; が動作するには FreeBSD 5.0 以降が必要です。
以下のコマンドを実行して、
オペレーティングシステムのバージョンを確認してください。
&prompt.root; uname -r
5.0-RELEASE
カーネルコンフィギュレーションファイルに &man.gbde.4;
対応を追加する
お好みのテキストエディタを使用して、
以下の行をカーネルコンフィギュレーションファイルに加えます。
options GEOM_BDE
FreeBSD カーネルを設定、再コンパイル、インストールします。
この手順は で説明されています。
新しいカーネルで再起動します。
暗号化されたハードドライブの準備
以下の例では、システムに新しいハードディスクを追加しようとしています。このシステムは単一の暗号化されたパーティションを保持することになります。
このパーティションは /private
としてマウントされます。gbde は
/home および /var/mail
を暗号化するのにも使用できますが、
より複雑な指示を必要となるのでこの解説の範疇を越えています。
新しいハードドライブを追加する
で説明されている通りに新しいドライブをシステムに設置します。
この例では、新しいハードドライブは
/dev/ad4s1c パーティションに
加えられたものとします。
/dev/ad0s1*
デバイスは、この例のシステム上に存在する標準的な
FreeBSD パーティションを表します。
&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4
gbde ロックファイルを保持するディレクトリを作成する
&prompt.root; mkdir /etc/gbde
gbde ロックファイルには、
暗号化されたパーティションにアクセスするのに必要となる情報が格納されています。
ロックファイルにアクセスしない場合、
gbde は
膨大な手動による介在なしには (ソフトウェアは対応していません)、暗号化されたパーティションに含まれるデータを解読することはできないでしょう。
それぞれの暗号化されたパーティションは別々のロックファイルを使用します。
gbde パーティションを初期化する
gbde
パーティションは使用する前に初期化されなければなりません。
この初期化は一度だけ実行される必要があります。
&prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c
エディタが開くので、
テンプレートをもとにさまざまなオプションを設定してください。
UFS1 または UFS2 で使用するには、sector_size を
2048 に設定してください。
$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
[...]
&man.gbde.8;
はデータを保護するのに使用するパスフレーズを二度尋ます。
パスフレーズはそれぞれ同じでなければなりません。
データを保護する gbde の能力は、
あなたが選択したパスフレーズの品質に完全に依存します。
記憶するのが簡単で、
安全なパスフレーズを選択する方法については、
Diceware Passphrase
ウェブサイトを参照してください。
gbde init コマンドは
gbde
パーティションに対するロックファイルを作成します。この例では
/etc/gbde/ad4s1c に格納されます。
gbde ロックファイルは、
すべての暗号化されたパーティションの内容とともにバックアップされなければ なりません。
ロックファイルだけを削除している間、
ロックファイルなしでは信念の固い攻撃者が
gbde
パーティションを解読することを防ぐことができない一方で、
正当な所有者は、&man.gbde.8; およびこの設計者にまったく支持されない膨大な量の作業なしには、
暗号化されたパーティション上のデータにアクセスすることができないでしょう。
カーネルに暗号化されたパーティションを接続する
&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c
暗号化されたパーティションを初期化する際に選択したパスフレーズを入力するように求められます。
新しい暗号化デバイスは /dev に
/dev/device_name.bde
として現れます。
&prompt.root; ls /dev/ad*
/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
暗号化デバイス上にファイルシステムを作成する
カーネルに暗号化デバイスが接続されると、
デバイス上にファイルシステムを作成できます。
暗号化デバイス上にファイルシステムを作成するには &man.newfs.8;
を使用します。従来の UFS1 ファイルシステムで初期化するより、
新しい UFS2 ファイルシステムで初期化した方が高速なので、
オプションとともに &man.newfs.8;
を使用することが推奨されています。
&os; 5.1-RELEASE 以降では、
オプションはデフォルトです。
&prompt.root; newfs -U -O2 /dev/ad4s1c.bde
&man.newfs.8; は、デバイス名に
*.bde
拡張子によって認識される、
接続された gbde
パーティションに対して実行されなければなりません。
暗号化パーティションをマウントする
暗号化ファイルシステムに対するマウントポイントを作成します。
&prompt.root; mkdir /private
暗号化ファイルシステムをマウントします。
&prompt.root; mount /dev/ad4s1c.bde /private
暗号化ファイルシステムが利用可能か確かめる
これで暗号化ファイルシステムは &man.df.1; で見ることができ、
利用する準備ができました。
&prompt.user; df -H
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
存在する暗号化ファイルシステムをマウントする
システムを起動する度に、すべての暗号化ファイルシステムは
使用前にカーネルに接続し、
エラーの有無をチェックし、マウントする必要があります。
必要なコマンドは root
ユーザとして実行されなければなりません。
カーネルに gbde パーティションを接続する
&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c
パーティションの暗号化を初期化する際に選択したパスフレーズを入力するように求められるでしょう。
ファイルシステムのエラーをチェックする
暗号化ファイルシステムを自動的にマウントするために
/etc/fstab に設定を掲載することはまだできないため、
マウントする前に &man.fsck.8; を実行して、
ファイルシステムのエラーをチェックしなければなりません。
&prompt.root; fsck -p -t ffs /dev/ad4s1c.bde
暗号化ファイルをマウントする
&prompt.root; mount /dev/ad4s1c.bde /private
これで暗号化ファイルシステムが利用できるようになりました。
暗号化パーティションを自動的にマウントする
スクリプトを作成して、暗号化パーティションを自動的に接続、
チェック、マウントすることは可能です。しかしながら、
安全上の理由によりスクリプトに &man.gbde.8;
パスワードを含めるべきではありません。その代わりに、コンソールまたは
&man.ssh.1; による接続からパスワードを入力するようなスクリプトが手動で実行されることが推奨されます。
gbde が採用した暗号の保護
&man.gbde.8; は 128bit AES の
CBC モードを使用してセクタペイロードを暗号化します。
ディスク上のそれぞれのセクタは異なる AES 鍵で暗号化されます。
セクタ鍵がユーザが入力したパスフレーズからどのように導き出されるかを含め、
gbde の暗号手法の設計についての詳細は、
&man.gbde.4; を参照してください。
互換性に関する問題
&man.sysinstall.8; は
gbde 暗号化デバイスと互換性がありません。
&man.sysinstall.8; を実行する前に
*.bde
デバイスはすべてカーネルから切断されなければなりません。
そうしないと、&man.sysinstall.8; が初めにデバイスを走査する際にクラッシュしてしまうでしょう。
暗号化デバイスを切断するには、以下のコマンドを使用します。
&prompt.root; gbde detach /dev/ad4s1c