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