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

第 17 章 ZFS、UFS、TMPFS、LOFS ファイルシステムの作成 (手順)

この章では、ZFS ファイルシステム、UFS ファイルシステム、一時ファイルシステム (TMPFS)、およびループバックファイルシステム (LOFS) の作成方法について説明します。TMPFS と LOFS は仮想ファイルシステムであるため、これらのファイルシステムを「実際に使用する」には、ファイルシステムをマウントします。

この章で説明する手順は次のとおりです。


注 –

UFS と DOS のファイルシステムをリムーバブルメディア上に作成する手順については、第 1 章リムーバブルメディアの管理 (概要)を参照してください。


Oracle Solaris ZFS ファイルシステムの作成

ZFS ファイルシステムは、特定のディスクパーティションに直接関連付けられていません。ZFS ファイルシステムで使用される ZFS ストレージプールには、多数のデバイスを含めることができます。ディスク全体またはディスクスライスを ZFS ストレージプールに追加できます。プールの中に、さらに別のファイルシステムを作成することをお勧めします。ファイルシステムに基づいてプールを管理すれば、プールに含まれるさまざまなデータを管理しやすくなります。

ZFS ストレージプールおよびファイルシステムの作成方法の詳細は、『Oracle Solaris ZFS 管理ガイド』を参照してください。

ProcedureOracle Solaris ZFS ファイルシステムの作成方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. ZFS ストレージプールを作成します。

    次の例は、tank という名前の単純なミラー化ストレージプールと tank という名前の ZFS ファイルシステムを、1 つのコマンドで作成する方法を示しています。/dev/dsk/c1t0d0 ディスク全体と /dev/dsk/c2t0d0 ディスク全体を使用することを前提としています。


    # zpool create tank mirror c1t0d0 c2t0d0
    
  3. ZFS ファイルシステムを作成します。


    # zfs create tank/fs
    

    この新規 ZFS ファイルシステム tank/fs では、ディスク領域を必要なだけ使用でき、/tank/fs に自動的にマウントされます。

  4. ファイルシステムが作成されたことを確認します。


    # zfs list -r tank
    NAME      USED  AVAIL  REFER  MOUNTPOINT
    tank      117K   268G    21K  /tank
    tank/fs    21K   268G    21K  /tank/fs

UFS ファイルシステムの作成

UFS ファイルシステムをディスク上に作成する前に、そのディスクをフォーマットし、スライスに分割しなければなりません。「ディスクスライス」とは物理的なディスクのサブセットで、連続するブロックからなる 1 つの範囲のことです。スライスはスワップ空間などの raw デバイスとして使用することも、ディスクベースのファイルシステムとして使用することもできます。ディスクのフォーマットとスライスへの分割の方法については、第 10 章ディスクの管理 (概要)を参照してください。

Solaris ボリュームマネージャーなどのディスクおよびストレージ管理製品では、より洗練された「ボリューム」を作成できます。ボリュームは、1 つのスライスまたは 1 つのディスクの境界を超えて、拡張可能です。ボリュームの使用方法については、『Solaris ボリュームマネージャの管理』を参照してください。


注 –

Solaris のデバイス名は、用語「スライス (デバイス名内の文字は s)」を使用して、スライス番号を参照します。スライスは「パーティション」とも呼ばれます。


UFS ファイルシステムは、インストール手順の一部として Solaris オペレーティングシステムによって自動的に作成されるので、UFS ファイルシステムを作成しなければならないことはほとんどありません。次の場合には、UFS ファイルシステムを作成する (または作成し直す) 必要があります。

newfs コマンドを使用するのが、UFS ファイルシステムを作成する標準的な方法です。newfs コマンドは mkfs コマンドの使いやすいフロントエンドであり、実際に新しいファイルシステムを作成します。newfs コマンドは、パラメータのデフォルト値 (1 シリンダ当たりのトラック数や 1 トラック当たりのセクター数など) を、新しいファイルシステムが作成されるディスクのラベルから読み取ります。選択したオプションは、mkfs コマンドに渡され、ファイルシステムが作成されます。

newfs コマンドが使用するデフォルトのパラメータについては、newfs(1M) のマニュアルページを参照してください。

ProcedureUFS ファイルシステムを作成する方法

始める前に

次の前提条件を満たしているかどうかを確認します。

ディスクおよびディスクスライス番号の検索方法については、第 11 章ディスクの管理 (手順)を参照してください。

ディスクのフォーマットとスライスへの分割方法については、第 10 章ディスクの管理 (概要)を参照してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. ファイルシステムを作成します。


    # newfs [-N] [-b size] [-i bytes] /dev/rdsk/device-name
    
    -N

    newfs コマンドが mkfs コマンドに渡すパラメータを表示します。ファイルシステムは実際に作成されません。newfs コマンドをテス トするのに好ましい方法です。

    -b size

    ファイルシステムのブロックサイズを 1 ブロックあたり 4096 または 8192 バイトで指定します。デフォルトは 8192 バイトです。

    -i bytes

    i ノード 1 個当たりのバイト数を指定します。デフォルトはディスクのサイズによって異なります。詳細は、newfs(1M) のマニュアルページを参照してください。

    device-name

    新しいファイルシステムを作成するディスクデバイス名を指定します。

    システムから、確認を促すプロンプトが表示されます。


    注意 – 注意 –

    この手順を実行する前に、スライスのデバイス名が正しく指定されていることを確認してください。間違ったスライスを指定すると、その内容は新しいファイルシステムの作成時に消去されます。そして、システムがパニックを起こす原因となる可能性があります。


  3. UFS ファイルシステムが作成されていることを確認するには、新しいファイルシステムを検査します。


    # fsck /dev/rdsk/device-name
    

    device-name 引数は、新しいファイルシステムを格納するディスクデバイスの名前を指定します。

    fsck コマンドは、新しいファイルシステムの整合性を検査して、問題があれば通知し、問題を修復する前にプロンプトを表示します。fsck コマンドの詳細は、第 21 章UFS ファイルシステムの整合性検査 (手順)または fsck(1m) のマニュアルページを参照してください。


例 17–1 UFS ファイルシステムの作成

次の例は、/dev/rdsk/c0t1d0s7 上に UFS ファイルシステムを作成する方法を示しています。


# newfs /dev/rdsk/c0t1d0s7
/dev/rdsk/c0t1d0s7:  725760 sectors in 720 cylinders of 14 tracks, 72 sectors
        354.4MB in 45 cyl groups (16 c/g, 7.88MB/g, 3776 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 16240, 32448, 48656, 64864, 81072, 97280, 113488, 129696, 145904, 162112,
 178320, 194528, 210736, 226944, 243152, 258080, 274288, 290496, 306704,
 322912, 339120, 355328, 371536, 387744, 403952, 420160, 436368, 452576,
 468784, 484992, 501200, 516128, 532336, 548544, 564752, 580960, 597168,
 613376, 629584, 645792, 662000, 678208, 694416, 710624,
 fsck /dev/rdsk/c0t1d0s7
#

UFS ファイルシステムを作成したあとの作業

UFS ファイルシステムをマウントし、使用可能にする場合は、第 18 章ファイルシステムのマウントとマウント解除 (手順)に進みます。

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

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

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

マルチテラバイト UFS ファイルシステムの詳細は、「64 ビット: マルチテラバイトの 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 is not this fstype.
エラーの発生原因

1T バイトを超える UFS ファイルシステムを、この機能をサポートしていない Solaris リリースが動作するシステムにマウントしようとしました。

解決方法

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

エラーメッセージ

"File system was not set up with the multi-terabyte format."  "Its size 
cannot be increased to a terabyte or more."
エラーの発生原因

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

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

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

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

一時ファイルシステム (TMPFS) の作成

一時ファイルシステム (TMPFS) は、ファイルシステムの読み取りと書き込みにローカルメモリーを使用します。一般に、一時ファイルシステムは、UFS ファイルシステムに比べて読み書きの速度が高速です。TMPFS ファイルシステムを使用すると、ローカルディスク上で、あるいはネットワーク経由で一時ファイルの読み書きを行う際のオーバーヘッドが軽減されるのでシステムのパフォーマンスを向上できます。TMPFS ファイルシステム内のファイルは、リブートまたはマウント解除すると削除されます。

複数の TMPFS ファイルシステムを作成した場合は、すべてのファイルシステムが同じシステムリソースを使用するということに注意してください。mount コマンドの -o size オプションを使用して TMPFS のサイズを制限しないと、ある TMPFS ファイルシステムで作成されたファイルが、ほかの TMPFS ファイルシステムのための領域を使い切ってしまう可能性があります。

詳細は、tmpfs(7FS) のマニュアルページを参照してください。

ProcedureTMPFS ファイルシステムを作成およびマウントする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 必要に応じて、TMPFS ファイルシステムとしてマウントするディレクトリを作成します。


    # mkdir /mount-point
    

    /mount-point は、TMPFS ファイルシステムがマウントされるディレクトリです。

  3. TMPFS ファイルシステムをマウントします。


    # mount -F tmpfs [-o size=number]  swap mount-point
    
    -o size=number

    TMPFS ファイルシステムのサイズ制限を M バイト単位で示します。

    mount-point

    TMPFS ファイルシステムがマウントされるディレクトリを示します。

    ブート時に TMPFS ファイルシステムが自動的にマウントされるようにシステムを設定する方法については、例 17–3 を参照してください。

  4. TMPFS ファイルシステムが作成されていることを確認します。


    # mount -v
    

例 17–2 TMPFS ファイルシステムを作成およびマウントする

次の例は、TMPFS ファイルシステム /export/reports を作成およびマウントし、そのサイズを 50M バイトに制限する方法を示しています。


# mkdir /export/reports
# chmod 777 /export/reports
# mount -F tmpfs -o size=50m swap /export/reports
# mount -v


例 17–3 ブート時に TMPFS ファイルシステムをマウントする

ブート時にシステムが自動的に TMPFS ファイルシステムをマウントするように設定するには、/etc/vfstab のエントリを追加します。次の例は、ブート時に /export/test を TMPFS ファイルシステムとしてマウントする /etc/vfstab ファイルのエントリを示しています。size=number オプションを指定していないため、/export/test の TMPFS ファイルシステムのサイズは利用できるシステムリソースによってのみ制限されます。


swap - /export/test  tmpfs   -  yes  -

/etc/vfstab ファイルの詳細は、/etc/vfstab ファイルのフィールドの説明」を参照してください。


ループバックファイルシステム (LOFS) の作成およびマウント

LOFS ファイルシステムは、既存のファイルシステムに代替パスを提供する仮想ファイルシステムです。ほかのファイルシステムを LOFS ファイルシステムにマウントしても、元のファイルシステムは変化しません。

詳細は、lofs(7FS) のマニュアルページを参照してください。


注 –

LOFS ファイルシステムは慎重に作成してください。LOFS ファイルシステムは仮想ファイルシステムなので、ユーザーやアプリケーションを混乱させる可能性があります。


ProcedureLOFS ファイルシステムを作成およびマウントする方法

  1. スーパーユーザーになるか、同等の役割を引き受けます。

  2. 必要に応じて、LOFS ファイルシステムとしてマウントするディレクトリを作成します。


    # mkdir loopback-directory
    
  3. 新しく作成したディレクトリに対して、適切なアクセス権と所有権を設定します。

  4. 必要に応じて、LOFS ファイルシステムをマウントするマウントポイントを作成します。


    # mkdir /mount-point
    
  5. LOFS ファイルシステムをマウントします。


    # mount -F lofs loopback-directory /mount-point
    
    loopback-directory

    ループバックマウントポイントにマウントするファイルシステムを指定します。

    /mount-point

    LOFS ファイルシステムをマウントするディレクトリを指定します。

  6. LOFS ファイルシステムがマウントされていることを確認します。


    # mount -v
    

例 17–4 LOFS ファイルシステムを作成およびマウントする

次の例は、新しいソフトウェアを、実際にはインストールしないで、ループバックファイルシステムとして /new/dist ディレクトリに作成、マウント、およびテストする方法を示しています。


# mkdir /tmp/newroot
# mount -F lofs /new/dist /tmp/newroot
# chroot /tmp/newroot newcommand


例 17–5 ブート時に LOFS ファイルシステムをマウントする

ブート時にシステムが自動的に LOFS ファイルシステムをマウントするように設定するには、/etc/vfstab ファイルの最後にエントリを追加します。次の例は、ルート (/) ファイルシステムの LOFS ファイルシステムを /tmp/newroot にマウントする /etc/vfstab ファイルのエントリを示しています。


/ - /tmp/newroot  lofs   -  yes  -

ループバックファイルシステムのエントリは、/etc/vfstab ファイル内の最後のエントリでなければなりません。ループバックファイルシステムの /etc/vfstab エントリが、そこに組み込まれるファイルシステムよりも前にあると、ループバックファイルシステムをマウントできません。


参照

/etc/vfstab ファイルの詳細は、/etc/vfstab ファイルのフィールドの説明」を参照してください。