Solaris のシステム管理 (第 2 巻)

第 29 章 ディスク割り当ての管理

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

ディスク割り当ての使用

ディスク割り当てを使用することによって、システム管理者は、個々のユーザーが使用できるディスク容量と i ノード数 (おおよそファイルの数に相当) を制限して、UFS ファイルシステムのサイズを制御できます。このため、ディスク割り当ては、特に、ユーザーのホームディレクトリが存在するファイルシステムで便利です。

設定後、ディスク割り当ては、ユーザーが使用するディスク容量や i ノード数に合わせて変更できます。さらに、ディスク割り当ては、システムの要求の変化に応じて、追加または削除できます。ディスク割り当て、またはディスク割り当てを超えることができる時間を変更する手順、個々のディスク割り当てを無効にする手順、あるいはディスク割り当てをファイルシステムから削除する手順については、「割り当ての変更と削除」を参照してください。

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

弱い制限値と強い制限値

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

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

タイマーの値は、repquota コマンドと quota コマンドを実行したときの timeleft フィールドに示されています。

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

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

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

ディレクトリがないと仮定すると、ユーザーは、ブロックを使用しなくても、すべて空のファイルを作成することによって、自分の i ノードディスク割り当てを超えることができます。また、ユーザーは単純に、ユーザーのディスク割り当て中のすべてのデータブロックを消費するぐらいの大きなファイルを 1 つだけ作成することによって、自分のブロックディスク割り当てを超えることができます。

ディスク割り当ての設定

ディスクの割り当てを設定することにより、ユーザーが利用できるディスク容量と、i ノードの数 (おおよそファイルの数に相当) を制限できます。これらの割り当ては、ファイルシステムがマウントされるたびに自動的に有効になります。この節ではファイルシステム用にディスク割り当てを構成し、設定し、有効にする手順を説明します。

ディスク割り当ての設定には、次の一般的な手順が含まれます。

  1. システムをリブートしてファイルシステムをマウントするごとにディスク割り当てが実施されるように、一連のコマンドを使用して、ファイルシステムでディスク割り当てを利用できるようにするための準備をします。エントリは、/etc/vfstab ファイルに追加しなければなりません。また、quotas ファイルは、ファイルシステムの一番上のディレクトリで作成しなければなりません。

  2. 1 人のユーザーに対してディスク割り当てを作成した後、そのディスク割り当てをプロトタイプとして、他のユーザーのディスク割り当てを設定できます。

  3. ディスク割り当てを実際に有効にする前に、他のコマンドを使用して、整合性をチェックします。このチェックでは、提案したディスク割り当てと現在のディスク使用率を比較して、矛盾しないことを確認します。

  4. 最後に、他のコマンドを使用して、1 つまたは複数のファイルシステム全体のディスク割り当てを有効にします。

上記の手順により、ファイルシステムがマウントされるたびに、そのファイルシステム上でディスク割り当てが自動的に有効になります。上記手順の特定の情報については、「割り当ての設定」を参照してください。

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

表 29-1 割り当てを行うコマンド

コマンド 

機能 

edquota(1M)

各ユーザーに対する i ノード数とディスク容量のハード制限とソフト制限を設定する 

quotacheck(1M)

マウントされている各 UFS ファイルシステムを調べ、ファイルシステムのディスク割り当てファイルにある情報と比較し、矛盾があれば報告する 

quotaon(1M)

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

quota(1M)

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

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

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

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

UFS ファイルシステムの割り当てを構成し、各ユーザーに対する割り当てを終了したら、実際に割り当てを有効にする前に、quotacheck コマンドを使用して整合性をチェックしてください。システムがリブートされる機会がそれほど多くない場合、quotacheck を定期的に実行するようお勧めします。

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

割り当ての設定

表 29-2 作業マップ: 割り当ての設定

作業 

説明 

手順の説明 

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
    

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

次の例は /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 コマンドを使用します。


    # quota -v username
    

    -v

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

    username

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

例 - 1 ユーザー用の割り当てを設定する

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


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 に対して設定されている割り当てをユーザー maryjohn に適用します。


# edquota -p bob mary john

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


注 -

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


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

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


    # quotacheck [-v] 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 コマンドを使用して、ファイルシステムの割り当てを有効にします。


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

    -v

    詳細オプション 

    -a

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

    filesystem ...

    指定する 1 つ以上のファイルシステムの割り当てを有効にする 

例 - 割り当てを有効にする

次の例は、スライス /dev/dsk/c0t4d0s2/dev/dsk/c0t3d0s2 上のファイルシステムのディスク割り当てを有効にしています。


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

割り当てのチェック

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

表 29-3 でディスク割り当てをチェックするのに使用するコマンドを説明します。

表 29-3 割り当てチェック用コマンド

コマンド 

作業 

quota(1M)

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

repquota(1M)

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

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

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

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

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


    # quota [-v] username
    

    -v

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

    username

    ユーザーアカウントのユーザー名またはユーザー識別番号 (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 ノード数を調整できます。または、必要に応じて各ユーザーから、あるいはファイルシステム全体から割り当てを削除できます。

表 29-4 で、割り当てを変更または削除するのに使用するコマンドを示します。

表 29-4 割り当てを変更または削除するコマンド

コマンド 

機能 

edquota(1M)

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

quotaoff(1M)

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

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

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

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

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

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


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


    注 -

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


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

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


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

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


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 コマンドを使用します。


    # quota -v username
    

    -v

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

    username

    割り当てを確認したいユーザー名 

例 - 1 ユーザーの割り当てを変更する

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


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 コマンドを使用します。


    # quota -v username
    

    -v

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

    username

    割り当てを確認しようとするユーザー名またはユーザー識別番号 (UID) 

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

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


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