第15章 クォータによるストレージ領域の使用量の制限

ディスククォータを実装して、ユーザーまたはグループに利用可能なディスク領域のサイズを制限できます。ユーザーがディスク領域を過剰に消費したり、パーティションが満杯になる前に、システム管理者に通知を出す警告レベルを定義することもできます。

15.1. ディスククォータ

ほとんどのコンピューティング環境では、ディスク領域は無限ではありません。クォータサブシステムは、ディスク領域の使用量を制御するメカニズムを提供します。

ディスククォータは、ローカルファイルシステムの個々のユーザーおよびユーザーグループに設定できます。これにより、ユーザー固有のファイル (電子メールなど) に割り当てられる領域を、ユーザーが作業するプロジェクトに割り当てられた領域とは別に管理できます。クォータサブシステムは、割り当てられた制限を超えるとユーザーに警告しますが、現在の作業に追加領域を許可します (ハード制限/ソフト制限)。

クォータが実装されている場合は、クォータを超過しているかどうかを確認して、クォータが正しいことを確認する必要があります。ユーザーが繰り返しクォータを超過するか、常にソフト制限に達している場合、システム管理者は、ユーザーが使用するディスク領域を減らすか、ユーザーのディスククォータを増やす方法を決定するのを助けることができます。

クォータは、以下を制御するように設定できます。

  • 消費されるディスクブロックの数。
  • UNIX ファイルシステムのファイルに関する情報を含むデータ構造である inode の数。inode はファイル関連の情報を保存するため、作成可能なファイルの数を制御できます。

15.1.1. xfs_quota ツール

xfs_quota ツールを使用して、XFS ファイルシステム上のクォータを管理できます。さらに、有効なディスク使用量のアカウンティングシステムとして、制限の強制適用をオフにして XFS ファイルシステムを使用できます。

XFS クォータシステムは、他のファイルシステムとはさまざまな点で異なります。最も重要な点として、XFS はクォータ情報をファイルシステムのメタデータとみなし、ジャーナリングを使用して一貫性のより高いレベルの保証を提供します。

関連情報
  • man ページの xfs_quota(8)

15.2. XFS ディスククォータの管理

xfs_quota ツールを使用して XFS でクォータを管理し、プロジェクトで制御されるディレクトリーに制限を設定できます。

汎用クォータ設定ツール (quotarepquotaedquota など) を使用して XFS クォータを操作することもできます。ただし、このツールは XFS プロジェクトクォータでは使用できません。

重要

Red Hat は、他の利用可能なすべてのツールで xfs_quota を使用することを推奨します。

15.2.1. XFS でのファイルシステムクォータ管理

XFS クォータサブシステムは、ディスク領域 (ブロック) およびファイル (inode) の使用量の制限を管理します。XFS クォータは、ユーザー、グループ、ディレクトリーレベル、またはプロジェクトレベルでこれらの項目の使用を制御または報告します。グループおよびプロジェクトのクォータは、古いデフォルト以外の XFS ディスクフォーマットでのみ相互に排他的です。

ディレクトリーまたはプロジェクトごとに管理する場合、XFS は特定のプロジェクトに関連付けられたディレクトリー階層のディスク使用量を管理します。

15.2.2. XFS のディスククォータの有効化

この手順では、XFS ファイルシステムのユーザー、グループ、およびプロジェクトのディスククォータを有効にします。クォータを有効にすると、xfs_quota ツールを使用して制限を設定し、ディスク使用量を報告できます。

手順

  1. ユーザーのクォータを有効にします。

    # mount -o uquota /dev/xvdb1 /xfs

    uquotauqnoenforce に置き換えて、制限を強制適用せずに使用状況の報告を可能にします。

  2. グループのクォータを有効にします。

    # mount -o gquota /dev/xvdb1 /xfs

    gquotagqnoenforce に置き換えて、制限を強制適用せずに使用状況の報告を可能にします。

  3. プロジェクトのクォータを有効にします。

    # mount -o pquota /dev/xvdb1 /xfs

    pquotapqnoenforce に置き換え、制限を強制適用せずに使用状況の報告を可能にします。

  4. または、/etc/fstab ファイルにクォータマウントオプションを追加します。以下の例は、XFS ファイルシステムでユーザー、グループ、およびプロジェクトのクォータを有効にする /etc/fstab ファイルのエントリーを示しています。以下の例では、読み取り/書き込みパーミッションでファイルシステムもマウントします。

    # vim /etc/fstab
    /dev/xvdb1    /xfs    xfs    rw,quota       0  0
    /dev/xvdb1    /xfs    xfs    rw,gquota      0  0
    /dev/xvdb1    /xfs    xfs    rw,prjquota    0  0

    関連情報

    • man ページの mount(8)
    • man ページの xfs_quota(8)

15.2.3. XFS 使用量の報告

xfs_quota ツールを使用して制限を設定し、ディスク使用量を報告できます。xfs_quota は、デフォルトでは対話形式で基本モードで実行されます。基本モードのサブコマンドは使用量を報告するだけで、すべてのユーザーが使用できます。

前提条件
手順
  1. xfs_quota シェルを起動します。

    # xfs_quota
  2. 指定したユーザーの使用状況および制限を表示します。

    # xfs_quota> quota username
  3. ブロックおよび inode の空きおよび使用済みの数を表示します。

    # xfs_quota> df
  4. help コマンドを実行して、xfs_quota で利用可能な基本的なコマンドを表示します。

    # xfs_quota> help
  5. q を指定して xfs_quota を終了します。

    # xfs_quota> q
関連情報
  • man ページの xfs_quota(8)

15.2.4. XFS クォータ制限の変更

-x オプションを指定して xfs_quota ツールを起動し、エキスパートモードを有効にして、クォータシステムを変更できる管理者コマンドを実行します。このモードのサブコマンドは、制限を実際に設定することができるため、昇格した特権を持つユーザーのみが利用できます。

前提条件
手順
  1. エキスパートモードを有効にするには、-x オプションを指定して xfs_quota シェルを起動します。

    # xfs_quota -x
  2. 特定のファイルシステムのクォータ情報を表示します。

    # xfs_quota> report /path

    たとえば、(/dev/blockdevice の) /home のクォータレポートのサンプルを表示するには、report -h /home コマンドを使用します。これにより、以下のような出力が表示されます。

    User quota on /home (/dev/blockdevice)
    Blocks
    User ID      Used   Soft   Hard Warn/Grace
    ---------- ---------------------------------
    root            0      0      0  00 [------]
    testuser   103.4G      0      0  00 [------]
  3. クォータの制限を変更します。

    # xfs_quota> limit isoft=500m ihard=700m user /path

    たとえば、ホームディレクトリーが /home/john のユーザー johnに対して、inode 数のソフト制限およびハード制限をそれぞれ 500 と 700 に設定するには、次のコマンドを使用します。

    # xfs_quota -x -c 'limit isoft=500 ihard=700 john' /home/

    この場合は、マウントされた xfs ファイルシステムである mount_point を渡します。

  4. help コマンドを実行して、xfs_quota -x で利用可能なエキスパートコマンドを表示します。

    # xfs_quota> help
    関連情報
    • man ページの xfs_quota(8)

15.2.5. XFS のプロジェクト制限の設定

以下の手順では、プロジェクトが制御するディレクトリーに制限を設定します。

手順
  1. プロジェクトが制御するディレクトリーを /etc/projects に追加します。たとえば、以下は一意の ID が 11 の /var/log パスを /etc/projects に追加します。プロジェクト ID には、プロジェクトにマッピングされる任意の数値を指定できます。

    # echo 11:/var/log >> /etc/projects
  2. /etc/projid にプロジェクト名を追加して、プロジェクト ID をプロジェクト名にマップします。たとえば、以下は、前のステップで定義されたように Logs というプロジェクトをプロジェクト ID 11 に関連付けます。

    # echo Logs:11 >> /etc/projid
  3. プロジェクトのディレクトリーを初期化します。たとえば、以下はプロジェクトディレクトリー /var を初期化します。

    # xfs_quota -x -c 'project -s logfiles' /var
  4. 初期化したディレクトリーでプロジェクトのクォータを設定します。

    # xfs_quota -x -c 'limit -p bhard=lg logfiles' /var
    関連情報
    • man ページの xfs_quota(8)
    • man ページの projid(5)
    • man ページの projects(5)

15.3. ext3 および ext4 のディスククォータの管理

ディスククォータを割り当てる前に、システムでディスククォータを有効にする必要があります。ユーザーごと、グループごと、またはプロジェクトごとにディスククォータを割り当てることができます。ただし、ソフト制限が設定されている場合は、猶予期間として知られる設定可能な期間として、これらのクォータを超過できます。

15.3.1. クォータツールのインストール

ディスククォータを実装するには、RPM パッケージ quota をインストールする必要があります。

手順

  • quota パッケージをインストールします。
# yum install quota

15.3.2. ファイルシステム作成でクォータ機能の有効化

この手順では、ファイルシステムの作成時にクォータを有効にする方法を説明します。

手順

  1. ファイルシステムの作成時にクォータを有効にします。

    # mkfs.ext4 -O quota /dev/sda
    注記

    デフォルトでは、ユーザーとグループのクォータのみが有効になり、初期化されます。

  2. ファイルシステムの作成時にデフォルトを変更します。

    # mkfs.ext4 -O quota -E quotatype=usrquota:grpquota:prjquota /dev/sda
  3. ファイルシステムをマウントします。

    # mount /dev/sda

関連情報

詳細は、man ページの ext4 を参照してください。

15.3.3. 既存のファイルシステムでのクォータ機能の有効化

この手順では、tune2fs コマンドを使用して、既存のファイルシステムでクォータ機能を有効にする方法を説明します。

手順

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

    # umount /dev/sda
  2. 既存のファイルシステムでクォータを有効にします。

    # tune2fs -O quota /dev/sda
    注記

    デフォルトでは、ユーザーとグループのクォータのみが初期化されます。

  3. デフォルトを変更します。

    # tune2fs -Q usrquota,grpquota,prjquota /dev/sda
  4. ファイルシステムをマウントします。

    # mount /dev/sda

関連情報

詳細は、man ページの ext4 を参照してください。

15.3.4. クォータ強制適用の有効化

クォータアカウンティングは、追加のオプションを使用せsずにファイルシステムをマウントした後にデフォルトで有効になりますが、クォータの強制適用は行いません。

前提条件

  • クォータ機能が有効になり、デフォルトのクォータが初期化されます。

手順

  • ユーザークォータに対して、quotaon によるクォータの強制適用を有効にします。

    # mount /dev/sda /mnt
    # quotaon /mnt
    注記

    クォータの強制適用は、マウントオプション usrquotagrpquota、または prjquota を使用して、マウント時に有効にできます。

    # mount -o usrquota,grpquota,prjquota /dev/sda /mnt
  • すべてのファイルシステムのユーザー、グループ、およびプロジェクトのクォータを有効にします。

    # quotaon -vaugP
    • -u オプション、-g オプション、または -P オプションがいずれも指定されていないと、ユーザーのクォータのみが有効になります。
    • -g オプションのみを指定すると、グループのクォータのみが有効になります。
    • -P オプションのみを指定すると、プロジェクトのクォータのみが有効になります。
  • /home などの特定のファイルシステムのクォータを有効にします。

    # quotaon -vugP /home

関連情報

  • man ページの quotaon(8) を参照してください。

15.3.5. ユーザーごとにクォータの割り当て

ディスククォータは、edquota コマンドでユーザーに割り当てられます。

注記

EDITOR 環境変数により定義されたテキストエディターは、edquota により使用されます。エディターを変更するには、~/.bash_profile ファイルの EDITOR 環境変数を、使用するエディターのフルパスに設定します。

前提条件

  • ユーザーは、ユーザークォータを設定する前に存在する必要があります。

手順

  1. ユーザーにクォータを割り当てます。

    # edquota username

    username を、クォータを割り当てるユーザーに置き換えます。

    たとえば、/dev/sda パーティションのクォータを有効にし、edquota testuser コマンドを実行すると、システムに設定したデフォルトエディターに以下が表示されます。

    Disk quotas for user testuser (uid 501):
    Filesystem   blocks   soft   hard   inodes   soft   hard
    /dev/sda      44043      0      0    37418      0      0
  2. 必要な制限を変更します。

    いずれかの値が 0 に設定されていると、制限は設定されません。テキストエディターでこれらを変更します。

    たとえば、以下は、testuser のソフトブロック制限とハードブロック制限をそれぞれ 50000 と 55000 に設定していることを示しています。

    Disk quotas for user testuser (uid 501):
    Filesystem   blocks   soft   hard   inodes   soft   hard
    /dev/sda      44043  50000  55000    37418      0      0
    • 最初の列は、クォータが有効になっているファイルシステムの名前です。
    • 2 列目には、ユーザーが現在使用しているブロック数が示されます。
    • その次の 2 列は、ファイルシステム上のユーザーのソフトブロック制限およびハードブロック制限を設定するのに使用されます。
    • inodes 列には、ユーザーが現在使用している inode 数が表示されます。
    • 最後の 2 列は、ファイルシステムのユーザーに対するソフトおよびハードの inode 制限を設定するのに使用されます。

      • ハードブロック制限は、ユーザーまたはグループが使用できる最大ディスク容量 (絶対値) です。この制限に達すると、それ以上のディスク領域は使用できなくなります。
      • ソフトブロック制限は、使用可能な最大ディスク容量を定義します。ただし、ハード制限とは異なり、ソフト制限は一定時間超過する可能性があります。この時間は 猶予期間 として知られています。猶予期間の単位は、秒、分、時間、日、週、または月で表されます。

検証手順

  • ユーザーのクォータが設定されていることを確認します。

    # quota -v testuser
    Disk quotas for user testuser:
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
    /dev/sda      1000*  1000   1000             0      0      0

15.3.6. グループごとにクォータの割り当て

グループごとにクォータを割り当てることができます。

前提条件

  • グループは、グループクォータを設定する前に存在している必要があります。

手順

  1. グループクォータを設定します。

    # edquota -g groupname

    たとえば、devel グループのグループクォータを設定するには、以下を実行します。

    # edquota -g devel

    このコマンドにより、グループの既存クォータがテキストエディターに表示されます。

    Disk quotas for group devel (gid 505):
    Filesystem   blocks  soft  hard  inodes  soft  hard
    /dev/sda     440400     0     0   37418     0     0
  2. 制限を変更し、ファイルを保存します。

検証手順

  • グループクォータが設定されていることを確認します。

    # quota -vg groupname

15.3.7. プロジェクトごとにクォータの割り当て

以下の手順では、プロジェクトごとにクォータを割り当てます。

前提条件

  • プロジェクトクォータがファイルシステムで有効になっている。

手順

  1. プロジェクトが制御するディレクトリーを /etc/projects に追加します。たとえば、以下は一意の ID が 11 の /var/log パスを /etc/projects に追加します。プロジェクト ID には、プロジェクトにマッピングされる任意の数値を指定できます。

    # echo 11:/var/log >> /etc/projects
  2. /etc/projid にプロジェクト名を追加して、プロジェクト ID をプロジェクト名にマップします。たとえば、以下は、前のステップで定義されたように Logs というプロジェクトをプロジェクト ID 11 に関連付けます。

    # echo Logs:11 >> /etc/projid
  3. 必要な制限を設定します。

    # edquota -P 11
    注記

    プロジェクトは、プロジェクト ID (この場合は 11)、または名前 (この場合は Logs) で選択できます。

  4. quotaon を使用して、クォータの強制適用を有効にします。

    「クォータ強制適用の有効化」を参照してください。

検証手順

  • プロジェクトのクォータが設定されていることを確認します。

    # quota -vP 11
    注記

    プロジェクト ID またはプロジェクト名のいずれかで検証できます。

関連情報

  • man ページの edquota(8)
  • man ページの projid(5)
  • man ページの projects(5)

15.3.8. ソフト制限の猶予期間の設定

特定のクォータにソフト制限がある場合、猶予期間 (ソフト制限を超過できる期間) を編集できます。ユーザー、グループ、またはプロジェクトの猶予期間を設定できます。

手順

  • 猶予期間を編集します。

    # edquota -t
重要

他の edquota コマンドは特定のユーザー、グループ、またはプロジェクトのクォータで機能しますが、-t オプションはクォータが有効になっているすべてのファイルシステムで機能します。

関連情報

  • man ページの edquota(8)

15.3.9. ファイルシステムのクォータをオフにする

quotaoff を使用して、指定されたファイルシステムでディスククォータの強制適用をオフにします。クォータアカウンティングは、このコマンド実行後も有効のままになります。

手順

  • すべてのユーザーとグループのクォータをオフにするには、次のコマンドを実行します。

    # quotaoff -vaugP
    • -u オプション、-g オプション、または -P オプションがいずれも指定されていないと、ユーザーのクォータのみが無効になります。
    • -g オプションのみを指定すると、グループクォータのみが無効になります。
    • -P オプションのみを指定すると、プロジェクトのクォータのみが無効になります。
    • -v スイッチにより、コマンドの実行時に詳細なステータス情報が表示されます。

関連情報

  • man ページの quotaoff(8) を参照してください。

15.3.10. ディスククォータに関するレポート

repquota ユーティリティーを使用してディスククォータレポートを作成できます。

手順

  1. repquota コマンドを実行します。

    # repquota

    たとえば、repquota /dev/sda コマンドは次のような出力を生成します。

    *** Report for user quotas on device /dev/sda
    Block grace time: 7days; Inode grace time: 7days
    			Block limits			File limits
    User		used	soft	hard	grace	used	soft	hard	grace
    ----------------------------------------------------------------------
    root      --      36       0       0              4     0     0
    kristin   --     540       0       0            125     0     0
    testuser  --  440400  500000  550000          37418     0     0
  2. クォータが有効化された全ファイルシステムのディスク使用状況レポートを表示します。

    # repquota -augP

各ユーザーに続いて表示される -- 記号で、ブロックまたは inode の制限を超えたかどうかを簡単に判断できます。ソフト制限のいずれかを超えると、対応する - 文字の代わりに + 文字が表示されます。最初の - 文字はブロック制限を表し、次の文字は inode 制限を表します。

通常、grace 列は空白です。ソフト制限が超過した場合、その列には猶予期間に残り時間量に相当する時間指定が含まれます。猶予期間の期間が過ぎると、その時間には 何も表示されません

関連情報

詳細は、man ページの repquota(8) を参照してください。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。