この章の内容は次のとおりです。
Solaris 2.5 から、プラットフォームに依存するカーネルモジュールとコマンドは新しい場所に移動されました。/kernel ディレクトリには、プラットフォームに依存しないオブジェクト (プラットフォームに依存しないカーネル genunix も含む) だけが入っています。プラットフォームに依存するディレクトリ /platform と /usr/platform については、表 32-4 を参照してください。
表 32-1 および表 32-2 に、ルート (/) のデフォルトファイルシステム中のディレクトリを示します。表 32-3 に、/usr のデフォルトファイルシステム中のディレクトリを示します。
表 32-1 ルート (/) ファイルシステムのデフォルトディレクトリ (その 1)| 
 ディレクトリ  | 
 説明  | 
|---|---|
| 
 /  | 
 ファイルシステムの名前空間全体のルート  | 
| 
 /dev  | 
 特殊ファイルの一次位置  | 
| 
 /dev/dsk  | 
 ブロックディスクデバイス  | 
| 
 /dev/pts  | 
 pty スレーブデバイス  | 
| 
 /dev/rdsk  | 
 raw ディスクデバイス  | 
| 
 /dev/rmt  | 
 raw テープデバイス  | 
| 
 /dev/sad  | 
 STREAMS Administrative Driver のエントリポイント  | 
| 
 /dev/term  | 
 端末デバイス  | 
| 
 /etc  | 
 ホスト固有のシステム管理構成ファイルとデータベース  | 
| 
 /etc/acct  | 
 アカウンティングシステムの構成情報  | 
| 
 /etc/cron.d  | 
 cron の構成情報  | 
| 
 /etc/default  | 
 各種プログラムのデフォルト情報  | 
| 
 /etc/dfs  | 
 エクスポートされるファイルシステムの構成情報  | 
| 
 /etc/fs  | 
 /usr をマウントする前に必要な処理のためにファイルシステムタイプ別に編成されたバイナリ  | 
| 
 /etc/inet  | 
 インターネットサービスの構成ファイル  | 
| 
 /etc/init.d  | 
 実行レベルを切り替えるためのスクリプト  | 
| 
 /etc/lp  | 
 プリンタサブシステムの構成情報  | 
| 
 /etc/mail  | 
 メールサブシステムの構成  | 
| 
 /etc/net  | 
 TI (トランスポート独立) ネットワークサービスの構成情報  | 
| 
 /etc/opt  | 
 オプションパッケージの構成情報  | 
| 
 /etc/rc0.d  | 
 実行レベル 0 を開始/停止した時に起動されるスクリプト  | 
| 
 /etc/rc1.d  | 
 実行レベル 1 を開始/停止した時に起動されるスクリプト  | 
| 
 /etc/rc2.d  | 
 実行レベル 2 を開始/停止した時に起動されるスクリプト  | 
| 
 /etc/rc3.d  | 
 実行レベル 3 を開始/停止した時に起動されるスクリプト  | 
| 
 /etc/rcS.d  | 
 システムを単一ユーザーモードで起動するスクリプト  | 
| 
 /etc/saf  | 
 サービスアクセス機能ファイル (FIFO など)  | 
| 
 /etc/skel  | 
 新規ユーザーアカウントのデフォルトプロファイルスクリプト  | 
| 
 /etc/sm  | 
 状態モニター情報  | 
| 
 /etc/sm.bak  | 
 状態モニター情報のバックアップコピー  | 
| 
 /etc/tm  | 
 商標ファイル。内容はブート時に表示  | 
| 
 /etc/uucp  | 
 uucp 構成情報  | 
| 
 /export  | 
 エクスポートされるファイルシステムツリーのデフォルトのルート  | 
| 
 /home  | 
 ユーザー命令用のサブツリーのデフォルトのルート  | 
| 
 /kernel  | 
 ブートプロセスの一部として必要なプラットフォーム独立型のロード可能カーネルモジュールのサブツリー。プラットフォーム独立型のコアカーネル /kernel/genunix の汎用部分が含まれる。/platform と /usr/platform ディレクトリ構造については、表 32-4 を参照  | 
表 32-2 ルート (/) ファイルシステムのデフォルトディレクトリ (その 2)
| 
 ディレクトリ  | 
 説明  | 
|---|---|
| 
 /mnt  | 
 ファイルシステムの一般的な一次マウントポイント  | 
| 
 /opt  | 
 追加アプリケーションパッケージ用のサブツリーのルート  | 
| 
 /opt/SUNWspro  | 
 バンドルされていない言語製品のマウント/インストールポイント  | 
| 
 /sbin  | 
 ブートプロセスと手作業によるシステム障害の回復に使用される重要な実行可能プログラム  | 
| 
 /stand  | 
 スタンドアロンプログラム  | 
| 
 /tmp  | 
 一次ファイル。ブートシーケンス中に消去される  | 
| 
 /usr  | 
 /usr ファイルシステムのマウントポイント  | 
| 
 /var  | 
 各種ファイルのサブツリーのルート  | 
| 
 /var/adm  | 
 システムのログファイルとアカウンティングファイル  | 
| 
 /var/crash  | 
 カーネルクラッシュダンプのデフォルトの格納場所  | 
| 
 /var/cron  | 
 cron のログファイル  | 
| 
 /var/lp  | 
 ラインプリンタサブシステムのログ情報  | 
| 
 /var/mail  | 
 ユーザーのメールが保管されるディレクトリ  | 
| 
 /var/news  | 
 コミュニティサービスメッセージ (注: USENET 方式のニュースとは異なる)  | 
| 
 /var/nis  | 
 NIS+ データベース  | 
| 
 /var/opt  | 
 ソフトウェアパッケージ関連の各種ファイルのサブツリーのルート  | 
| 
 /var/preserve  | 
 vi と ex のバックアップファイル  | 
| 
 /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/tmp  | 
 一時ファイルのディレクトリ。ブートシーケンス中には消去されない  | 
| 
 /var/uucp  | 
 uucp のログファイルと状態ファイル  | 
| 
 /var/yp  | 
 NIS データベース (NIS との下位互換性を保つため。NIS+ への移行が完了した後は不要)  | 
表 32-3 /usr ファイルシステムのデフォルトディレクトリ
| 
 ディレクトリ  | 
 説明  | 
|---|---|
| 
 bin  | 
 標準システムコマンドの位置  | 
| 
 demo  | 
 デモプログラムとデータ  | 
| 
 games  | 
 空のディレクトリ。SunOS 4.0/4.1 ソフトウェアで使用されていた  | 
| 
 include  | 
 ヘッダファイル (C プログラム用など)  | 
| 
 kernel  | 
 その他モジュール  | 
| 
 kvm  | 
 実装されたアーキテクチャ固有のバイナリとライブラリ  | 
| 
 lib  | 
 各種プログラムのライブラリ、アーキテクチャ依存データベース、またはユーザーが直接呼び出さないバイナリ  | 
| 
 lib/acct  | 
 アカウンティングスクリプトとバイナリ  | 
| 
 lib/class  | 
 スケジュールクラス固有のディレクトリ。priocntl コマンドと dispadmin コマンドの実行可能プログラムが入っている  | 
| 
 lib/font  | 
 troff フォント記述ファイル  | 
| 
 lib/fs  | 
 ファイルシステムタイプ依存モジュール。ユーザーは直接呼び出さない  | 
| 
 lib/iconv  | 
 iconv(1) の変換テーブル  | 
| 
 lib/libp  | 
 プロファイルライブラリ  | 
| 
 lib/locale  | 
 各国対応のローカライズデータベース  | 
| 
 lib/lp  | 
 ラインプリンタサブシステムのデータベースとバックエンドの実行可能プログラム  | 
| 
 lib/mail  | 
 mail サブシステムの補助プログラム  | 
| 
 lib/netsvc  | 
 インターネットネットワークサービス  | 
| 
 lib/nfs  | 
 NFS 関連の補助プログラムとデーモン  | 
| 
 lib/pics  | 
 実行時リンカの構築に必要な PIC アーカイブ  | 
| 
 lib/refer  | 
 参照関連の補助プログラム  | 
| 
 lib/sa  | 
 システム活動レポートパッケージ用のスクリプトとコマンド  | 
| 
 lib/saf  | 
 サービスアクセス機能に関連する補助プログラムとデーモン  | 
| 
 lib/sparcv9  | 
 64 ビット Solaris ライブラリ  | 
| 
 lib/uucp  | 
 uucp 関連の補助プログラムとデーモン  | 
| 
 lib/zoneinfo  | 
 時間帯情報  | 
| 
 local  | 
 サイトのローカルコマンド  | 
| 
 old  | 
 段階的に使用されなくなっているプログラム  | 
| 
 openwin  | 
 OpenWindows ソフトウェアのマウント/インストールポイント  | 
| 
 sadm  | 
 システム管理に関連する各種ファイルとディレクトリ。以下の各サブディレクトリを参照  | 
| 
 sadm/bin  | 
 FMLI スクリプトに使用する「valtools」境界  | 
| 
 sadm/install  | 
 pkg 管理用の実行プログラムとスクリプト  | 
| 
 sbin  | 
 システム管理用の実行可能プログラム  | 
| 
 sbin/static  | 
 /usr/bin と /usr/sbin から選択したプログラムの静的リンクバージョン  | 
| 
 share  | 
 アーキテクチャに依存しない共有可能ファイル  | 
| 
 share/lib  | 
 アーキテクチャに依存しないデータベース  | 
| 
 share/lib/keytables  | 
 キーボード配置記述ファイル  | 
| 
 share/lib/mailx  | 
 mailx 関連のヘルプファイル  | 
| 
 share/lib/nterm  | 
 nroff 端末テーブル  | 
| 
 share/lib/pub  | 
 各種データファイル  | 
| 
 share/lib/spell  | 
 spell 関連の補助データベースとスクリプト  | 
| 
 share/lib/tabset  | 
 タブ設定のエスケープシーケンス  | 
| 
 share/lib/terminfo  | 
 terminfo スタイルの端末記述ファイル  | 
| 
 share/lib/tmac  | 
 [nt]roff マクロパッケージ  | 
| 
 share/src  | 
 カーネル、ライブラリ、ユーティリティのソースコード  | 
| 
 ucb  | 
 UCB 互換パッケージのバイナリ  | 
| 
 ucbinclude  | 
 UCB 互換パッケージのヘッダファイル  | 
| 
 ucblib  | 
 UCB 互換パッケージのライブラリ  | 
表 32-4 に、/platform ディレクトリと /usr/platform ディレクトリに入っているすべてのプラットフォームに依存するオブジェクトを示します。
表 32-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 番目のアドレスが必要な場合は、三重間接アドレスが格納されます。図 32-1 は、i ノードから始まって、このアドレスブロックチェーンを示しています。

ファイルシステムに割り当てられた残りの領域には、データブロックが入っています。この種のブロックは、記憶ブロックと呼ばれることもあります。これらのデータブロックのサイズは、ファイルシステムの作成時に決定されます。デフォルトでは、データブロックは 2 つのサイズ、つまり 8K バイトの論理ブロックサイズと 1K バイトのフラグメントサイズで割り当てられます。
通常ファイルの場合、データブロックにはファイルの内容が入っています。ディレクトリの場合、データブロックにはディレクトリ内のファイルの i ノード番号とファイル名を示すエントリが入っています。
現在、i ノード、間接アドレスブロック、または記憶ブロックとして使用されていないブロックには、シリンダグループマップ内で空きを示すマークが付けられます。また、このマップはフラグメントを追跡し、ディスク性能の低下を防止します。
UFS ファイルシステムの内容の概念を理解しやすいように、図 32-2 に一般的な UFS システム内の一連のシリンダグループを示しています。

newfs コマンドによって割り当てられるデフォルトのファイルシステムパラメータを変更しようとする前に、各パラメータについて理解しておく必要があります。この節では、次の各パラメータについて説明します。
ブロックサイズ
フラグメントサイズ
最小空き領域
回転の遅れ
最適化タイプ
i ノード数
論理ブロックサイズは、UNIX カーネルがファイルの読み書きに使用するブロックのサイズです。一般に、論理ブロックサイズは物理ブロックサイズ (通常は 512K バイト) とは異なります。物理ブロックサイズは、ディスクコントローラが読み書きできる最小ブロックのサイズです。
ファイルシステムの論理ブロックサイズを指定できます。ファイルシステムの作成後は、ファイルシステムを再構築しなければ、このパラメータを変更できません。論理ブロックサイズの異なるファイルシステムを、同じディスクに格納できます。
デフォルトでは、UFS ファイルシステムの論理ブロックサイズは 8192 バイト (8K バイト) です。UFS ファイルシステムでは、ブロックサイズとして 4096 バイトまたは 8192 バイト (4K または 8K バイト) がサポートされます。8K バイトは、論理ブロックの推奨サイズです。
システムに最善の論理ブロックサイズを選択するには、必要な性能と使用可能容量を検討してください。ほとんどの 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 バイト以上であることを想定しています。ほとんどのファイルは、2K バイトを超えています。多数のシンボリックリンクを持つファイルシステムでは、平均ファイルサイズを小さくすることができます。ファイルシステムに多数の小型ファイルが格納される場合は、このパラメータに小さい値を与えてもかまいません。ただし、i ノード数が少ないために i ノードが不足するよりも、多すぎる方が好ましいことを留意してください。i ノード数が少なすぎると、実際には空のディスクスライス上でも最大ファイル数に達してしまうことがあります。
この節では、カスタマイズされたファイルシステムの作成に使用する 2 つのコマンドについて説明します。
newfs
mkfs
newfs コマンドは、ファイルシステムの作成に使用する mkfs コマンドの簡便バージョンです。newfs コマンドは、/usr/sbin ディレクトリに入っています。
構文は次のとおりです。
newfs [-Nv] [mkfs_options] raw_device  | 
表 32-5 に、newfs コマンドのオプションと引数を示します。
表 32-5 newfs コマンドのオプションと引数| 
 オプション  | 
 説明  | 
|---|---|
| 
 N  | 
 ファイルシステムの作成に使用されるファイルシステムパラメータが表示されるが、実際には作成されない。このオプションでは、既存のファイルシステムの作成に使用されたパラメータは表示されない。  | 
| 
 -v  | 
 mkfs コマンドに渡されるパラメータが表示され、-N オプションを指定しなければファイルシステムが作成される。  | 
| 
 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 シリンダグループあたりのディスクシリンダ数。この数値は 1 から 32 までの範囲内でなければならない。デフォルトは 16。  | 
| 
 -m free  | 
 空きディスク領域の最小許容率。デフォルトの予約分は、((64M バイト/パーティションサイズ) * 100) で算出した値を最も近い整数に切り捨てます。値は、ディスク容量の 1% から 10% の範囲に制限されます。  | 
| 
 -r rpm  | 
 1 分当たりのディスクの回転速度。デフォルトは 3600 である。このパラメータは、mkfs に渡される前に 1 秒当たりの回転数に変換される。  | 
| 
 -i nbpi  | 
 作成できる i ノードの計算に使用される i ノード 1 個当たりのバイト数。デフォルトは 2048。  | 
| 
 -o opt  | 
 ディスクブロックをファイルに割り当てるときに使用される最適化のタイプ。opt には time または space を指定する。 デフォルトは time です。  | 
| 
 -a apc  | 
 不良ブロックを配置するために予約される 1 ディスクシリンダ (SCSI デバイスのみ) の代替ブロック数。デフォルトは 0。  | 
| 
 -d gap  | 
 (回転の遅れ) CPU がデータ転送を完了し、同じディスクシリンダ上で次のデータ転送を開始するまでに予想される最小ミリ秒数。デフォルトは 4。  | 
| 
 -d nrpos  | 
 シリンダグループを分割するさまざまな回転位置の数。デフォルトは 8。  | 
| 
 -C maxcontig  | 
 あるファイルに属し、回転の遅れが挿入される前に連続して割り当てられる最大ブロック数。デフォルトはドライブごとに異なる。内部 (トラック) バッファを持たないドライブ (または、内部バッファの存在をうたっていないドライブ/コントローラ) の場合は、デフォルトは 1 で、バッファを持つドライブの場合はデフォルトは 7。 このパラメータには、 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 コマンドのすべての引数を示しています。

汎用 mkfs コマンドは、/usr/sbin にあります。引数とオプションについては、mkfs(1M) のマニュアルページを参照してください。