Go to main content
Oracle® Solaris 10 から Oracle Solaris 11.3 への移行

印刷ビューの終了

更新: 2015 年 10 月
 
 

ZFS ファイルシステムの管理

ZFS ファイルシステムの情報を表示する

システムのインストールのあとで、ZFS ストレージプールと ZFS ファイルシステムの情報を確認します。

zpool status コマンドで ZFS ストレージプールの情報を表示します。

zfs list コマンドで ZFS ファイルシステムの情報を表示します。

インストール後の最初の BE の確認を参照してください。

ZFS ファイルシステム領域の報告に関する問題の解決

利用可能なプールおよびファイルシステムの領域を特定するための zpool list および zfs list コマンドは、df および du コマンドより改善されています。旧バージョンのコマンドでは、プールおよびファイルシステムの領域を簡単に識別できず、下位のファイルシステムまたはスナップショットによって消費される領域の詳細を表示できません。

たとえば、次のルートプール (rpool) には 5.46G バイトが割り当て済みで、68.5G バイトが空き領域です。

# zpool list rpool
NAME   SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
rpool   74G  5.46G  68.5G   7%  1.00x  ONLINE  -

次の例に示すように、個々のファイルシステムの USED 列を確認することにより、プール領域の数値とファイルシステム領域の数値を比較すると、プールの領域が占める割合がわかります。

# zfs list -r rpool
NAME                      USED  AVAIL  REFER  MOUNTPOINT
rpool                    5.41G  67.4G  74.5K  /rpool
rpool/ROOT               3.37G  67.4G    31K  legacy
rpool/ROOT/solaris       3.37G  67.4G  3.07G  /
rpool/ROOT/solaris/var    302M  67.4G   214M  /var
rpool/dump               1.01G  67.5G  1000M  -
rpool/export             97.5K  67.4G    32K  /rpool/export
rpool/export/home        65.5K  67.4G    32K  /rpool/export/home
rpool/export/home/admin  33.5K  67.4G  33.5K  /rpool/export/home/admin
rpool/swap               1.03G  67.5G  1.00G  -

ZFS ストレージプール領域の報告に関する問題の解決

zpool list コマンドによって報告される SIZE 値は、通常、プール内の物理ディスク領域の大きさですが、プールの冗長性レベルに応じて異なります。zfs list コマンドは、使用可能な領域のうち、ファイルシステムで利用できる領域を示します。これは、ディスク領域から ZFS プール冗長性メタデータオーバーヘッド (ある場合) を差し引いたものです。詳細は、次の例を参照してください。

  • 非冗長性ストレージプール – 136G バイトの 1 つのディスクで作成されています。zpool list コマンドは SIZE および初期 FREE 値を 136G バイトとして報告します。次の例に示すように、zfs list コマンドによって報告される初期 AVAIL 領域は、プールメタデータオーバーヘッドが少量あるため 134G バイトです。

    # zpool create tank c0t6d0
    # zpool list tank
    NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
    tank   136G  95.5K   136G     0%  1.00x  ONLINE  -
    # zfs list tank
    NAME   USED  AVAIL  REFER  MOUNTPOINT
    tank    72K   134G    21K  /tank
  • ミラー化されたストレージプール – 136G バイトの 2 つのディスクで作成されています。zpool list コマンドは SIZE を 136G バイトおよび初期 FREE 値を 136G バイトと報告します。この報告は、デフレートされた領域値と呼ばれます。次の例に示すように、zfs list コマンドによって報告される初期 AVAIL 領域は、プールメタデータオーバーヘッドが少量あるため 134G バイトです。

    # zpool create tank mirror c0t6d0 c0t7d0
    # zpool list tank
    NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
    tank   136G  95.5K   136G     0%  1.00x  ONLINE  -
    # zfs list tank
    NAME   USED  AVAIL  REFER  MOUNTPOINT
    tank    72K   134G    21K  /tank
  • RAID-Z ストレージプール – 136G バイトの 3 つのディスクで作成されています。zpool list コマンドは SIZE を 408G バイトおよび初期 FREE 値を 408G バイトと報告します。この報告は、インフレートされたディスク領域値と呼ばれます。パリティー情報などの冗長性オーバーヘッドが含まれています。zfs list コマンドによって報告される初期 AVAIL 領域は、プール冗長性オーバーヘッドのため 133G バイトです。次の例は RAIDZ-2 プールを作成しています。

    # zpool create tank raidz2 c0t6d0 c0t7d0 c0t8d0
    # zpool list tank
    NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
    tank   408G   286K   408G     0%  1.00x  ONLINE  -
    # zfs list tank
    NAME   USED  AVAIL  REFER  MOUNTPOINT
    tank  73.2K   133G  20.9K  /tank

ZFS ファイルシステムを利用可能にする

ZFS ファイルシステムを利用可能にする方法は、Oracle Solaris 10 リリースと次の点で似ています。

  • ZFS ファイルシステムは、作成時に自動的にマウントされ、システムのブート時に自動的に再マウントされます。

  • ZFS ファイルシステムに旧バージョンのマウントを作成する場合を除き、ZFS ファイルシステムをマウントするために /etc/vfstab ファイルを変更する必要はありません。旧バージョンのマウントを使用するよりも、ZFS ファイルシステムを自動マウントすることを推奨します。

  • ファイルシステムを共有するために、/etc/dfs/dfstab ファイルを変更する必要はありません。ZFS ファイルシステムの共有の変更点を参照してください。

  • UFS ルートと同様に、スワップデバイスは /etc/vfstab ファイルにエントリを持つ必要があります。

  • NFS 共有を使用することで、Oracle Solaris 10 システムと Oracle Solaris 11 システムの間でファイルシステムを共有できます。

  • NFS または SMB 共有を使用することで、Oracle Solaris 11 システム間でファイルシステムを共有できます。

  • Oracle Solaris 10 システムから ZFS ストレージプールをエクスポートしたあと、それを Oracle Solaris 11 システムにインポートできます。

ファイルシステムのモニタリング

ファイルシステムのモニタリングおよびファイルシステム操作に関するレポートに、fsstat コマンドを使用できます。異なる種類のアクティビティーをレポートするいくつかのオプションがあります。たとえば、マウントポイント別またはファイルシステムタイプ別に情報を表示できます。次の例では、fsstat コマンドは、ZFS モジュールが最初にロードされた時点からの ZFS ファイルシステムのすべての操作を表示します。

$ fsstat zfs
new  name   name  attr  attr lookup rddir  read read  write write
file remov  chng   get   set    ops   ops   ops bytes   ops bytes
268K  145K 93.6K 28.0M 71.1K   186M 2.74M 12.9M 56.2G 1.61M 9.46G zfs

その他の例については、fsstat(1M) を参照してください。

ZFS とアプリケーションの間でのメモリーの管理

user_reserve_hint_pct tunable パラメータは、アプリケーションのメモリー使用に関するヒントをシステムに提供します。このヒントは、アプリケーションでより多くのメモリーを使用できるように、ZFS Adaptive Replacement Cache (ARC) の増加を制限するために使用されます。このパラメータの使用については、https://support.oracle.com/ にある Oracle Solaris 11.2 での ZFS とアプリケーションの間でのメモリーの管理に関するドキュメント (Doc ID 1663862.1) を参照してください。

NFS nfsmapid 構文の変更

nfsmapid サービスを変更するための構文 (/etc/nsswitch.conf ファイル内の passwd および group エントリを使用して NFSv4 ユーザーおよびグループ ID をマッピングする) が変更されています。

nfsmapid サービスは次のとおりです。

# svcs mapid
STATE          STIE    FMRI
online         Apr_25   svc:/network/nfs/mapid:default

次のようにサービスインスタンスを変更します。

# svccfg -s svc:/network/nfs/mapid:default
svc:/network/nfs/mapid:default> listprop
nfs-props                          application
nfs-props/nfsmapid_domain         astring     fooold.com
general                            framework
general/complete                  astring
general/enabled                   boolean     false
restarter                          framework            NONPERSISTENT
restarter/logfile                 astring     /var/svc/log/network-nfs-mapid:default.log
restarter/contract                count       137
restarter/start_pid               count       1325
restarter/start_method_timestamp  time        1366921047.240441000
restarter/start_method_waitstatus integer     0
restarter/auxiliary_state         astring     dependencies_satisfied
restarter/next_state              astring     none
restarter/state                   astring     online
restarter/state_timestamp         time        1366921047.247849000
general_ovr                        framework            NONPERSISTENT
general_ovr/enabled               boolean     true
svc:/network/nfs/mapid:default> setprop nfs-props/nfsmapid_domain = newfoo.com
svc:/network/nfs/mapid:default> listprop
nfs-props                          application
nfs-props/nfsmapid_domain         astring     foonew.com
.
.
.
svc:/network/nfs/mapid:default> exit
# svcadm refresh svc:/network/nfs/mapid:default

ZFS ファイルシステムの共有の変更点

Oracle Solaris 10 では、sharenfs または sharesmb プロパティーを設定して ZFS ファイルシステム共有を作成して公開します。または、レガシーの share コマンドを使用できます。Oracle Solaris 11 11/11 では、ファイル共有が強化され、コマンド構文が変更されました。この変更の詳細についてはOracle Solaris 11.2 での ZFS ファイルシステムの管理 の旧バージョンの ZFS 共有の構文を参照してください。

    Oracle Solaris 11.1 以降、ZFS ファイル共有の次の機能拡張が行われました。

  • 共有の構文は簡素化されています。ファイルシステムを共有するには、share.nfs または share.smb プロパティーを次のように設定します。

    # zfs set share.nfs=on tank/home
  • 子孫ファイルシステムへの共有プロパティーの継承の向上をサポート。前の例の share.nfs プロパティー値は、次の例に示すように、すべての子孫ファイルシステムに継承されます。

    # zfs create tank/home/userA
    # zfs create tank/home/userB
  • 次のように、追加のプロパティー値を指定するか、既存のファイルシステム共有の既存のプロパティー値を変更します。

    # zfs set share.nfs.nosuid=on tank/home/userA

    これらの追加のファイル共有の改善は、プールバージョン 34 と関連しています。Oracle Solaris 11.2 での ZFS ファイルシステムの管理 の新しい ZFS 共有構文を参照してください。

ZFS 共有の移行の問題

    次の共有の移行の問題を確認してください。

  • Oracle Solaris 11 システムの後続の Oracle Solaris 11 リリースへのアップグレード – このリリースでのプロパティーの変更のために古い BE にブートする場合、ZFS 共有は正しくなくなります。ZFS 以外の共有は影響を受けません。古い BE でブートする予定がある場合は、ZFS データセットで共有構成を復元できるように、pkg update 操作の前に既存の共有構成のコピーを保存してください。

      次の追加情報を確認してください。

    • 古い BE で、sharemgr show -vp コマンドを使用して、すべての共有およびそれらの構成を一覧表示します。

    • zfs get sharenfs filesystem コマンドおよび zfs sharesmb filesystem コマンドを使用して、共有プロパティーの値を取得します。

    • 古い BE でブートする場合は、sharenfs および sharesmb プロパティーを元の値にリセットします。

  • 旧バージョンの共有解除動作unshare –a コマンドまたは unshareall コマンドを使用すると、共有の公開が解除されますが、SMF 共有リポジトリは更新されません。既存の共有を再度共有しようとすると、共有リポジトリの競合がチェックされ、エラーメッセージが表示されます。

ZFS データの複製解除の要件

複製解除 (dedup) プロパティーを使用して、ZFS ファイルシステムから冗長なデータを削除できます。ファイルシステムで dedup プロパティーが有効になっている場合、重複データブロックが同期的に削除されます。次の例に示すように、結果は一意のデータのみが格納され、共通のコンポーネントはファイル間で共有されます。

# zfs set dedup=on tank/home

次の手順を実行してシステムがデータの複製解除をサポートできるかどうかを判断するまでは、本稼働システムに常駐するファイルシステムで dedup プロパティーを有効にしないでください。

  1. 複製解除による領域の節約がデータに有益であるかどうかを判断します。データを複製解除できない場合、dedup を有効にしても無駄です。次のコマンドを実行すると、著しく大量のメモリーが使用されます。

    # zdb -S tank
    Simulated DDT histogram:
    bucket              allocated                       referenced
    ______   ______________________________   ______________________________
    refcnt   blocks   LSIZE   PSIZE   DSIZE   blocks   LSIZE   PSIZE   DSIZE
    ------   ------   -----   -----   -----   ------   -----   -----   -----
    1    2.27M    239G    188G    194G    2.27M    239G    188G    194G
    2     327K   34.3G   27.8G   28.1G     698K   73.3G   59.2G   59.9G
    4    30.1K   2.91G   2.10G   2.11G     152K   14.9G   10.6G   10.6G
    8    7.73K    691M    529M    529M    74.5K   6.25G   4.79G   4.80G
    16      673   43.7M   25.8M   25.9M    13.1K    822M    492M    494M
    32      197   12.3M   7.02M   7.03M    7.66K    480M    269M    270M
    64       47   1.27M    626K    626K    3.86K    103M   51.2M   51.2M
    128       22    908K    250K    251K    3.71K    150M   40.3M   40.3M
    256        7    302K     48K   53.7K    2.27K   88.6M   17.3M   19.5M
    512        4    131K   7.50K   7.75K    2.74K    102M   5.62M   5.79M
    2K        1      2K      2K      2K    3.23K   6.47M   6.47M   6.47M
    8K        1    128K      5K      5K    13.9K   1.74G   69.5M   69.5M
    Total    2.63M    277G    218G    225G    3.22M    337G    263G    270G
    
    dedup = 1.20, compress = 1.28, copies = 1.03, dedup * compress / copies = 1.50

    推定される dedup 率が 2 より大きい場合は、複製解除によって領域が節約される可能性があります。

    この例では、dedup 率 (dedup = 1.20) が 2 より小さいため、複製解除の有効化は推奨されません。

  2. システムに複製解除をサポートするための十分なメモリーがあることを次のように確認します。

    • コア内の各複製解除テーブルエントリは、およそ 320 バイトです。

    • 割り当てられているブロック数に 320 を掛けます。

      in-core DDT size = 2.63M x 320 = 841.60M
  3. 複製解除のパフォーマンスは、複製解除テーブルがメモリーに収まる場合に最適になります。テーブルをディスクに書き込む必要がある場合は、パフォーマンスが低下します。十分なメモリーリソースがない状態でファイルシステムに対する複製解除を有効にすると、ファイルシステム関連の操作時にシステム性能が低下する可能性があります。たとえば、十分なメモリーリソースがない状態で、dedup が有効になっている大容量のファイルシステムを削除すると、システム性能に影響が出る可能性があります。