この章の内容は次のとおりです。
/kernel ディレクトリには、プラットフォームに依存しないオブジェクト (プラットフォームに依存しないカーネル genunix も含む) だけが入っています。プラットフォームに依存するディレクトリ /platform と /usr/platform については、表 40-4 を参照してください。
表 40-1 および表 40-2 に、ルート (/) のデフォルトファイルシステム中のディレクトリを示します。
表 40-1 ルート (/) ファイルシステムのデフォルトディレクトリ (その 1)
ディレクトリ |
説明 |
---|---|
/ |
ファイルシステムの名前空間全体のルート |
/dev |
特殊ファイルの一次位置 |
/dev/cfg |
物理 ap_id へのシンボリックリンク |
/dev/cua |
uucp 用のデバイスファイル |
/dev/dsk |
ブロックディスクデバイス |
/dev/fbs |
フレームバッファーのデバイスファイル |
/dev/md |
論理ボリューム管理メタディスクデバイス |
/dev/fd |
ファイル記述子 |
/dev/pts |
pty スレーブデバイス |
/dev/rdsk |
raw ディスクデバイス |
/dev/rmt |
raw テープデバイス |
/dev/sad |
STREAMS Administrative Driver のエントリポイント |
/dev/sound |
オーディオデバイスとオーディオデバイス制御ファイル |
/dev/swap |
デフォルトのスワップデバイス |
/dev/term |
シリアルデバイス |
/etc |
ホスト固有のシステム管理構成ファイルとデータベース |
/etc/acct |
アカウンティングの構成情報 |
/etc/cron.d |
cron の構成情報 |
/etc/default |
各種プログラムのデフォルト情報 |
/etc/dmi |
Solstice Enterprise AgentsTM の構成ファイル |
/etc/dfs |
エクスポートされるファイルシステムの構成情報 |
/etc/dhcp |
DHCP (Dynamic Host Configuration Protocol) の構成ファイル |
/etc/fn |
フェデレーテッドネーミングサービスと x.500 のサポートファイル |
/etc/fs |
/usr をマウントする前に必要な処理のためにファイルシステムタイプ別に編成されたバイナリ |
/etc/gss |
GSS (Generic Security Service) アプリケーションプログラミングインタフェースの構成ファイル |
/etc/inet |
インターネットサービスの構成ファイル |
/etc/init.d |
実行レベルを切り替えるためのスクリプト |
/etc/lib |
/usr が利用できないときに必要な動的リンクライブラリ |
/etc/llc2 |
論理リンク制御 (llc2) ドライバの構成ファイル |
/etc/lp |
プリンタサブシステムの構成情報 |
/etc/mail |
メールサブシステムの構成情報 |
/etc/net |
TI (トランスポート独立) ネットワークサービスの構成情報 |
/etc/nfs |
NFS サーバーロギングの構成ファイル |
/etc/openwin |
|
/etc/opt |
オプションパッケージの構成情報 |
/etc/rc0.d |
実行レベル 0 を開始/停止した時に起動されるスクリプト |
/etc/rc1.d |
実行レベル 1 を開始/停止した時に起動されるスクリプト |
/etc/rc2.d |
実行レベル 2 を開始/停止した時に起動されるスクリプト |
/etc/rc3.d |
実行レベル 3 を開始/停止した時に起動されるスクリプト |
/etc/rcS.d |
システムをシングルユーザーモードで起動するスクリプト |
/etc/rpcsec |
このディレクトリは NIS+ 認証の構成ファイルに含まれていることがある。 |
/etc/saf |
サービスアクセス機能ファイル (FIFO など) |
/etc/security |
BSM (Basic Security Module) の構成ファイル |
/etc/skel |
新規ユーザーアカウントのデフォルトプロファイルスクリプト |
/etc/tm |
商標ファイル。内容はブート時に表示される。 |
/etc/uucp |
uucp 構成情報 |
/export |
共有ファイルシステム (ユーザーのホームディレクトリやクライアントファイルシステムなど) 用のデフォルトのディレクトリ |
/home |
スタンドアロンシステム上にあるユーザーのホームディレクトリ用のデフォルトのディレクトリまたはマウントポイント。AutoFS の動作中、このディレクトリには新しいエントリを作成できない。 |
/kernel |
プラットフォームに依存しない読み込み可能なカーネルモジュールのディレクトリ。ブートプロセスの一部として必要。プラットフォームに依存しないコアカーネル /kernel/genunix の汎用部分を含む。/platform ディレクトリと /usr/platform ディレクトリの構造については、表 40-4 を参照。 |
表 40-2 ルート (/) ファイルシステムのデフォルトディレクトリ (その 2)
ディレクトリ |
説明 |
---|---|
/mnt |
ファイルシステムの一般的な一次マウントポイント |
/opt |
追加アプリケーションパッケージ用のデフォルトディレクトリまたはマウントポイント |
/sbin |
ブートプロセスと手作業によるシステム障害の回復に使用される重要な実行可能プログラム |
/stand |
スタンドアロンプログラム |
/tmp |
一次ファイル。ブートシーケンス中に消去される |
/usr |
/usr ファイルシステムのマウントポイント。詳細は表 40-3 を参照してください。 |
/var |
常に変化するファイル (一時ファイル、ロギングファイル、状態ファイルなど) 用のディレクトリ |
/var/adm |
システムのログファイルとアカウンティングファイル |
/var/audit |
BSM (Basic Security Module) の監査ファイル |
/var/crash |
カーネルクラッシュダンプのデフォルトの格納場所 |
/var/cron |
cron のログファイル |
/var/dmi |
Solstice Enterprise AgentsTM のデスクトップ管理インタフェースの実行時構成要素 |
/var/dt |
dtlogin の構成ファイル |
/var/ftp |
FTP サーバーのディレクトリ |
/var/inet |
IPv6 ルーターの状態ファイル |
/var/log |
システムログファイル |
/var/lp |
ラインプリンタサブシステムのログ情報 |
/var/mail |
ユーザーのメールが保管されるディレクトリ |
/var/news |
コミュニティサービスメッセージ (注: USENET 方式のニュースとは異なる) |
/var/nis |
NIS+ データベース |
/var/nfs |
NFS サーバーのログファイル |
/var/ntp |
NTP (Network Time Protocol) サーバーの状態ディレクトリ |
/var/opt |
ソフトウェアパッケージ関連の各種ファイルのサブツリーのルート |
/var/preserve |
vi と ex のバックアップファイル |
/var/run |
一時的な (つまり、システムをリブート後に残る必要がない) システムファイル。TMPFS マウントされたディレクトリ。 |
/var/sadm |
ソフトウェアパッケージ管理ユーティリティで管理されるデータベース |
/var/saf |
saf (サービスアクセス機能) のログファイルとアカウンティングファイル |
/var/spool |
スプール化された一時ファイルのディレクトリ |
/var/spool/cron |
cron と at のスプールファイル |
/var/spool/locks |
スプールロックファイル |
/var/spool/lp |
ラインプリンタのスプールファイル |
/var/spool/mqueue |
配信用に待ち行列に入れられたメール |
/var/spool/pkg |
スプール化されたパッケージ |
/var/spool/uucp |
待ち行列に入っている uucp のジョブ |
/var/spool/uucppublic |
uucp によって格納されるファイル |
/var/statmon |
ネットワーク状態監視ファイル |
/var/tmp |
一時ファイルのディレクトリ。ブートシーケンス中には消去されない |
/var/uucp |
uucp のログファイルと状態ファイル |
/var/yp |
NIS データベース (NIS との下位互換性を保つため。NIS+ への移行が完了した後は不要) |
次の表に、/usr ファイルシステムのデフォルトのディレクトリを示します。
表 40-3 /usr ファイルシステムのデフォルトディレクトリ
ディレクトリ |
説明 |
---|---|
4lib |
SunOS 4.1 バイナリ互換パッケージライブラリ |
5bin |
/usr/bin ディレクトリへのシンボリックリンク |
X |
/usr/openwin ディレクトリへのシンボリックリンク |
adm |
/var/adm ディレクトリへのシンボリックリンク |
aset |
ASET (Automated Security Enhancement Tools) のプログラムとファイル用のディレクトリ |
bin |
標準的なシステムコマンド用のディレクトリ |
ccs |
C 言語処理系のプログラムとライブラリ |
demo |
デモのプログラムとデータ |
dict |
/usr/share/lib/dict ディレクトリへのシンボリックリンク。UNIX の spell プログラムが使用する辞書が入っている。 |
dt |
CDE ソフトウェア用のディレクトリまたはマウントポイント |
games |
空のディレクトリ。SunOS 4.0/4.1 ソフトウェアで使用されていた |
include |
ヘッダーファイル (C プログラム用など) |
java* |
JavaTM のプログラムとライブラリが入っているディレクトリ |
kernel |
その他のカーネルモジュール |
kvm |
実装されたアーキテクチャ固有のバイナリとライブラリ |
lib |
各種プログラムのライブラリ、アーキテクチャ依存データベース、またはユーザーが直接呼び出さないバイナリ |
local |
サイトのローカルコマンド |
|
/var/mail ディレクトリへのシンボリックリンク |
man |
/usr/share/man ディレクトリへのシンボリックリンク |
net |
ネットワークリスナーサービス用のディレクトリ |
news |
/var/news ディレクトリへのシンボリックリンク |
oasys |
FMLI (Form and Menu Language Interpreter) 実行環境に関するファイル |
old |
段階的に使用されなくなっているプログラム |
openwin |
OpenWindows ソフトウェアのディレクトリまたはマウントポイント |
perl5 |
perl 5 のプログラムとマニュアル |
platform |
詳細は表 40-4 を参照 |
preserve |
/var/preserve ディレクトリへのシンボリックリンク |
proc |
proc ツール用のディレクトリ |
pub |
オンラインマニュアルページと文字処理用のファイル |
sadm |
システム管理に関連する各種ファイルとディレクトリ。 |
sbin |
システム管理用の実行可能プログラム |
sbin/static |
/usr/bin と /usr/sbin から選択したプログラムの静的リンクバージョン |
share |
アーキテクチャに依存しない共有可能ファイル |
share/lib |
アーキテクチャに依存しないデータベース |
share/src |
カーネル、ライブラリ、ユーティリティのソースコード |
snadm |
システム管理とネットワーク管理に関するプログラムとライブラリ |
spool |
/var/spool ディレクトリへのシンボリックリンク |
src |
/usr/share/src ディレクトリへのシンボリックリンク |
tmp |
/usr/var/tmp ディレクトリへのシンボリックリンク |
ucb |
UCB 互換パッケージのバイナリ |
ucbinclude |
UCB 互換パッケージのヘッダーファイル |
ucblib |
UCB 互換パッケージのライブラリ |
vmsys |
FACE (Framed Access Command Environment) プログラム用のディレクトリ |
xpg4 |
POSIX 準拠ユーティリティ用のディレクトリ |
表 40-4 に、/platform ディレクトリと /usr/platform ディレクトリに入っているすべてのプラットフォームに依存するオブジェクトを示します。
表 40-4 /platform と /usr/platform ディレクトリ
ディレクトリ |
説明 |
---|---|
/platform |
ルート (/) ファイルシステムに存在すべき一連のディレクトリが、サポートされるプラットフォームごとに入っている。 |
/platform/*/kernel |
プラットフォームに依存するカーネル構成要素が入っている。プラットフォームに依存するコアカーネルであるファイル unix も含む。kernel(1M) のマニュアルページを参照。 |
/usr/platform |
ルート (/) ファイルシステムに存在する必要がない、プラットフォームに依存するオブジェクトが入っている。削除された /usr/kvm の内容に置き換わるオブジェクトを含む。 |
/usr/platform/*/lib |
/usr/lib ディレクトリ中のオブジェクトに類似した、プラットフォームに依存するオブジェクトが入っている。 |
/platform/*/sbin |
/usr/sbin ディレクトリ中のオブジェクトに類似した、プラットフォームに依存するオブジェクトが入っている。 |
UFS ファイルシステムを作成すると、ディスクスライスは、1 つまたは複数の連続するディスクシリンダから構成される、シリンダグループに分割されます。シリンダグループはさらにアドレス指定可能なブロックに分割され、このブロックによって、シリンダグループ内のファイルの構造が編成され、制御されます。各種のブロックは、ファイルシステム内で特定の機能を持っています。UFS ファイルシステムには、次の 4 種類のブロックがあります。
ブロックの種類 |
説明 |
---|---|
ブートブロック |
システムのブート時に使用される情報 |
スーパーブロック |
ファイルシステムに関する大部分の情報 |
i ノード |
ファイルに関する名前以外のすべての情報 |
記憶域またはデータブロック |
各ファイルのデータ |
この節では、これらのブロックの編成と機能について説明します。
ブートブロックには、システムのブート時に使用されるプログラムが格納されます。ファイルシステムがブートに使用されなければ、ブートブロックは空白のままです。ブートブロックは最初のシリンダグループ (シリンダグループ 0) にのみ表示され、スライス内の最初の 8K バイトです。
スーパーブロックには、ファイルシステムに関する大部分の情報が格納されます。その中でも、特に次の情報が重要です。
ファイルシステムのサイズと状態
ラベル (ファイルシステム名とボリューム名)
ファイルシステムの論理ブロックのサイズ
最終更新日時
シリンダグループのサイズ
シリンダグループ内のデータブロック数
集計データブロック
ファイルシステムの状態: クリーン、安定、または有効
最後のマウントポイントのパス名
スーパーブロックは、ディスクスライスの先頭にあり、各シリンダグループ内で複製されます。スーパーブロックには重要なデータが入っているので、ファイルシステムの作成時には複数のスーパーブロックが作成されます。各スーパーブロックの複製は、シリンダグループの先頭からさまざまな大きさだけオフセットされます。複数プラッタを持つディスクドライブの場合、オフセットはスーパーブロックがドライブの各プラッタに表示されるように計算されます。つまり、最初のプラッタが失われても、いつでも代替スーパーブロックを取り出せます。最初のシリンダグループ内の先行ブロックを除き、オフセットによって作成される先行ブロックがデータの格納に使用されます。
集計情報ブロックは、スーパーブロックといっしょに保管されます。複製されませんが、通常はシリンダグループ 0 内で最初のスーパーブロックといっしょにグループ化されます。集計ブロックレコードには、ファイルシステムの使用時に発生した変化が記録され、ファイルシステム内の i ノード数、ディレクトリ数、フラグメント数、および記憶ブロック数が表示されます。
i ノードには、ファイルに関して名前以外のすべての情報が入っており、ディレクトリ内に保管されます。i ノードは 128 バイトです。i ノード情報はシリンダ情報ブロック内に保管され、次の情報が入っています。
ファイルのタイプ
通常ファイル
ディレクトリ
ブロック型特殊ファイル
キャラクタ型特殊ファイル
シンボリックリンク
FIFO (名前付きパイプとも呼ばれます)
ソケット
ファイルのモード (読み込み権-書き込み権-実行権のセット)
ファイルへのハードリンク数
ファイルの所有者のユーザー ID
ファイルが属するグループ ID
ファイル内のバイト数
15 個のディスクブロックアドレスの配列
ファイルの最終アクセス日時
ファイルの最終変更日時
ファイルの作成日時
15 個のディスクアドレス (0 から 14 まで) の配列は、ファイルの内容が格納されるデータブロックを指します。最初の 12 個は直接アドレスで、ファイルの内容のうち最初の 12 個の論理記憶ブロックを直接指します。ファイルが論理ブロック 12 個分より大きい場合は、13 番目のアドレスは間接ブロックを指します。間接ブロックには、ファイルの内容ではなく直接ブロックのアドレスが入っています。14 番目のアドレスは、二重間接ブロックを指します。二重間接ブロックには、間接ブロックのアドレスが入っています。15 番目のアドレスが必要な場合は、三重間接アドレスが格納されます。図 40-1 に、i ノードから始まるこのアドレスブロックチェーンを示します。
ファイルシステムに割り当てられた残りの領域には、データブロックが入っています。この種のブロックは、記憶ブロックと呼ばれることもあります。これらのデータブロックのサイズは、ファイルシステムの作成時に決定されます。デフォルトでは、データブロックは 2 つのサイズ、つまり 8K バイトの論理ブロックサイズと 1K バイトのフラグメントサイズで割り当てられます。
通常ファイルの場合、データブロックにはファイルの内容が入っています。ディレクトリの場合、データブロックにはディレクトリ内のファイルの i ノード番号とファイル名を示すエントリが入っています。
現在、i ノード、間接アドレスブロック、または記憶ブロックとして使用されていないブロックには、シリンダグループマップ内で空きを示すマークが付けられます。また、このマップはフラグメントを追跡し、ディスクのパフォーマンス低下を防止します。
UFS ファイルシステムの内容の概念を理解しやすいように、図 40-2 に、一般的な UFS システム内の一連のシリンダグループを示します。
newfs コマンドによって割り当てられるデフォルトのファイルシステムパラメータを変更しようとする前に、各パラメータについて理解しておく必要があります。この節では、次の各パラメータについて説明します。
ブロックサイズ
フラグメントサイズ
最小空き領域
回転の遅れ
最適化タイプ
i ノード数
論理ブロックサイズは、UNIX カーネルがファイルの読み書きに使用するブロックのサイズです。一般に、論理ブロックサイズは物理ブロックサイズ (通常は 512K バイト) とは異なります。物理ブロックサイズは、ディスクコントローラが読み書きできる最小ブロックのサイズです。
ファイルシステムの論理ブロックサイズを指定できます。ファイルシステムの作成後は、ファイルシステムを再構築しなければ、このパラメータを変更できません。論理ブロックサイズの異なるファイルシステムを、同じディスクに格納できます。
デフォルトでは、UFS ファイルシステムの論理ブロックサイズは 8192 バイト (8K バイト) です。UFS ファイルシステムでは、ブロックサイズとして 4096 バイトまたは 8192 バイト (4K または 8K バイト) がサポートされます。8K バイトは、論理ブロックの推奨サイズです。
sun4u プラットフォームで指定できるブロックサイズは 8192 バイトだけです。
システムに最善の論理ブロックサイズを選択するには、必要なパフォーマンスと使用可能容量を検討してください。ほとんどの UFS システムでは、8K バイトのファイルシステムが最高のパフォーマンスを発揮し、ディスクパフォーマンスと一次メモリーやディスク上の領域の使用量が適切なバランスに保たれます。
原則として、効率を高めるには、ほとんどのファイルがきわめて大きいファイルシステムには大きめの論理ブロックサイズを使用します。ほとんどのファイルがきわめて小さいファイルシステムには、小さめの論理ブロックサイズを使用します。ファイルシステム上で quot -c file-system コマンドを使用すると、ファイルの分散に関する詳細なレポートをブロックサイズ別に表示できます。
ファイルが作成または拡張されると、論理ブロック全体または「フラグメント」と呼ばれる部分のディスク容量が割り当てられます。ファイルのデータを保持するディスク容量が必要になると、まずブロック全体が割り当てられ、次に残りの部分にブロックのうち 1 つまたは複数のフラグメントが割り当てられます。小型ファイルの場合、割り当てはフラグメントから始まります。
ブロック全体ではなく、そのフラグメントを割り当てることができるので、ブロック内の未使用のホールによってディスク容量の「フラグメント」が低下し、容量の節約になります。
UFS ファイルシステムを作成するときに、「フラグメントサイズ」を定義します。デフォルトのフラグメントサイズは 1K バイトです。各ブロックは、1 個、2 個、4 個、または 8 個のフラグメントに分割できます。この場合、フラグメントサイズは 8192 バイトから 512K バイトまでです (4K バイトのファイルシステムのみ)。実際には、下限はディスクのセクターサイズ、通常は 512 バイトに連動します。
上限を、まったくフラグメントのない場合の完全ブロックのサイズに等しくすることができます。容量よりも速度を重視する場合、きわめて大型のファイルがあるファイルシステムには、この構成が最適なことがあります。
フラグメントサイズを選択するときには、処理時間と容量を取捨選択してください。フラグメントサイズが小さければ容量の節約になりますが、割り当てには時間がかかります。原則として、格納効率を高めるには、ほとんどのファイルが大型のファイルシステムには、大きめのフラグメントサイズを使用します。ほとんどのファイルが小型のファイルシステムには、小さめのフラグメントサイズを使用します。
「最小空き容量」とは、ファイルシステムの作成時に予約分として保持されるディスク容量です。デフォルトの予約分は、((64M バイト/パーティションサイズ) * 100) で算出し、その値を最も近い整数に切り捨てます。値は、ディスク容量の 1% から 10% の範囲に制限されます。ファイルシステム内の空き容量が少なくなるほど、アクセス速度が低下するので、空き容量は重要です。十分な空き容量があれば、UFS ファイルシステムは効率よく動作します。ファイルシステムがいっぱいになって、使用可能なユーザー領域を使い果たすと、スーパーユーザー以外は予約済みの空き容量にアクセスできなくなります。
df などのコマンドは、最小空き容量として割り当て済みの分を差し引いて、ユーザーに使用可能な容量をパーセントで表示します。コマンドでファイルシステム内のディスク容量の 100 パーセント以上が使用中であると表示される場合は、予約分の一部がルートに使用されています。
ユーザーに制限を適用する場合に、各ユーザーが使用可能な容量には予約分の空き容量は含まれません。tunefs コマンドを使用すると、既存のファイルシステムの最小空き容量の値を変更できます。
「回転の遅れ」は、CPU がデータ転送を完了し、同じディスクシリンダ上で次のデータ転送を開始するまでに予想される最小所要時間 (ミリ秒単位) です。デフォルトの遅れはゼロです。これは、最近のオンディスクキャッシュと併用すると、遅れに基づく計算が無効になるためです。
ファイルに書き込むときに、UFS 割り当てルーチンは新しいブロックを同じファイル内の直前のブロックと同じディスクシリンダ上に配置しようとします。また、新しいブロックをトラック内で最適の位置に配置して、そこへのアクセスに必要なディスクの回転を最小限度に抑えようとします。
ファイルブロックを「回転して適切に動作」するように配置するには、割り当てルーチンは CPU による転送処理速度と、ディスクが 1 ブロックをスキップする所要時間を認識しなければなりません。mkfs コマンドのオプションを使用すると、ディスクの回転速度と 1 トラック当たりのディスクブロック (セクター) 数を指定できます。割り当てルーチンは、この情報を使用して、1 ディスクブロックをスキップするミリ秒数を求めます。次に、割り当てルーチンは予想転送時間 (回転の遅れ) を使用して、システムの読み込み準備ができたときに次のブロックがディスクヘッドの真下にくるようにブロックを配置します。
回転の遅れ (newfs の -d オプション) を指定しなくてもよいデバイスがあります。
各ブロックは、システムが同じディスクの回転中に読み込める処理速度の場合にのみ、連続して配置されます。システムが低速であれば、ディスクはファイル内の次のブロックの先頭を通り過ぎてしまうので、そのブロックを読み込むには、もう 1 回転しなければならず、長時間かかります。次のディスク要求が発生するときに該当するブロックにヘッドがきているように、ギャップに適切な値を指定してください。
既存のファイルシステムの場合は、tunefs コマンドを使用してこのパラメータの値を変更できます。変更結果は、それ以後のブロック割り当てにのみ適用され、すでに割り当て済みのブロックには適用されません。
「最適化のタイプ」には、「領域」と「時間」があります。
領域 - 領域の最適化を選択すると、フラグメントを最小限度に抑え、ディスクの使用状況が最適化されるようにディスクブロックが割り当てられる。
時間 - 時間の最適化を選択すると、配置はあまり重視されず、できるだけ高速になるようにディスクブロックが割り当てられる。十分な空き領域があれば、それほど細かく分割しなくても、比較的簡単にディスクブロックを効率よく割り当てることができる。デフォルトは「時間」です。
既存のファイルシステムの場合は、tunefs コマンドを使用して最適化タイプのパラメータ値を変更できます。
i ノード数によって、ファイルシステム内で保持できるファイル数が決まります。ファイルごとに i ノードが 1 つあります。 i ノード 1 個あたりのバイト数によって、ファイルシステムの作成時に作成される合計 i ノード数が決まります。これは、ファイルシステムの合計サイズを、i ノード 1 個あたりのバイト数で割った値です。i ノードが割り当てられたら、ファイルシステムを作成し直さないかぎり、その数は変更できません。
i ノード 1 個あたりのデフォルトのバイト数は 2048 バイト (2K バイト) で、これは各ファイルの平均サイズが 2K バイト以上であることを想定しています。ファイルシステムが 1G バイトを超える場合、次の公式が使用されます。
ファイルシステムのサイズ |
i ノードごとのバイト数 |
---|---|
1G バイト以下 |
2048 |
2G バイト未満 |
4096 |
3G バイト未満 |
6144 |
3G バイト以上 |
8192 |
多数のシンボリックリンクを持つファイルシステムでは、平均ファイルサイズを小さくすることができます。ファイルシステムに多数の小型ファイルが格納される場合は、このパラメータに小さい値を与えてもかまいません。ただし、i ノード数が少ないために i ノードが不足するよりも、多すぎる方が好ましいことを留意してください。i ノード数が少なすぎると、実際には空のディスクスライス上でも最大ファイル数に達してしまうことがあります。
この節では、カスタマイズされたファイルシステムの作成に使用する 2 つのコマンドについて説明します。
newfs
mkfs
newfs コマンドは、ファイルシステムの作成に使用する mkfs コマンドの簡便バージョンです。newfs コマンドは、/usr/sbin ディレクトリに入っています。
構文は次のとおりです。
newfs [-Nv] [mkfs_options] raw_device |
表 40-5 に、newfs コマンドのオプションと引数を示します。
表 40-5 newfs コマンドのオプションと引数
オプション |
説明 |
---|---|
N |
ファイルシステムの作成に使用されるファイルシステムパラメータが表示されるが、実際には作成されない。このオプションでは、既存のファイルシステムの作成に使用されたパラメータは表示されない。 |
-v |
mkfs コマンドに渡されるパラメータが表示される。 |
mkfs-options |
後続のオプションを使用して、mkfs コマンドに渡されるパラメータが設定される。次のオプションは、mkfs に渡される順番に記述されている。各オプションは、空白で区切る。 |
-s size |
ファイルシステムのセクター数。デフォルトは、ディスクラベルから自動的に判別される。 |
-t ntrack |
ディスク上の 1 シリンダあたりのトラック数。デフォルトはディスクラベルから判別される。 |
-b bsize |
データ転送に使用される論理ブロックのバイト数。サイズとして 4096 または 8192 バイト (4K または 8K バイト) を指定する。デフォルトは 8192 バイト (8K バイト)。 |
-f fragsize |
ファイルに割り当てられるディスク容量の最小バイト数。フラグメントサイズを、512 バイトから 8192 バイトまでの 2 の乗数単位で指定する。デフォルトは 1024 バイト (1K バイト)。 |
-c cgsize |
1 シリンダグループあたりのディスクシリンダ数。デフォルト値を計算するには、ファイルシステム内のセクター数を 1G バイト内のセクター数で割り、その結果に 32 を掛ける。デフォルト値の範囲は 16 から 256 まで。 |
-m free |
空きディスク領域の最小許容率。デフォルトの予約分は、((64M バイト/パーティションサイズ) * 100) で算出した値を最も近い整数に切り捨てます。値は、ディスク容量の 1% から 10% の範囲に制限されます。 |
-r rpm |
1 分当たりのディスクの回転数。この設定はドライバまたはデバイスに固有である。ドライブが回転数を報告できる場合、mkfs は報告された値を使用する。そうでない場合、デフォルトは 3600。このパラメータは、mkfs に渡される前に 1 秒当たりの回転数に変換される。 |
-i nbpi |
作成できる i ノードの計算に使用される i ノード 1 個当たりのバイト数。デフォルト値については、上記の節を参照。 |
-o opt |
ディスクブロックをファイルに割り当てるときに使用される最適化のタイプ。opt には time または space を指定する。 デフォルトは time です。 |
-a apc |
不良ブロックを配置するために予約される 1 ディスクシリンダ (SCSI デバイスのみ) の代替ブロック数。デフォルトは 0。 |
-d gap |
(回転の遅れ) CPU がデータ転送を完了し、同じディスクシリンダ上で次のデータ転送を開始するまでに予想される最小ミリ秒数。デフォルトは 0。 |
-d nrpos |
シリンダグループを分割するさまざまな回転位置の数。デフォルトは 8。 |
-C maxcontig |
あるファイルに属し、回転の遅れが挿入される前に連続して割り当てられる最大ブロック数。デフォルトはドライブごとに異なる。内部 (トラック) バッファーを持たないドライブ (または、内部バッファーが存在することを示していないドライブ/コントローラ) の場合は、デフォルトは 1 で、バッファーを持つドライブの場合はデフォルトは 7。 このパラメータは、次のようにする必要がある。 blocksize x maxcontig <= maxphys maxphys は、入出力サブシステムが満たせる最大ブロック転送サイズ (バイト数) を指定する読み込み専用のカーネル変数である (この制限は、newfs や mkfs ではなく mount によって適用される)。 また、このパラメータはクラスタ化も制御する。rotdelay の値に関係なく、maxcontig が 1 より大きいときのみクラスタ化できる。クラスタ化すると、入出力が高速になる。詳細は、tunefs(1M) のマニュアルページを参照。 |
raw_device |
ファイルシステムを入れるパーティションの特殊文字 (raw) デバイスファイル名。この引数は必須。 |
次の newfs の例では、-N オプションを使用して、バックアップスーパーブロックなど、ファイルシステム情報を表示します。
# newfs -N /dev/rdsk/c0t0d0s0 /dev/rdsk/c0t0d0s0: 37260 sectors in 115 cylinders of 9 tracks, 36 sectors 19.1MB in 8 cyl groups (16 c/g, 2.65MB/g, 1216 i/g) superblock backups (for fsck -b #) at: 32, 5264, 10496, 15728, 20960, 26192, 31424, 36656, # |
汎用 mkfs コマンドは、ファイルシステム専用の mkfs を呼び出して、指定したディスクスライス上で指定したタイプのファイルシステムを作成させます。mkfs では各種のファイルシステムがサポートされますが、実際には UFS ファイルシステムの作成に使用します。他のタイプのファイルシステムを作成するには、ファイルシステム専用の mkfs コマンドを使用できるようにソフトウェアを作成する必要があります。通常は、mkfs を直接実行せずに、newfs コマンドで呼び出します。
汎用 mkfs コマンドは、/usr/sbin にあります。引数とオプションについては、mkfs(1M) のマニュアルページを参照してください。
直接入出力の目的は、大容量入出力処理のスピードを速くすることです。大容量入出力処理では、大規模ファイル (256K バイトを超える) を転送するために、大容量のバッファーサイズを使用します。
大容量入出力処理の例としては、大量のデータがファイルに書き込まれる衛星データのダウンロードなどがあります。直接入出力では、オペレーティングシステムのページキャッシュ機構のオーバーヘッドは使用されず、データの書き込みと読み取りが直接メモリーとで行われます。
直接入出力の起動には潜在的な欠点があります。入出力を要求したファイルがすでに別のアプリケーションによってマップされていた場合、そのページがメモリーからフラッシュされるまで直接入出力処理を開始できません。
詳細は、directio(3C) のマニュアルページを参照してください。
mount コマンドに forcedirectio オプションを使用しても、直接入出力をファイルシステムで有効にできます。直接入出力を有効にしてパフォーマンスが向上するのは、ファイルシステムが大量の連続するデータを転送するときだけです。
forcedirectio オプションでファイルシステムをマウントするとき、データはユーザーのアドレス空間とディスクの間で直接伝送されます。直接入出力がファイルシステムで無効な場合、ユーザーのアドレス空間とディスクの間で転送されるデータは、まず、カーネルアドレス空間にバッファーされます。
デフォルトでは、UFS ファイルシステムでは直接入出力は行われません。詳細は、mount_ufs(1M) のマニュアルページを参照してください。