Solaris のシステム管理 (上級編)

第 17 章 ディスク割り当て制限の管理 (手順)

この章では、ディスクの割り当て制限を設定し管理する方法を示します。この章で説明する手順は次のとおりです。

ディスクの割り当て制限

ディスクの割り当て機能を使用することにより、システム管理者は、各ユーザーが使用できるディスク容量と i ノード数 (おおよそのファイル数に該当) を制限して UFS ファイルシステムを制御できます。このため、ディスク割り当て制限は、特に、ユーザーのホームディレクトリが存在するファイルシステムで便利です。公開ファイルシステムと /tmp ファイルシステムについてはこのディスク割り当て機能による利点はあまりありません。

ディスク割り当て制限の使用

一度割り当て制限を設定しても、それを変更して、ユーザーが使用できるディスク容量と i ノード数を調整できます。また、システムに変更が必要な場合は、それに合わせて割り当て制限を追加または削除できます。ディスク割り当て制限、またはディスク割り当て制限を超えることができる時間を変更する手順、個々のディスク割り当て制限を無効にする手順、あるいはディスク割り当て制限をファイルシステムから削除する手順については、割り当て制限の変更と削除を参照してください。

ディスク割り当て制限を監視できます。割り当て制限コマンドを使用することによりシステム管理者は、ファイルシステムでの割り当て制限を表示したり、割り当て制限を超えて使用しているユーザーを検索したりできます。これらのコマンドの使用方法については、割り当て制限のチェックを参照してください。

ディスク割り当て制限の弱い制限値と強い制限値の設定

弱い制限値と強い制限値の両方を設定できます。システムは、ユーザーが自分の強い制限値を超えることを許可しません。しかし、システム管理者は、ユーザーが一時的に超えることができる、弱い制限値を設定できます。弱い制限値は、強い制限値より小さくなければなりません。

いったんユーザーが弱い制限値を超えると、タイマーが起動します。タイマーが動いている間、ユーザーは弱い制限値を超えて操作できます。しかし、強い制限値は超えることができません。再びユーザーが弱い制限値を下回ると、タイマーはリセットされます。しかし、タイマーが期限切れになったときに、まだユーザーの使用率が弱い制限値を超えていた場合、弱い制限値は、強い制限値として実施されます。デフォルトでは、弱い制限値のタイマーは 7 日です。

repquota コマンドと quota コマンドの timeleft フィールドは、タイマーの値を示します。

たとえば、あるユーザーの弱い制限値が 10,000 ブロックで、強い制限値が 12,000 ブロックであると仮定します。そのユーザーのブロック使用率が 10,000 ブロックを超えて、7 日間のタイマーも期限切れになった場合、そのユーザーは自分の使用率が弱い制限値を下回るまで、それ以上のディスクブロックをそのファイルシステム上に割り当てることはできません。

ディスクブロックとファイル制限の相違

ファイルシステムは、ユーザーに 2 つの資源を提供します。データ用のブロックと、ファイル用の i ノードです。各ファイルは、1 つの i ノードを使用します。ファイルデータは、データブロック内に格納されます (通常は、1K バイトブロックで構成される)。

ディレクトリがなくても、ユーザーは空のファイルを作成することによって (ブロックを使用することなく)、自分の i ノードディスク割り当て制限を超過することができます。また、ユーザーは、ユーザーの割り当て制限のデータブロックをすべて消費するのに十分な大きさのファイルを 1 つ作成して、自分のブロックのディクス割り当て制限を超過した i ノードを 1 つ使用することができます。

ディスク割り当て制限の設定

割り当て制限を設定する一般的な手順は次のとおりです。

  1. 割り当て制限オプションを/etc/vfstab ファイルエントリに追加し、quotas ファイルをファイルシステムの最上位ディレクトリに作成して、システムをリブートするたびにディスクの割り当て制限が適用されるようにします。

  2. まず 1 人のユーザー用にディスク割り当て制限を作成したら、それをプロトタイプとして他のユーザー用にコピーできます。

  3. ディスク割り当て制限を有効にする前に、その割り当て制限と現在のディスク使用状況との整合性をチェックして、矛盾しないことを確認します。

  4. 最後に、1 つ以上のファイルシステムのディスク割り当て制限を有効にします。

上記手順の具体的な情報については、割り当て制限の設定 (作業マップ)を参照してください。

表 17–1 で、ディスク割り当て制限を設定するコマンドを説明します。

表 17–1 割り当て制限を行うコマンド

コマンド 

手順 

マニュアルページ 

edquota

各ユーザーの i ノード数とディスク容量に強い制限と弱い制限を設定する 

edquota(1M)

quotacheck

マウントされている各 UFS ファイルシステムを調べ、ファイルシステムのディスク割り当て制限ファイルに格納されている情報とファイルシステムの現在のディスク使用状況を比較し、矛盾を明らかにする 

quotacheck(1M)

quotaon

指定したファイルシステムの割り当て制限を有効にする 

quotaon(1M)

quota

マウントされているファイルシステムのユーザーの割り当て制限を表示し、割り当て制限が正しく設定されていることを確認する 

quota(1M)

割り当て制限設定のガイドライン

ユーザーの割り当て制限を設定する前に、各ユーザーに割り当てるディスク容量の大きさとファイル数を決定する必要があります。ファイルシステムの合計領域サイズを超えないようにする場合は、ファイルシステムの合計サイズをユーザー数に等分すればよいでしょう。たとえば、3 人のユーザーが 100M バイトのスライスを共有し、それぞれが同じディスク容量のサイズを必要とする場合は、各ユーザーに 33M バイトずつ割り当てます。

すべてのユーザーがそれぞれに割り当て制限を押し上げることがないような環境では、割り当て制限の合計がファイルシステムの合計サイズを超えるように個々の割り当て制限を設定することも可能です。たとえば、3 人のユーザーが 100M バイトのスライスを共有する場合は、各ユーザーに 40M バイトを割り当ててもよいということです。

あるユーザーについて edquota コマンドを使用して割り当て制限を決定すると、同じファイルシステム上の他のユーザーにも同じ割り当て制限プロトタイプとして利用できます。

割り当て制限を有効にする前に、まず UFS ファイルシステムの割り当て制限を構成し、各ユーザーの割り当て制限を設定して、 quotacheck コマンドを実行することによって、現在のディスク使用状況と割り当て制限ファイル間の整合性をチェックします。また、システムのリブートの頻度が低い場合は、quotacheck コマンドを定期的に実行します。

edquota により設定した割り当て制限は、quotaon コマンドを使用して有効にしなければ強制的に設定されません。割り当て制限ファイルを正しく構成したら、システムがリブートし、そのファイルシステムがマウントされるたびに、割り当て制限は自動的に有効になります。

割り当て制限の設定 (作業マップ)

作業 

説明 

参照先 

1. ファイルシステムの割り当て制限の構成 

/etc/vfstab を編集して、ファイルシステムがマウントされるたびに割り当て制限が有効になるようにする。また、quotas ファイルを作成する

割り当て制限用にファイルシステムを構成する方法

2. 1 ユーザー用の割り当て制限の設定 

edquota を使用して 1 ユーザーアカウント用にディスクと i ノードの割り当て制限を行う

1 ユーザーに割り当て制限を設定する方法

3. (省略可能) 複数ユーザーの割り当て制限の設定 

edquota コマンドを使用して、その他のユーザーアカウント用にプロトタイプの割り当て制限を適用する

複数ユーザーに割り当て制限を設定する方法

4. 整合性のチェック 

quotacheck を使用して、1 つまたは複数のファイルシステムの整合性について、現在の使用状況とディスクの割り当て制限を比較する

割り当て制限の整合性を確認する方法

5. 割り当て制限を有効にする 

quotaon を使用して、1 つまたは複数のファイルシステムの割り当て制限を有効にする

割り当て制限を有効にする方法

割り当て制限用にファイルシステムを構成する方法

  1. スーパーユーザーになります。

  2. /etc/vfstab ファイルを編集します。割り当て制限を設定しようとする各 UFS ファイルシステムの「mount options」フィールドに rq を追加します。

  3. 割り当て制限を格納しようとするファイルシステムのルートディレクトリに移動します。

  4. 次のように入力して、quotas というファイルを作成します。


    # touch quotas
    
  5. root にのみ、読み取り権/書き込み権を与えます。


    # chmod 600 quotas
    

次に進む手順

次の表を見て、次に進む手順を決めてください。

作業 

参照箇所 

1 ユーザーまたは複数ユーザー用の割り当て制限を設定する 

1 ユーザーに割り当て制限を設定する方法

複数ユーザーに割り当て制限を設定する方法

既存ファイルを持つファイルシステム上に割り当て制限を設定する場合は、quotacheck コマンドを実行する

割り当て制限の整合性を確認する方法

ファイルシステムの割り当て制限を有効にする 

割り当て制限を有効にする方法

例 — 割り当て制限用にファイルシステムを構成する

次の /etc/vfstab の例は、システム pluto /export/home ディレクトリが、ローカルシステムの NFS ファイルシステムとしてマウントされていることを示しています。割り当て制限が使用可能であるかは、mount options 列の下の rq エントリによってわかります。


#device           device   mount       FS    fsck   mount   mount
#to mount         to fsck  point       type  pass   at boot options
#
pluto:/export/home -       /export/home nfs    -     yes    rq

次の例は /etc/vfstab の内容で、割り当て制限が有効 (mount options 列の rq エントリで示される) なローカル UFSファイルシステムが /work ディレクトリにマウントされていることを示しています。


#device           device            mount  FS   fsck mount   mount
#to mount         to fsck           point  type pass at boot options
#
/dev/dsk/c0t4d0s0 /dev/rdsk/c0t4d0s0 /work ufs  3    yes     rq

1 ユーザーに割り当て制限を設定する方法

  1. スーパーユーザーになります。

  2. 割り当て制限エディタを使用して、quotas ファイルがファイルシステムのルートディレクトリにある各マウント済み UFS ファイルシステムに対して、1 行の割り当て制限情報を含む一時ファイルを作成します。


    # edquota username
    

    username は、割り当て制限を設定するユーザーです。

  3. 1K バイトディスクブロック数の弱い制限値と強い制限値、および i ノード数の弱い制限値と強い制限値を、それぞれ 0 (デフォルト) から各ファイルシステム用に指定されている割り当て値に変更します。

  4. ユーザーの割り当て制限を確認します。


    # quota -v username
    

    -v

    ディスク割り当て制限がある、マウント済みのファイルシステム上の、ユーザーのディスク割り当て制限情報を表示する 

    username

    ディスク割り当て制限を表示するユーザー名を指定する 

例 — 1 ユーザーに割り当て制限を設定する

次の例は、edquota コマンドで開いた一時ファイルの内容を示しています。このシステムでは、ルートディレクトリに quotas ファイルが含まれているマウント済みファイルシステムは、/files だけです。


fs /files blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)

次の例は、割り当て制限設定後の一時ファイルの上と同じ行を示しています。


fs /files blocks (soft = 50, hard = 60) inodes (soft = 90, hard = 100)

複数ユーザーに割り当て制限を設定する方法

  1. スーパーユーザーになります。

  2. 次のように割り当て制限エディタを使用して、すでにプロトタイプユーザー用に設定した割り当て制限を指定するその他のユーザーに適用します。


    # edquota -p prototype-user username ...
    

    prototype-user

    すでに割り当て制限を設定してあるアカウントのユーザー名 

    username ..

    1 人以上の追加アカウントのユーザー名を指定する 

例 — 複数ユーザーにプロトタイプ割り当て制限を設定する

次の例は、ユーザー bob に設定された割り当て制限をユーザー mary john に適用する方法を示しています。


# edquota -p bob mary john

割り当て制限の整合性を確認する方法

システムをリブートすると、quotacheck コマンドが自動的に実行されます。通常、 割り当て制限を設定したファイルシステムが空の場合、quotacheck コマンドを実行する必要はありません。ただし、既存ファイルを持つファイルシステム上に割り当て制限を設定した場合は、quotacheck コマンドを実行して、既存ファイルや既存 i ノードと割り当て制限データベースとを同期させる必要があります。

また、quotacheck コマンドを大規模ファイルシステムで実行するには、時間がかかることを考慮してください。


注 –

ディスクのデータの正確さを保つには、quotacheck コマンドを実行するとき、チェックするファイルシステムが他のユーザーによって使用できないようにしてください。


  1. スーパーユーザーになります。

  2. 次のように UFS ファイルシステム上の整合性チェックを実行します。


    # quotacheck [-va] filesystem 
    

    -v

    (省略可能) 特定のファイルシステム上の各ユーザーのディスク割り当て制限を示す 

    -a

    /etc/vfstab ファイルに rq エントリがある全ファイルシステムをチェックする

    filesystem

    チェックするファイルシステムを指定する 

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

例 — 割り当て制限の整合性を確認する

次の例は、スライス /dev/rdsk/c0t0d0s7 上の /export/home ファイルシステムのディスク割り当て制限をチェックする方法を示しています。/export/home ファイルシステムは、/etc/vfstab ファイルに rq エントリを持つ、唯一のファイルシステムです。


# quotacheck -va
*** Checking quotas for /dev/rdsk/c0t0d0s7 (/export/home)

割り当て制限を有効にする方法

  1. スーパーユーザーになります。

  2. ファイルシステムの割り当て制限を有効にします。


    # quotaon [-v] -a filesystem ...
    

    -v

    割り当て制限が無効にされた場合、各ファイルシステムからメッセージを表示する 

    -a

    /etc/vfstab ファイル内に rq エントリがある全ファイルシステムの割り当て制限を有効にする

    filesystem ...

    指定する 1 つ以上のファイルシステムの割り当て制限を有効にするスペースでファイル名を区切って、複数のファイルシステムを指定する 

例 — 割り当て制限を有効にする

次の例は、スライス /dev/dsk/c0t4d0s7/dev/dsk/c0t3d0s7 上のファイルシステムのディスク割り当て制限を有効にする方法を示しています。


# quotaon -v /dev/dsk/c0t4d0s7 /dev/dsk/c0t3d0s7
/dev/dsk/c0t4d0s7: quotas turned on
/dev/dsk/c0t3d0s7: quotas turned on

割り当て制限のチェック

ディスクと i ノードの割り当て制限を設定して有効にしたら、それらの割り当て制限を超過して使用しているユーザーをチェックできます。また、ファイルシステム全体の割り当て制限情報をチェックすることもできます。

表 17–2 で、ディスク割り当て制限をチェックするコマンドを説明します。

表 17–2 割り当て制限チェック用コマンド

コマンド 

手順 

quota

ユーザー割り当て制限と現在のディスク使用量を表示する。ユーザーの割り当て制限超過使用量も表示可能 

repquota

指定されたファイルシステムの割り当て制限、ファイル、および所有しているディスク容量を表示する 

割り当て制限を超過したかどうかを確認する方法

quota コマンドを使用して、割り当て制限が適用されているファイルシステム上の個々のユーザーの割り当て制限とディスク使用量を表示できます。

  1. スーパーユーザーになります。

  2. 次のように入力して、割り当て制限が有効にされているマウント済みファイルシステムのユーザー割り当て制限を表示します。


    # quota [-v] username
    

    -v

    割り当て制限が設定されているマウント済みファイルシステムすべてについてユーザー割り当て制限を表示する 

    username

    ユーザーアカウントのユーザー名またはユーザー ID (UID) 

例 — 割り当て制限を超過したかどうかを確認する

次の例は、UID 301 によって識別されるユーザーアカウントに 1K バイトの割り当て制限が設定されているが、ディスク容量をまったく使用していないことを示しています。


# quota -v 301
Disk quotas for bob (uid 301):
Filesystem  usage  quota limit timeleft files quota  limit timeleft
/export/home   0      1     2             0      2      3

Filesystem

ファイルシステムのマウントポイント 

usage

現在のブロック使用数 

quota

弱いブロック制限値 

limit

強いブロック制限値 

timeleft

ディスク割り当て制限タイマーの残り時間 (日単位) 

files

現在の i ノード使用数 

quota

弱い i ノード制限値 

limit

強い i ノード制限値 

timeleft

ディスク割り当て制限タイマーの残り時間 (日単位) 

ファイルシステムの割り当て制限を確認する方法

repquota コマンドを使用して 1 つ以上のファイルシステム上のすべてのユーザーの割り当て制限とディスク使用量を表示します。

  1. スーパーユーザーになります。

  2. ディスクがまったく使用されていなくても、1 つまたは複数のファイルシステムのすべての割り当て制限を表示します。


    # repquota [-v]  -a filesystem
    

    -v

    資源を消費していないユーザーも含めて、すべてのユーザーのディスク割り当て制限を報告する 

    -a

    すべてのファイルシステムについて報告する 

    filesystem

    指定したファイルシステムについて報告する 

例 — ファイルシステムの割り当て制限を確認する

次の例は、割り当て制限が 1 つのファイルシステム (/export/home) だけに対して有効なシステムでの repquota コマンドからの出力を示しています。


# repquota -va
/dev/dsk/c0t3d0s7 (/export/home):
                  Block limits              File limits
User      used   soft   hard  timeleft  used  soft   hard  timeleft
#301  --            0      1   2.0 days         0      2      3  
#341  --    57     50     60   7.0 days  2      90    100  

Block limits

 

used

現在のブロック使用数 

soft

弱いブロック制限値 

hard

強いブロック制限値 

timeleft

ディスク割り当て制限タイマーの残り時間 (日単位) 

File limits

 

used

現在の i ノード使用数 

soft

弱い i ノード制限値 

hard

強い i ノード制限値 

timeleft

ディスク割り当て制限タイマーの残り時間 (日単位) 

割り当て制限の変更と削除

割り当て制限を変更して、ユーザーが使用するディスク容量と i ノード数を調整できます。または、必要に応じて各ユーザーから、あるいはファイルシステム全体から割り当て制限を削除できます。

表 17–3 で、割り当て制限を変更または削除するのに使用するコマンドを示します。

表 17–3 割り当て制限を変更または削除するコマンド

コマンド 

マニュアルページ 

説明 

edquota

edquota

各ユーザーについて i ノード数とディスク容量の強い制限と弱い制限を変更する。また、任意のユーザーが弱い制限値を超えることが許される期間の長さを変更する 

quotaoff

quotaoff(1M)

指定したファイルシステムの割り当て制限を無効にする 

弱い期間制限値のデフォルトを変更する方法

デフォルトでは、ユーザーはある週の割り当て制限に対する弱い制限値を 1 週間超えることができます。 弱い制限値を 1 週間よりも長く超えると、システムはそのユーザーに対し、i ノードとディスクブロックの使用を禁止します。

edquota コマンドを使用すると、この割り当て制限の期間制限を変更できます。

  1. スーパーユーザーになります。

  2. 次のように割り当て制限エディタを使用して、弱い期間制限値を含む一時ファイルを作成します。


    # edquota -t
    

    -t オプションは、各ファイルシステムの弱い期間制限値を指定します。

  3. 期間制限を、0 (デフォルト) から数値とキーワード monthweekdayhourmin、または sec を使用して指定する値に変更します。


    注 –

    この手順は、現在のディスク割り当て制限違反者には影響しません。


例 — 期間の弱い制限値のデフォルトを変更する

次の例は、/export/home がただ 1 つの quotas を持つマウント済みファイルシステムであるシステムで edquota コマンドによって開かれた一時ファイルの内容を示しています。デフォルト値 0 は、デフォルトで 1 週間の期間制限値が使用されることを意味します。


fs /export/home blocks time limit = 0 (default), files time limit = 0 (default)

次の例は、ブロック割り当て制限の超過に対する期間制限値が 2 週間に変更され、ファイル数の超過に対する期間制限値が 16 日に変更された後の、上の例と同じ一時ファイルの内容を示しています。


fs /export/home blocks time limit = 2 weeks, files time limit = 16 days

1 ユーザーの割り当て制限を変更する方法

  1. スーパーユーザーになります。

  2. 次のように割り当て制限エディタを使用して、quotas ファイルがそれぞれのファイルシステムのルートディレクトリにある各マウント済みファイルシステムに対して 1 行ずつエントリが入っている一時ファイルを開きます。


    # edquota username
    

    username は、割り当て制限を変更したいユーザー名を指定します。


    注意 – 注意 –

    edquota コマンドの引数として複数のユーザーを指定できますが、表示される情報にはどのユーザーのものなのか示されないので、混乱を招く恐れがあります。


  3. 1K バイトディスクブロック数の弱い制限値と強い制限値、および i ノード数の弱い制限値と強い制限値を入力します。

  4. ユーザーの割り当て制限が正しく変更されたことを確認します。


    # quota -v username
    

    -v

    ディスク割り当て制限が有効にされている、すべてのマウント済みのファイルシステムについて、ユーザーのディスク割り当て制限情報を表示します 

    username

    割り当て制限をチェックしたいユーザー名を指定する。 

例 — 1 ユーザーの割り当て制限を変更する

次の例は、edquota コマンドで開いた一時ファイルの内容を示しています。このシステムでは、ルートディレクトリに quotas ファイルが含まれているマウント済みファイルシステムは、/files だけです。


fs /files blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)

次の例は、上と同じ一時ファイルの割り当て制限変更後の内容を示しています。


fs /files blocks (soft = 0, hard = 500) inodes (soft = 0, hard = 100)

次の例は、ユーザー smith の強い制限値の変更結果を確認する方法と、1K バイトブロック数と i ノード数の強い制限値がそれぞれ 500 と 100 に変更されていることを示しています。


# quota -v smith
Disk quotas for smith (uid 12):
Filesystem  usage  quota  limit  timeleft  files  quota  limit  timeleft
 
  /files     1       0     500              1       0     100

1 ユーザーの割り当て制限を無効にする方法

  1. スーパーユーザーになります。

  2. 次のように割り当て制限エディタを使用して、quotas ファイルがその最上位ディレクトリにある各マウント済みファイルシステムに対して 1 行の割り当て制限情報を含む一時ファイルを作成します。


    # edquota username
    

    username は、割り当て制限を無効にしたいユーザー名を指定します。


    注意 – 注意 –

    edquota コマンドの引数として複数のユーザーを指定できますが、表示される情報にはどのユーザーのものなのか示されないので、混乱を招く恐れがあります。


  3. 1K バイトディスクブロック数の弱い制限値と強い制限値、および i ノード数の弱い制限値と強い制限値を 0 (ゼロ) に変更します。


    注 –

    必ずこれらの値を 0 (ゼロ) に変更してください。テキストファイルから行を削除してはいけません。


  4. ユーザーの割り当て制限を無効にしたことを確認します。


    # quota -v username
    

    -v

    ディスク割り当て制限が有効にされている、すべてのマウント済みのファイルシステムについて、ユーザーのディスク割り当て制限情報を表示します 

    username

    割り当て制限を確認したいユーザー名 (UID) を指定します。 

例 — 1 ユーザーの割り当て制限を無効にする

次の例は、edquota コマンドで開いた一時ファイルの内容を示しています。このシステムでは、ルートディレクトリに quotas ファイルが含まれているマウント済みファイルシステムは、/files だけです。


fs /files blocks (soft = 50, hard = 60) inodes (soft = 90, hard = 100)

次の例は、割り当て制限を無効にした後の上と同じ一時ファイルの内容を示しています。


fs /files blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)

割り当て制限を無効にする方法

  1. スーパーユーザーになります。

  2. ファイルシステムの割り当て制限を無効にします。


    # quotaoff [-v] -a filesystem ...
    

    -v

    割り当て制限が無効にされた場合、各ファイルシステムからメッセージを表示する 

    -a

    全ファイルシステムの割り当て制限を無効にする 

    filesystem

    指定する 1 つ以上のファイルシステムの割り当て制限を無効にするスペースでファイル名を区切って、複数のファイルシステムを指定する 

例—割り当て制限を無効にする

次の例は、 /export/home ファイルシステムの割り当て制限を無効にする方法を示しています。


# quotaoff -v /export/home
/export/home: quotas turned off