Q. 小さいファイルを連続してディスクに書き込むと、すごく遅いのですが。 A. FreeBSD のデフォルトでは、ファイルのデータ本体は遅延書き込みされますが、 i-node (メタデータ) の更新は同期的に行なわれているため、頻繁にファイルの 作成・削除・更新をするような動作は比較的低速です。 これは安全性を考慮した上でのことで、安全性や機能を少し犠牲にすれば 高速化することができます。そのため目的に応じて使い分ける必要がある でしょう。 1. mount(8) 時に -o async オプションを使用すると、i-node の更新も非 同期に行います。例えば、/etc/fstab に /dev/ccd0c /a ufs rw,async 0 2 のように書きます。ただし、速くなる代りに信頼性は犠牲にされます。 mount(8) によると async 指定したファイルシステムのすべての I/O を非同期に行います。 このオプションを指定することは非常に危険ですので、システ ムクラッシュ時にファイルシステムを作り直す用意ができてい ないかぎりは使うべきではありません。 とあります。 ちなみに Linux では、この async がデフォルトになっています。 2. 用途によっては -o noatime オプションも有効です。これはファイルへ のアクセス時に、ファイルの最終アクセス日時を更新しません。ただし、 このアクセス日時を利用するようなアプリケーションは上手く動かない ので注意が必要です。/etc/fstab には /dev/ccd0c /a ufs rw,async,noatime 0 2 のように書きます。 3. FreeBSD 3.0-RELEASE からはこれらに加えて softupdates という機能 が加わっています。これは、安全性の犠牲なしにファイル I/O の高速 化を行おうとするもので、場合によってはかなりの効果が期待できます。 softupdates の解説 <URL:http://www.mew.org/~kazu/doc/softupdate> FreeBSD 4.1-RELEASE 以降は、デフォルトで GENERIC カーネルに softupdates 機能が含まれています。 a) ファイルシステムに対して softupdates を有効にします。この時 tunefs(8) を使うにはファイルシステムがアンマウントされた状態 でなければなりません。シングルユーザモードで作業すれば良いで しょう。 # tunefs -n enable /a b) この機能を使うとき -o async オプションは無意味です。 /dev/ccd0c /a ufs rw,noatime 0 2 また、上手くできたか確認するには mount コマンドをオプションなし で実行します。 % mount /dev/ccd0c on /a (local, noatime, soft-updates, writes: ... ^^^^^^^^^^^^ 4. これ以外で高速化の鍵となるものは、PCI IDE コントローラのフラグ設 定や、newfs(8) 時のオプション指定の最適な組合せ、及び ccd(4) や vinum(8) を使用してディスクをストライピングすることも考慮する価 値があるでしょう。
グループ名: raid