Solaris のシステム管理 (デバイスとファイルシステム)

第15章 ファイルシステムの管理 (概要)

ファイルシステムの管理は、もっとも重要なシステム管理作業の 1 つです。

この章の内容は次のとおりです。

Solaris 9 Update リリースの新しいファイルシステム機能

この節では、この Solaris リリースの新しいファイルシステム機能について説明します。

デフォルトで有効な UFS ロギング

Solaris 9 9/04 ロギングは、すべての UFS ファイルシステムでデフォルトで有効になります。ただし、次の場合は除きます。

以前の Solaris リリースでは、UFS ロギングは手動で有効にする必要がありました。UFS ロギングの詳細については、「UFS ロギング」を参照してください。

このリリースで UFS ロギングを使用する際には、次の点に注意してください。

デフォルトのロギングと標準への準拠

ファイルからブロックを解放する UFS ファイルシステムトランザクションが実行されても、それらの解放されたブロックがファイルシステムの解放リストに即座に追加されない可能性があります。この動作は、ロギングを有効にしてマウントされた UFS ファイルシステムシステム上で発生します。

このような動作は、ファイルシステムのパフォーマンスの向上につながりますが、次の標準に準拠した動作ではありません。

これらの標準に準拠するには、解放された領域が即座に利用可能になる必要があります。

次のような場合は、UFS ロギングを無効にすることを検討してください。

詳細については、mount_ufs(1M) のマニュアルページを参照してください。

SPARC: マルチテラバイトの UFS ファイルシステムのサポート

Solaris 9 8/03 この Solaris リリースでは、64 ビットの Solaris カーネルを実行しているシステムで、マルチテラバイトの UFS ファイルシステムをサポートします。

以前は、64 ビットと 32 ビットのどちらのシステムでも、UFS ファイルシステムはおよそ 1T バイトに制限されていました。UFS ファイルシステムのコマンドとユーティリティはすべて、マルチテラバイトの UFS ファイルシステムに対応するように更新されました。

たとえば、ufsdump コマンドは大規模な UFS ファイルシステムをダンプできるようにブロックサイズが大きくなりました。


# ufsdump 0f /dev/md/rdsk/d97 /dev/md/rdsk/d98
  DUMP: Date of this level 0 dump: Tue Jan 07 14:23:36 2003
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/md/rdsk/d98 to /dev/md/rdsk/d97.
  DUMP: Mapping (Pass I) [regular files]
  DUMP: Mapping (Pass II) [directories]
  DUMP: Forcing larger tape block size (2048).
  DUMP: Writing 32 Kilobyte records
  DUMP: Estimated 4390629500 blocks (2143862.06MB).
  DUMP: Dumping (Pass III) [directories]
  DUMP: Dumping (Pass IV) [regular files]

1T バイト未満の UFS ファイルシステムは、以前と同じように管理されます。1T バイト未満の UFS ファイルシステムと 1T バイトを超えるファイルシステムとの間に管理面での違いはありません。

最初に newfs -T オプションを使用していれば、1T バイト未満の UFS ファイルシステムを作成し、最終的にマルチテラバイトのファイルシステムに拡張されるように指定できます。このオプションを使用すると、マルチテラバイトのファイルシステムに適した値に拡張が可能であるように i ノードとフラグメントの密度が設定されます。

32 ビットのカーネルを実行しているシステムで 1T バイト未満の UFS ファイルシステムを作成するときに、newfs -T オプションを使用すると、最終的に 64 ビットのカーネルでこのシステムを起動するときに、growfs コマンドを使ってこのファイルシステムを拡張できます。詳細については、newfs(1M) のマニュアルページを参照してください。

growfs コマンドを使用すると、サービスやデータを失わずに、UFS ファイルシステムをスライスまたはボリュームのサイズまで拡張できます。詳細については、growfs(1M) のマニュアルページを参照してください。

これに関連して、EFI ディスクラベルによるマルチテラバイトボリュームのサポートと、Solaris ボリュームマネージャによるマルチテラバイトボリュームのサポートという新しい 2 つの機能が追加されました。詳細については、「SPARC: EFI ディスクラベルによるマルチテラバイトディスクのサポート」および『Solaris ボリュームマネージャの管理』を参照してください。

マルチテラバイトの UFS ファイルシステムの機能

マルチテラバイトの UFS ファイルシステムには、次の機能があります。

マルチテラバイトの UFS ファイルシステムの制限事項

マルチテラバイトの UFS ファイルシステムには、次の制限事項があります。

Procedureマルチテラバイトの UFS ファイルシステムを作成する方法

マルチテラバイトの UFS ファイルシステムは、Solaris ボリュームマネージャまたは VxVM ボリューム、あるいは 1T バイトを超える物理ディスクとして提供されたマルチテラバイトの LUN が利用できることを前提にサポートされています。

マルチテラバイトの UFS ファイルシステムを作成する前に、次のいずれかを行う必要があります。

手順
  1. スーパーユーザーになります。

  2. 論理ボリューム上にマルチテラバイトの UFS ファイルシステムを作成します。

    たとえば、次のコマンドを実行すると、1.8T バイトボリュームの UFS ファイルシステムが作成されます。


    # newfs /dev/md/rdsk/d99
    newfs: construct a new file system /dev/md/rdsk/d99: (y/n)? y
    /dev/md/rdsk/d99:    3859402752 sectors in 628158 cylinders of 48 tracks, 
    128 sectors
            1884474.0MB in 4393 cyl groups (143 c/g, 429.00MB/g, 448 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
    32, 878752, 1757472, 2636192, 3514912, 4393632, 5272352, 6151072, 702...
    Initializing cylinder groups:
    ........................................................................
    super-block backups for last 10 cylinder groups at:
     3850872736, 3851751456, 3852630176, 3853508896, 3854387616, 3855266336,
     3856145056, 3857023776, 3857902496, 3858781216,
    # 
  3. 新しく作成したファイルシステムの整合性を検査します。

    次に例を示します。


    # fsck /dev/md/rdsk/d99
    ** /dev/md/rdsk/d99
    ** Last Mounted on 
    ** Phase 1 - Check Blocks and Sizes
    ** Phase 2 - Check Pathnames
    ** Phase 3 - Check Connectivity
    ** Phase 4 - Check Reference Counts
    ** Phase 5 - Check Cyl groups
    2 files, 2 used, 241173122 free (0 frags, 241173122 blocks, 0.0% 
    fragmentation)
    # 
  4. 新しく作成したファイルシステムをマウントして検査します。

    次に例を示します。


    # mount /dev/md/dsk/d99 /bigdir
    # df -h /bigdir
    Filesystem             size   used  avail capacity  Mounted on
    /dev/md/dsk/d99        1.8T    64M   1.8T     1%    /bigdir

Procedureマルチテラバイトの UFS ファイルシステムを拡張する方法

マルチテラバイトの UFS ファイルシステムを作成した後は、growfs コマンドを使ってファイルシステムを拡張できます。たとえば、前の手順でボリュームに作成したファイルシステムを使用すると、別のディスクをこのボリュームに追加できます。その後で、ファイルシステムを拡張します。

手順
  1. スーパーユーザーになります。

  2. 別のディスクをボリュームに追加します。

    次に例を示します。


    # metattach d99 c4t5d0s4
    d99: component is attached
    # metastat
    d99: Concat/Stripe
        Size: 5145882624 blocks (2.4 TB)
        Stripe 0:
            Device     Start Block  Dbase   Reloc
            c0t1d0s4      36864     Yes     Yes
        Stripe 1:
            Device     Start Block  Dbase   Reloc
            c3t7d0s4          0     No      Yes
        Stripe 2:
            Device     Start Block  Dbase   Reloc
            c1t1d0s4          0     No      Yes
        Stripe 3:
            Device     Start Block  Dbase   Reloc
            c4t5d0s4          0     No      Yes
  3. ファイルシステムを拡張します。

    次に例を示します。


    # growfs -v /dev/md/rdsk/d99
    /usr/lib/fs/ufs/mkfs -G /dev/md/rdsk/d99 5145882624
    /dev/md/rdsk/d99:    5145882624 sectors in 837546 cylinders of 48 tracks, 
    128 sectors
            2512638.0MB in 5857 cyl groups (143 c/g, 429.00MB/g, 448 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
     32, 878752, 1757472, 2636192, 3514912, 4393632, 5272352, 6151072, 702...
    Initializing cylinder groups:
    .........................................................................
    super-block backups for last 10 cylinder groups at:
     5137130400, 5138009120, 5138887840, 5139766560, 5140645280, 5141524000,
     5142402720, 5143281440, 5144160160, 5145038880,
    # 
  4. 拡張したファイルシステムをマウントして検査します。

    次に例を示します。


    # mount /dev/md/dsk/d99 /bigdir
    # df -h /bigdir 
    Filesystem             size   used  avail capacity  Mounted on 
    /dev/md/dsk/d99        2.4T    64M   2.4T     1%    /bigdir

ProcedureUFS ファイルシステムをマルチテラバイトの UFS ファイルシステムに拡張する方法

UFS ファイルシステムを 1T バイトを超えるサイズに拡張するには、次の手順を実行します。この手順は、newfs -T オプションを使って UFS ファイルシステムを作成したことを前提としています。

手順
  1. スーパーユーザーになります。

  2. 現在のディスクまたはボリュームのサイズを特定します。

    たとえば、次のボリュームは 800G バイトです。


    # metastat d98
    d98: Concat/Stripe
        Size: 1677754368 blocks (800 GB)
        Stripe 0:
            Device     Start Block  Dbase   Reloc
            c0t1d0s4          0     No      Yes
        Stripe 1:
            Device     Start Block  Dbase   Reloc
            c3t7d0s4          0     No      Yes
  3. このボリュームを 1T バイトよりも大きくします。

    次に例を示します。


    # metattach d98 c1t1d0s4
    d98: component is attached
    # metastat d98
    d98: Concat/Stripe
        Size: 2516631552 blocks (1.2 TB)
        Stripe 0:
            Device     Start Block  Dbase   Reloc
            c0t1d0s4          0     No      Yes
        Stripe 1:
            Device     Start Block  Dbase   Reloc
            c3t7d0s4          0     No      Yes
        Stripe 2:
            Device     Start Block  Dbase   Reloc
            c1t1d0s4          0     No      Yes
  4. ディスクまたはボリュームの UFS ファイルシステムを 1T バイトよりも大きくします。

    次に例を示します。


    growfs -v /dev/md/rdsk/d98
    /usr/lib/fs/ufs/mkfs -G /dev/md/rdsk/d98 2516631552
    /dev/md/rdsk/d98:    2516631552 sectors in 68268 cylinders of 144 tracks, 
    256 sectors
            1228824.0MB in 2731 cyl groups (25 c/g, 450.00MB/g, 448 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
     32, 921888, 1843744, 2765600, 3687456, 4609312, 5531168, 6453024, 737...
     8296736,
    Initializing cylinder groups:
    ......................................................
    super-block backups for last 10 cylinder groups at:
     2507714848, 2508636704, 2509558560, 2510480416, 2511402272, 2512324128,
     2513245984, 2514167840, 2515089696, 2516011552,
  5. 拡張したファイルシステムをマウントして検査します。

    次に例を示します。


    # mount /dev/md/dsk/d98 /datadir
    # df -h /datadir 
    Filesystem             size   used  avail capacity  Mounted on 
    /dev/md/dsk/d98        1.2T    64M   1.2T     1%    /datadir

マルチテラバイトの UFS ファイルシステムに関する問題の障害追跡

マルチテラバイトの UFS ファイルシステムに関する問題の障害追跡には、次のエラーメッセージと解決法を参考にしてください。

エラーメッセージ (次に例を示す)

mount: /dev/rdsk/c0t0d0s0 はこのファイルシステム形式ではありません。
原因

Solaris 9 8/03 リリースよりも以前のリリースが動作するシステムに 1T バイトを超える UFS ファイルシステムをマウントしようとしました。

解決法

1T バイトを超える UFS ファイルシステムは、Solaris 9 8/03 以降のリリースが動作するシステムにマウントしてください。

エラーメッセージ

"ファイルシステムがマルチテラバイト形式に設定されて
いません。" "そのサイズは 1 テラバイト以上にできません。"
原因

newfs -T コマンドを使わずに作成したファイルシステムを拡張しようとしました。

解決法
  1. 1T バイトより大きくするファイルシステムのデータをバックアップします。

  2. newfs コマンドを使用して、ファイルシステムをマルチテラバイトファイルシステムに再作成します。

  3. 新しく作成したファイルシステムにバックアップされていたデータを復元します。

ファイルシステム管理作業についての参照先

ファイルシステムの管理に関する手順を調べるには、次の参照先を使用します。

ファイルシステム管理作業 

参照先 

新しいファイルシステムを作成する 

第16章「UFS、TMPFS、LOFS ファイルシステムの作成 (手順)」第18章「CacheFS ファイルシステムの使用 (手順)」

ローカルファイルとリモートファイルをユーザーが利用できるようにする 

第17章「ファイルシステムのマウントとマウント解除 (手順)」

新しいディスクデバイスを接続して構成する 

第10章「ディスクの管理 (概要)」

バックアップスケジュールを計画して導入し、必要に応じてファイルとファイルシステムを復元する 

第22章「ファイルシステムのバックアップと復元 (概要)」

ファイルシステムの矛盾をチェックして訂正する 

第20章「UFS ファイルシステムの整合性チェック (手順)」

ファイルシステムの概要

ファイルシステムは、ファイルを編成して格納するためのディレクトリ構造です。「ファイルシステム」という用語は、次のような場合に使用されます。

通常、その意味は状況に応じて判断できます。

Solaris オペレーティング環境は、各種ファイルシステムへの標準インタフェースを提供する「仮想ファイルシステム」 (VFS) アーキテクチャを使用します。VFS アーキテクチャを使用すると、カーネルはファイルの読み取り、書き込み、一覧表示などの基本操作を処理でき、新しいファイルシステムの追加が簡単になります。

ファイルシステムのタイプ

Solaris システムソフトウェアでは、次の 3 種類のファイルシステムがサポートされます。

ファイルシステムのタイプを確認するには、「ファイルシステムのタイプを調べる」を参照してください。

ディスクベースのファイルシステム

ディスクベースのファイルシステムは、ハードディスク、CD-ROM、フロッピーディスクなどの物理メディアに格納されます。ディスクベースのファイルシステムは、さまざまな形式で作成できます。利用できる形式は次のとおりです。

ディスクベースのファイルシステム 

形式の説明 

UFS 

UNIX ファイルシステム (4.3 Tahoe リリースに組み込まれていた BSD Fast File システムに基づく)。UFS は、Solaris オペレーティングシステムのデフォルトのディスクベースファイルシステムです。

UFS ファイルシステムをディスク上に作成する前に、そのディスクをフォーマットし、スライスに分割しなければなりません。ディスクのフォーマットとスライスへの分割については、第10章「ディスクの管理 (概要)」を参照してください。

HSFS 

High Sierra、Rock Ridge、および ISO 9660 のファイルシステム。High Sierra は、初めての CD-ROM ファイルシステムです。ISO 9660 は、High Sierra ファイルシステムの公式の標準バージョンです。HSFS ファイルシステムは CD-ROM 上で使用される読み取り専用ファイルシステムです。Solaris HSFS では、ISO 9660 への Rock Ridge 拡張がサポートされるので、CD-ROM 上でも、すべての UFS ファイルシステムのセマンティクスとファイルタイプを提供します。ただし、書き込み可能ではなく、ハードリンクも提供しません。

PCFS 

PC ファイルシステム。DOS ベースのパーソナルコンピュータ用に作成された DOS フォーマットのディスク上のデータとプログラムに読み取りと書き込みのアクセスができます。

UDF 

UDF (Universal Disk Format) ファイルシステム。DVD (Digital Versatile Disc または Digital Video Disc) と呼ばれる光学式メディアテクノロジに情報を格納するための業界標準形式。 

ディスクベースの各種ファイルシステムは、次のように特定のメディアのタイプに対応しています。

ただし、上記以外の組み合わせも可能です。たとえば、CD-ROM やフロッピーディスクにも、UFS ファイルシステムを格納できます。

ネットワークベースのファイルシステム

ネットワークベースのファイルシステムは、ネットワークからアクセスされるファイルシステムです。一般に、ネットワークベースのファイルシステムは 1 つのシステム上 (通常はサーバー上) にあり、他のシステムからネットワーク経由でアクセスされます。

NFS で分散された「リソース」 (ファイルやディレクトリ) を管理するには、サーバーからそれらのリソースをエクスポートして個々のクライアントシステムでマウントします。 詳細については、「NFS 環境」を参照してください。

仮想ファイルシステム

仮想ファイルシステムは、特殊なカーネル情報と機能へのアクセスを提供するメモリーベースのファイルシステムです。ほとんどの仮想ファイルシステムは、ディスク領域を使用しません。ただし、CacheFS ファイルシステムは、ディスク上のファイルシステムを使用してキャッシュを保持します。また、一時ファイルシステム (TMPFS) などの一部の仮想ファイルシステムは、ディスク上のスワップ空間を使用します。

CacheFS ファイルシステム

CacheFSTM ファイルシステムを使用すると、リモートファイルシステムや、CD-ROM ドライブのような低速デバイスのパフォーマンスを改善できます。ファイルシステムをキャッシュすると、リモートファイルシステムや CD-ROM から読み込まれたデータは、ローカルシステム上のキャッシュに格納されます。

NFS や CD-ROM ファイルシステムのパフォーマンスとスケーラビリティを向上させるには、CacheFS ファイルシステムを使用してください。CacheFS ソフトウェアは、サーバーとネットワークの負荷を軽減して NFS サーバーのパフォーマンスとスケーラビリティを改善する汎用ファイルシステムキャッシュメカニズムです。

CacheFS ソフトウェアは、階層化ファイルシステムとして設計されており、あるファイルシステムを別のファイルシステムのキャッシュに書き込む機能を持っています。NFS 環境では、CacheFS ソフトウェアはサーバーあたりのクライアント比率を高め、サーバーとネットワークの負荷を軽減し、ポイントツーポイントプロトコル (PPP) などの低速リンク上のクライアントのパフォーマンスを向上させます。また、CacheFS ファイルシステムと AutoFS サービスを組み合わせると、パフォーマンスとスケーラビリティをさらに向上させることができます。

CacheFS ファイルシステムの詳細については、第18章「CacheFS ファイルシステムの使用 (手順)」を参照してください。

UDF (Universal Disk Format) ファイルシステム

UDF ファイルシステムは、「DVD」 (Digital Versatile Disc または Digital Video Disc) 光学式メディアに情報を格納するための業界標準形式です。

UDF ファイルシステムは、SPARC と x86 の両方のプラットフォームにおいて、動的に読み込み可能な 32 ビットと 64 ビットのモジュールとして提供されます。また、ファイルシステムを作成、マウント、および検査するシステム管理ユーティリティも同時に提供されます。Solaris の UDF ファイルシステムは、サポートされている ATAPI と SCSI の DVD ドライブ、CD-ROM デバイス、ハードディスク、およびフロッピーディスクドライブで機能します。さらに、Solaris の UDF ファイルシステムは UDF 1.50 仕様に完全に準拠しています。

UDF ファイルシステムには次のような機能があります。

次の機能は、UDF ファイルシステムにはありません。

次に、UDF ファイルシステムの要件を示します。

Solaris で実装された UDF ファイルシステムには、次のような互換性があります。

一時ファイルシステム

一時ファイルシステム (TMPFS) は、ファイルシステムの読み取りと書き込みにローカルメモリーを使用します。一般に、一時ファイルシステムは、UFS ファイルシステムに比べてアクセス速度が高速です。TMPFS を使用すると、ローカルディスク上で、あるいはネットワーク経由で一時ファイルの読み書きを行う際のオーバヘッドを軽減でき、システムパフォーマンスを改善できます。たとえば、プログラムをコンパイルすると一時ファイルが作成されます。オペレーティングシステムは、これらのファイルを処理する間に大量のディスク処理やネットワーク処理を行います。TMPFS を使用してこれらの一時ファイルを格納すると、その作成、処理、または削除が大幅に高速になります。

TMPFS ファイルシステムのファイルは、永続的に保存されるわけではありません。ファイルシステムのマウントが解除されるときと、システムがシャットダウンまたはリブートされるときに、一時ファイルシステムのファイルは削除されます。

TMPFS は、Solaris オペレーティングシステム内の /tmp ディレクトリのデフォルトのファイルシステムです。UFS ファイルシステムの場合と同様に、/tmp ディレクトリとの間でファイルをコピーまたは移動できます。

TMPFS ファイルシステムは、一時的な退避場所としてスワップ空間を使用します。TMPFS ファイルシステムがマウントされたシステムのスワップ空間が足りないと、次の 2 つの問題が発生する可能性があります。

TMPFS ファイルシステムの作成方法については、第16章「UFS、TMPFS、LOFS ファイルシステムの作成 (手順)」を参照してください。スワップ空間を拡張する方法については、第19章「追加スワップ空間の構成 (手順)」を参照してください。

ループバックファイルシステム

ループバックファイルシステム (LOFS) を使用すると、代替パス名を使用してファイルにアクセスできるように、新しい仮想ファイルシステムを作成できます。たとえば、ルート (/) のループバックマウントを /tmp/newroot 上で作成できます。ファイルシステム階層全体が、NFS サーバーからマウントされるファイルシステムを含め、/tmp/newroot 上に複写されたように見えます。どのファイルにも、ルート (/) で始まるパス名または /tmp/newroot で始まるパス名を使用してアクセスできます。

LOFS ファイルシステムの作成方法については、第16章「UFS、TMPFS、LOFS ファイルシステムの作成 (手順)」を参照してください。

プロセスファイルシステム

プロセスファイルシステム (PROCFS) はメモリー内にあり、/proc ディレクトリには、アクティブなプロセスのプロセス番号別リストが入っています。/proc ディレクトリの内容は、ps などのコマンドで使用されます。デバッガや他の開発ツールも、ファイルシステムコールを使用して、プロセスのアドレス空間にアクセスできます。


注意  注意

/proc ディレクトリ内のファイルは削除しないでください。/proc ディレクトリからプロセスを削除しても、そのプロセスは強制終了されません。/proc ファイルはディスク容量を消費しないため、このディレクトリからファイルを削除してもあまり意味がありません。


/proc ディレクトリは、管理が不要です。

その他の仮想ファイルシステム

次のタイプの仮想ファイルシステムは、参考のために掲載してあります。管理は不要です。

仮想ファイルシステム 

説明 

FIFOFS (先入れ先出し) 

プロセスにデータへの共通アクセス権を与える名前付きパ イプのファイル

FDFS (ファイル記述子) 

開いているファイルに、記述子を使用して名前を明示的に与える

MNTFS 

ローカルシステムに、マウント済みファイルシステムのテーブルへの読み取り専用アクセスを提供する 

NAMEFS 

ほとんどの場合、ファイル記述子をファイルの先頭に動的にマウントするために STREAMS に使用される

SPECFS (特殊) 

キャラクタ型特殊デバイスとブロック型特殊デバイスへのアクセスを提供する

SWAPFS 

カーネルがスワッピングに使用するファイルシステム

拡張ファイル属性

UFS、NFS、および TMPFS ファイルシステムは、拡張ファイル属性を包含するように機能拡張されました。拡張ファイル属性によりアプリケーション開発者は、ファイルを特定の属性に関連付けることができます。たとえば、ウィンドウシステムファイル管理アプリケーションの開発者は、表示アイコンをファイルに関連付けることができます。拡張ファイル属性は、論理的には、ターゲットファイルに関連付けられている隠しディレクトリ内のファイルとして表されます。

runat コマンドを使用すると、属性を追加したり、拡張属性の名前空間に入っているシェルコマンドを実行したりできます。拡張属性の名前空間とは、指定のファイルに関連付けられている隠し属性ディレクトリのことです。

runat コマンドを使用して属性をファイルに追加するには、最初に属性ファイルを作成する必要があります。


$ runat filea cp /tmp/attrdata attr.1

次に、runat コマンドを使用して、ファイルの属性をリストに表示します。


$ runat filea ls -l

詳細については、runat(1) のマニュアルページを参照してください。

ファイル属性の照会、コピー、または検索に使用できる属性対応のオプションを提供することにより、Solaris ファイルシステムコマンドの多くは、ファイルシステム属性をサポートするよう変更されました。詳細については、各ファイルシステムコマンドのマニュアルページを参照してください。

ファイルシステム管理用のコマンド

ほとんどのファイルシステム管理コマンドには、汎用コマンドとファイルシステムに固有のコマンドの 2 種類があります。可能な場合には、常に汎用コマンドを使用してください。汎用コマンドは、ファイルシステム固有のコマンドを呼び出します。次の表に、ファイルシステム管理用の汎用コマンドを示します。これらのコマンドは、/usr/sbin ディレクトリに入っています。

表 151 ファイルシステム管理用の汎用コマンド

コマンド 

マニュアルページ 

説明 

clri

clri(1M)

i ノードをクリアする。 

df

df(1M)

空きディスクブロック数とファイル数を出力する。 

ff

ff(1M)

ファイルシステムのファイル名と統計情報を表示する。 

fsck

fsck(1M)

ファイルシステムの整合性を検査し、検出された損傷を修復する。 

fsdb

fsdb(1M)

ファイルシステムをデバッグする。 

fstyp

fstyp(1M)

ファイルシステムのタイプを調べる。 

labelit

labelit(1M)

テープにコピーするときに、ファイルシステムのラベルを表示または作成する (volcopy コマンド専用)。

mkfs

mkfs(1M)

新しいファイルシステムを作成する。 

mount

mount(1M)

ローカルおよびリモートのファイルシステムをマウントする。 

mountall

mountall(1M)

仮想ファイルシステムテーブル (/etc/vfstab) に指定されているすべてのファイルシステムをマウントする。

ncheck

ncheck(1M)

パス名とその i ノード番号のリストを生成する。 

umount

mount(1M)

ローカルおよびリモートのファイルシステムをマウント解除する。 

umountall

mountall(1M)

仮想ファイルシステムテーブル (/etc/vfstab) に指定されているすべてのファイルシステムをマウント解除する。

volcopy

volcopy(1M)

ファイルシステムのイメージコピーを作成する。 

ファイルシステムコマンドによるファイルシステムタイプの判断

汎用ファイルシステムコマンドは、次の順序でファイルシステムのタイプを判断します。

  1. 指定されている場合は、-F オプションで指定されているファイルシステムのタイプから判断します。

  2. 特殊デバイスを /etc/vfstab ファイルのエントリと突き合わせて判断します (special が指定されている場合)。 たとえば fsck は、まず fsck device フィールドと突き合わせて一致するエントリを検索します。一致するエントリが見つからなければ、特殊デバイスフィールドと突き合わせてチェックします。

  3. ローカルファイルシステムの場合は /etc/default/fs ファイル内に指定されたデフォルトを使用し、リモートファイルシステムの場合は/etc/dfs/fstypes ファイル内に指定されたデフォルトを使用して判断します。

汎用コマンドと専用コマンドのマニュアルページ

汎用コマンドと専用コマンドについては、『man pages section 1M: System Administration Commands』を参照してください。ファイルシステムの汎用コマンドのマニュアルページには、汎用コマンドオプションに関する情報だけが記載されています 。専用コマンドのマニュアルページには、該当するファイルシステムに固有のオプション情報が記載されています。特定のマニュアルページを見つけるには、汎用コマンド名の末尾にアンダースコアとファイルシステムタイプの略称を追加してください。たとえば、UFS ファイルシステムのマウントについてのマニュアルページを参照するには、次のように入力します。


$ man mount_ufs

デフォルトの Solaris ファイルシステム

Solaris UFS ファイルシステムは階層構造になっており、ルートディレクトリ (/) から始まり、下位に多数のディレクトリが形成されています。Solaris のインストールプロセスは、デフォルトのディレクトリセットをインストールし、一連の規則を適用して類似するタイプのファイルをグループ化します。次の表に、デフォルトの Solaris ファイルシステムの概要を示します。

表 152 デフォルトの Solaris ファイルシステム

ファイルシステムまたはディレクトリ 

ファイルシステムのタイプ 

説明 

ルート (/)

UFS 

階層ファイルツリーの最上位。ルートディレクトリには、カーネル、デバイスドライバ、システムのブートに使用されるプログラムなど、システム処理に欠かせないディレクトリとファイルが入っている。また、ローカルとリモートのファイルシステムをファイルツリーに接続できるマウントポイントディレクトリも入っている。 

/usr

UFS 

他のユーザーと共有できるシステムファイルとディレクトリ。特定のタイプのシステム上でのみ実行できるファイルは、/usr ファイルシステムに入っている (SPARC 実行可能ファイルなど)。どのタイプのシステム上でも使用できるファイル (マニュアルページなど) は、/usr/share ディレクトリに入っている。

/export/home または /home

NFS、UFS 

ユーザーのホームディレクトリのマウントポイント。ホームディレクトリには、そのユーザーの作業ファイルが格納される。デフォルトでは、/home ディレクトリは自動マウントされるファイルシステムである。スタンドアロンシステムでは、/home ディレクトリはローカルディスクスライス上の UFS ファイルシステムの場合がある。

/var

UFS 

ローカルシステムの使用中に変化または拡大する可能性のあるシステムファイルとディレクトリ。これには、システムログ、viex のバックアップファイル、および uucp ファイルが含まれる。

/opt

NFS、UFS 

オプションの Sun 以外のソフトウェア製品のマウントポイント。一部のシステムでは、/opt ディレクトリはローカルディスクスライス上の UFS ファイルシステムの場合がある。

/tmp

TMPFS 

システムがブートされるか、/tmp ファイルシステムがマウント解除されるたびに消去される一時ファイル。

/proc

PROCFS 

アクティブなプロセスの番号別リスト。 

/etc/mnttab

MNTFS 

ローカルシステムに、マウント済みファイルシステムのテーブルへの読み取り専用アクセスを提供するファイルシステム。

/var/run

TMPFS 

システムのブート後に不要になる一時ファイルを格納するためのファイルシステム。 

システムを動作させるには、ルート (/) と /usr のファイルシステムが必要です。/usr ファイルシステムに置かれているもっとも基本的なコマンドの一部 (mount など) は、システムのブート時や、システムがシングルユーザーモードで実行しており、/usr ファイルシステムがマウントされていない場合でも使用できるように、ルート (/) ファイルシステムにも置かれています。ルート (/) と /usr ファイルシステムのデフォルトディレクトリの詳細については、第21章「UFS ファイルシステム (参照情報)」を参照してください。

スワップ空間

Solaris オペレーティングシステムは、一部のディスクスライスをファイルシステムではなく一時記憶域として使用します。これらのスライスを「スワップスライス」または「スワップ空間」と呼びます。スワップスライスは、現在のプロセスを処理するだけの十分な物理メモリーがシステムにない場合に、仮想メモリー記憶域として使用されます。

多くのアプリケーションは十分なスワップ空間が使用できることを前提に作成されているため、スワップ空間を割り当て、その使われ方を監視して、必要に応じてスワップ空間を追加する方法を知っておく必要があります。スワップ空間の概要とスワップ空間を追加する手順については、第19章「追加スワップ空間の構成 (手順)」を参照してください。

UFS ファイルシステム

UFS は、Solaris オペレーティング環境内のデフォルトのディスクベースファイルシステムです。ほとんどの場合、ディスクベースのファイルシステムを管理するときには、UFS を管理していることになります。UFS ファイルシステムの機能は次の通りです。

UFS の機能 

説明 

状態フラグ 

ファイルシステムの状態を、 クリーン、安定、使用中、ロギング処理、または不明として示します。これらのフラグによって、必要のないチェックをファイルシステム上で行わなくて済みます。ファイルシステムが「クリーン」状態、「安定」状態、または「ロギング処理」状態になっていると、ファイルシステムのチェックは実行されません。

拡張基礎タイプ (EFT) 

32 ビットのユーザーID (UID)、グループID (GID)、およびデバイス番号。

大規模ファイルシステム 

最大 16T バイトまで増やせるファイルシステムに、およそ 1T バイトの大きさのファイルを指定できます。EFI ディスクラベルを使ってディスク上にマルチテラバイトの UFS ファイルシステムを作成できます。

UFS ファイルシステム構造の詳細については、第21章「UFS ファイルシステム (参照情報)」を参照してください。

UFS ファイルシステムの計画

ファイルシステムの配置を決めるときには、要求が競合する可能性があることを考えなければなりません。次にいくつかの推奨事項を示します。

デフォルトのファイルシステムパラメータや、新しい UFS ファイルシステムを作成する手順については、第16章「UFS、TMPFS、LOFS ファイルシステムの作成 (手順)」を参照してください。

UFS ロギング

UFS ロギングは、1 つの完全な UFS 操作を構成する複数のメタデータ変更を、1 つのトランザクションにまとめます。一連のトランザクションは、ディスク上のログに記録された後で、実際の UFS ファイルシステムのメタデータに適用されます。

システムはリブート時に、不完全なトランザクションを廃棄しますが、完結している操作のトランザクションは適用します。完結しているトランザクションだけが適用されるために、ファイルシステムの整合性が保たれます。通常であればシステムコールの実行が中断され、UFS ファイルシステムの整合性が確保できないシステムクラッシュ時にも、ファイルシステムの整合性が保たれます。

UFS ロギングには 2 つの長所があります。

ログはファイルシステムの空きブロックから割り当てられ、1G バイトのファイルシステムごとに約 1M バイトのサイズ (合計で 64M バイトまで) が割り当てられます。ログは、いっぱいになるとフラッシュされます。また、ファイルシステムがマウント解除されたとき、あるいは lockfs コマンドを実行したときにも、ログがフラッシュされます。

UFS ロギングは、すべての UFS ファイルシステムでデフォルトで有効になります。

UFS ロギングを無効にする必要がある場合は、/etc/vfstab ファイル内のファイルシステムのエントリに nologging オプションを追加するか、ファイルシステムを手動でマウントするときに nologging オプションを指定します。

UFS ロギングを有効にする必要がある場合は、/etc/vfstab ファイル内で mount コマンドに -o logging オプションを指定するか、ファイルシステムを手動でマウントするときに mount コマンドに -o logging オプションを指定します。ログは、ルート (/) ファイルシステムを含む、任意の UFS ファイルシステムで有効にできます。また、fsdb コマンドには、UFS ロギングをサポートするための新しいデバッグコマンドが用意されています。

一部のオペレーティングシステムでは、ロギングが有効になっているファイルシステムを「ジャーナル」ファイルシステムと呼びます。

UFS スナップショット

fssnap コマンドを使用して、ファイルシステムの読み取り専用のスナップショットを作成することができます。スナップショットは、バックアップ操作のためのファイルシステムの一時的イメージです。

詳細については、第24章「UFS スナップショットの使用 (手順)」を参照してください。

UFS 直接入出力

直接入出力の目的は、大容量入出力処理のスピードを速くすることです。大容量入出力処理では、大規模ファイル (256K バイトを超える) を転送するために、大容量のバッファーサイズを使用します。

UFS の直接入出力を使用すると、データベースエンジンなど、独自の内部バッファリングを行うアプリケーションにメリットがあります。Solaris 8 1/01 リリースから開始された UFS の直接入出力は、raw デバイスのアクセス時に見られる同様の入出力の並行処理に対応するよう改善されました。現在では、パフォーマンスがわずかに低下するだけで、ファイルシステムのネーミングや柔軟性がもたらすメリットを受けることができます。データベースの製造元を調べて、その製品構成オプションで UFS の直接入出力を有効にできるかどうかを確認してください。

mount コマンドに forcedirectio オプションを使用しても、直接入出力をファイルシステムで有効にできます。直接入出力を有効にしてパフォーマンスが向上するのは、ファイルシステムが大量の連続するデータを転送するときだけです。

forcedirectio オプションでファイルシステムをマウントするとき、データはユーザーのアドレス空間とディスクの間で直接伝送されます。直接入出力がファイルシステムで無効な場合、ユーザーのアドレス空間とディスクの間で転送されるデータは、まず、カーネルアドレス空間にバッファーされます。

デフォルトでは、UFS ファイルシステムでは直接入出力は行われません。詳細については、mount_ufs(1M) のマニュアルページを参照してください。

ファイルシステムのマウントとマウント解除

ファイルシステム上のファイルにアクセスするには、ファイルシステムをマウントする必要があります。ファイルシステムのマウントとは、ファイルシステムを特定のディレクトリ (マウントポイント) に接続し、システムで使用可能にすることです。 ルート (/) ファイルシステムは、常にマウントされています。他のファイルシステムは、ルート (/) ファイルシステムに接続したり切り離したりできます。

ファイルシステムをマウントすると、そのファイルシステムがマウントされている間は、マウントポイントのディレクトリ内に実際に存在しているファイルやディレクトリは使用できなくなります。これらのファイルはマウント処理の影響を永続的に受けるわけではなく、ファイルシステムをマウント解除すると再び使用できるようになります。通常は存在はするがアクセスできないファイルは混乱の原因になるので、マウントディレクトリを空にしておきます。

たとえば、次の図は、ルート (/) ファイルシステムと、その下の sbinetcopt の各サブディレクトリから始まるローカルファイルシステムを示しています。

図 151 ルート (/) ファイルシステムの例

この図は、sbin、etc、opt の各ディレクトリの一部を含むルート (/) ファイルシステムの例を示しています。

別パッケージの製品が含まれている /opt ファイルシステムからローカルファイルシステムにアクセスするには、次の作業を行います。

ファイルシステムのマウント方法については、第17章「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。

図 152 ファイルシステムのマウント

/opt/unbundled マウントポイントでファイルシステムをマウントし、/opt/unbundled ディレクトリ内で新しくアクセスできるようになった項目の一覧

マウントされたファイルシステムテーブル

ファイルシステムをマウントまたはマウント解除すると、現在マウントされているファイルシステムのリストを使用して、/etc/mnttab (マウントテーブル) ファイルが変更されます。このファイルの内容は cat または more コマンドを使用して表示できますが、編集することはできません。次にマウントテーブルファイル /etc/mnttab の例を示します。


$ more /etc/mnttab
/dev/dsk/c0t0d0s0  /  ufs rw,intr,largefiles,onerror=panic,suid,dev=2200000 938557523
/proc   /proc   proc    dev=3180000     938557522
fd      /dev/fd fd      rw,suid,dev=3240000     938557524
mnttab  /etc/mnttab     mntfs   dev=3340000     938557526
swap    /var/run        tmpfs   dev=1   938557526
swap    /tmp    tmpfs   dev=2   938557529
/dev/dsk/c0t0d0s7 /export/home ufs rw,intr,largefiles,onerror=panic,suid,dev=2200007 ...
$

仮想ファイルシステムテーブル

アクセスするたびにファイルシステムを手動でマウントするのは、時間がかり、またまちがいが起こりやすい作業です。この問題を解決するために、仮想ファイルシステムテーブル (/etc/vfstab ファイル) にファイルシステムのリストとそのマウント方法を指定できます。

/etc/vfstab ファイルは、2 つの重要な機能を持っています。

デフォルトの /etc/vfstab ファイルは、システムをインストールするときに作成され、その内容はシステムソフトウェアをインストールするときに行なった選択によって異なります。ただし、システムの /etc/vfstab ファイルはいつでも編集できます。エントリを追加するときに指定する必要がある主な情報は、ファイルシステムが置かれているデバイス、マウントポイントの名前、ファイルシステムのタイプ、システムブート時に自動的にマウントするかどうか (mountall コマンドを使用する)、およびマウントオプションです。

次の例は、/etc/vfstab ファイルの内容を示しています。コメント行は # で始まります。この例は、2 つのディスク (c0t0d0c0t3d0) を持つシステムの /etc/vfstab ファイルを示しています。


$ more /etc/vfstab
#device         device          mount           FS      fsck   mount  mount
#to mount       to fsck         point           type    pass   at boot options
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 /          ufs     1       no      -
/proc           -               /proc           proc    -       no      -
/dev/dsk/c0t0d0s1 -                -            swap    -       no      -
swap            -               /tmp            tmpfs   -       yes     -
/dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /usr       ufs     2       no      -
/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /test      ufs     2       yes     -
$

上の例の最後のエントリは、システムブート時に /dev/dsk/c0t3d0s7 スライス上の UFS ファイルシステムが自動的にマウントポイント /test にマウントされることを示しています。ルート (/) と /usr では、mount at boot フィールドの値が no に指定されていることに注意してください。これはこの 2 つのファイルシステムが、mountall コマンドを実行する前にブートシーケンスの一部としてカーネルによってマウントされるからです。

/etc/vfstab の各フィールドの説明、およびこのファイルの編集/使用方法については、第17章「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。

NFS 環境

NFS は、1 つのシステム (通常はサーバー) の「リソース」 (ファイルやディレクトリ) をネットワーク上の他のシステムと共有するための分散型ファイルシステムサービスです。 たとえば、Sun 以外のアプリケーションやソースファイルを他のシステム上のユーザーと共有できます。

NFS は、リソースの実際の物理的な位置をユーザーが意識しなくてすむようにします。よく使用されるファイルのコピーをシステムごとに配置しなくても、あるシステムのディスク上にコピーを 1 つ配置することによって NFS は、他のすべてのシステムがそのコピーにネットワークからアクセスできるようにします。NFS の環境では、リモートファイルシステムは、実際にはローカルシステムと区別がつきません。

システムは、ネットワーク上で共有するリソースがあるときに、NFS サーバーになります。サーバーは、現在共有されているリソースとそのアクセス制限 (読み取り / 書き込み、読み取り専用アクセスなど) のリストを管理します。

リソースを共有する場合は、リモートシステムにマウントできるように、そのリソースを使用可能な状態にします。

リソースを共有するには、次の方法があります。

リソースを共有する方法については、第17章「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。NFS の詳細については、『Solaris のシステム管理 (資源管理とネットワークサービス)』の第 13 章「ネットワークファイルシステムの管理 (概要)」を参照してください。

自動マウントまたは AutoFS

NFS ファイルシステムリソースをマウントするには、自動マウント (または AutoFS) というクライアント側のサービスを使用します。このサービスによってシステムは、ユーザーがアクセスしたときに自動的に NFS リソースをマウントまたはマウント解除できます。ユーザーがファイルシステム内のファイルを使用している間、ファイルシステムリソースはマウントされたままになります。リソースが一定の時間アクセスされなかった場合、リソースは自動的にマウント解除されます。

次に、AutoFS の特徴を示します。

AutoFS サービスは automount ユーティリティによって初期化されます。このコマンドは、システムのブート時に自動的に実行されます。automountd デーモンは永続的に動作し、必要に応じて NFS ファイルシステムをマウントまたはマウント解除します。デフォルトでは、/home ファイルシステムは automount デーモンによってマウントされます。

AutoFS では、同じファイルシステムを提供するサーバーを複数指定できます。このような方法では、1 つのサーバーがダウンしても、AutoFS が他のマシンからファイルシステムをマウントすることができます。

AutoFS の設定と管理方法については、『Solaris のシステム管理 (IP サービス)』を参照してください。

ファイルシステムのタイプを調べる

ファイルシステムのタイプは、次のいずれかを使用して判断できます。

ファイルシステムのタイプを調べる方法

この手順は、ファイルシステムがマウントされているかどうかにかかわらず、使用できます。

grep コマンドを使用して、ファイルシステムのタイプを調べます。


$ grep mount-point fs-table
mount-point

ファイルシステムタイプを調べるファイルシステムのマウントポイント名を指定する。たとえば、/var ディレクトリ

fs-table

ファイルシステムのタイプを調べるファイルシステムテーブルへの絶対パスを示す。ファイルシステムがマウントされている場合、fs-table/etc/mnttab。マウントされていない場合、fs-table/etc/vfstab

マウントポイントの情報が表示されます。


ディスクスライスの raw デバイス名がわかる場合、fstyp コマンドで、ファイルシステムのタイプを調べることができます (そのディスクスライスにファイルシステムが含まれている場合)。詳細については、fstyp(1M) のマニュアルページを参照し てください。


例 ファイルシステムのタイプを調べる

次の例では、/etc/vfstab を使用して、/export ファイルシステムのタイプを調べます。


$ grep /export /etc/vfstab
/dev/dsk/c0t3d0s6   /dev/rdsk/c0t3d0s6  /export ufs   2       yes    -
$ 

次の例では、/etc/mnttab ファイルを使用して、現在マウントされているフロッピーディスク (vold でマウントされたもの) のファイルシステムのタイプを調べます。


$ grep /floppy /etc/mnttab
/vol/dev/diskette0/unnamed_floppy   /floppy/unnamed_floppy  pcfs rw,
nohidden,nofoldcase,dev=16c0009      89103376
$