Go to main content

Oracle® Solaris 11.4 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2018 年 9 月
 
 

I/O 帯域幅制限を設定する

ZFS データセットのサイズを設定することによって、異なる ZFS クライアントにサービスを提供するために複数のボリュームを含む構成で、領域の適切な割り当てを行うことができます。ただし、データセット内の I/O 操作がほかのデータセット内でのこの操作を上回る場合、特定のデータセットの ZFS クライアントがシステムの帯域幅を引き続き独占する場合があります。帯域幅の使用を独占すると、実質的に、ほかのデータセットのほかの ZFS クライアントがデータにアクセスできなくなります。読み取りおよび書き込みの制限プロパティーを使用することで、データセット内の I/O 操作に制限を割り当て、使用するそれぞれのクライアントのためにすべてのデータセットに帯域幅を提供できます。

  • writelimit - データセットがディスクに書き込み可能な 1 秒間の最大バイト数を設定します

  • readlimit - データセットがディスクから読み取り可能な 1 秒間の最大バイト数を設定します

  • defaultwritelimit - データセットの子孫がディスクに書き込み可能な 1 秒間の最大バイト数を設定します

  • defaultreadlimit - データセットの子孫がディスクから読み取り可能な 1 秒間の最大バイト数を設定します

  • effectivewritelimit - データセットがディスクに書き込み可能な 1 秒間の最大バイト数を報告します

  • effectivereadlimit - データセットがディスクから読み取り可能な 1 秒間の最大バイト数を報告します


注 -  これらの値は保証されている帯域幅ではなく、実際の帯域幅は、階層内のほかのデータセットでの使用量や設定されている制限など、ほかの要因によって制限されることがあります。これらの制限が適用されるまでに数秒かかることがあります。

データセットの子孫のデフォルト制限は、writelimit プロパティーまたは readlimit プロパティーで上書きできます。任意の値を設定できますが、子孫データセット上のスループットは親データセットのレートよりも大きくなりません。このプロパティーの最小値は 500K です。

$ zfs get -r writelimit,defaultwritelimit,effectivewritelimit users/home
NAME                  PROPERTY              VALUE     SOURCE
users/home            writelimit            default   default
users/home            defaultwritelimit     none      default
users/home            effectivewritelimit   none      local
users/home/cindy      writelimit            default   default
users/home/cindy      defaultwritelimit     none      default
users/home/cindy      effectivewritelimit   none      local

writelimit プロパティーまたは readlimit プロパティーを none に設定して、親データセットに設定された制限を継承できます。また、デフォルトに設定して、親データセットに設定されたデフォルト制限を継承できます。

使用例 33  帯域幅制限プロパティーのデフォルト設定

新しいデータセットが作成された場合、新しいデータセットは親データセットによって確立された帯域幅制限を使用します。この例では、親データセットには帯域幅制限プロパティーが設定されていません。

$ zfs get -r writelimit,defaultwritelimit,effectivewritelimit users/home
NAME                 PROPERTY              VALUE     SOURCE
users/home           writelimit            default   default
users/home           defaultwritelimit     none      default
users/home           effectivewritelimit   none      local
users/home/neil      writelimit            default   default
users/home/neil      defaultwritelimit     none      default
users/home/neil      effectivewritelimit   none      local

この例では親の defaultwritelimit プロパティーが 500K に設定されているため、これが子孫データセットに対する実質的な書き込み制限です。

$ zfs get -r writelimit,defaultwritelimit,effectivewritelimit users/home
NAME                 PROPERTY              VALUE     SOURCE
users/home           writelimit            1M        local
users/home           defaultwritelimit     500K      local
users/home           effectivewritelimit   1M        local
users/home/neil      writelimit            default   default
users/home/neil      defaultwritelimit     500K      inherited from users/home
users/home/neil      effectivewritelimit   500K      local
使用例 34  親データセットからの帯域幅制限プロパティーを使用する

デフォルトでは、子孫データセットは親の defaultwritelimit プロパティーおよび defaultreadlimit プロパティーに設定された帯域幅制限値を使用します。デフォルト設定の代わりに親データセットと同じ書き込み値を使用する場合、子孫データセット用の writelimit プロパティーを none に設定します。この場合、実質的な書き込み制限は、親データセットの writelimit プロパティーと同じだと報告されます。この例で、子孫データセットの実質的な書き込み制限は、親の実質的な書き込み制限である 1M であり、親データセットで設定されるデフォルトの書き込み制限である 500K ではありません。

$ zfs set writelimit=none users/home/cindy
$ zfs get -r writelimit,defaultwritelimit,effectivewritelimit users/home
NAME                  PROPERTY              VALUE    SOURCE
users/home            writelimit            1M       local
users/home            defaultwritelimit     500K     local
users/home            effectivewritelimit   1M       local
users/home/cindy      writelimit            none     local
users/home/cindy      defaultwritelimit     500K     inherited from users/home
users/home/cindy      effectivewritelimit   1M       local

この例では、子孫のプロパティーは、親データセットによって設定された書き込み制限で制限されます。子孫データセットには親よりも高い帯域幅の値は付与されません。

$ zfs create -o writelimit=2M users/home/mark
$ zfs get -r writelimit,defaultwritelimit,effectivewritelimit users/home
NAME                 PROPERTY              VALUE    SOURCE
users/home           writelimit            1M       local
users/home           defaultwritelimit     500K     local
users/home           effectivewritelimit   1M       local
users/home/mark      writelimit            2M       local
users/home/mark      defaultwritelimit     500K     inherited from users/home
users/home/mark      effectivewritelimit   1M       local