この章では、ディスクの割り当て制限を設定し管理する方法を示します。この章で説明する手順は次のとおりです。
ディスクの割り当て機能を使用することにより、システム管理者は、各ユーザーが使用できるディスク容量と i ノード数 (おおよそのファイル数に該当) を制限して UFS ファイルシステムを制御できます。このため、ディスク割り当て制限は、特に、ユーザーのホームディレクトリが存在するファイルシステムで便利です。公開ファイルシステムと /tmp ファイルシステムについてはこのディスク割り当て機能による利点はあまりありません。
割り当て制限を設定する一般的な手順は次のとおりです。
一連のコマンドを使用してファイルシステムのディスク割り当て制限を行い、システムがリブートし、そのファイルシステムがマウントされるたびに、割り当て制限が確実に行われるようにします。/etc/vfstab ファイルにエントリを追加し、そのファイルシステムのルートに quotas ファイルを作成する必要があります。
1 人のユーザー用に割り当て制限を設定した後、それを元にして他のユーザー用にコピーします。
割り当て制限が有効になる前に、他のコマンドが現在のディスクの使用状態をチェックし、競合していないかどうかを確認します。
最後に、コマンドは 1 つ以上のファイルシステムでの割り当て制限を有効にします。
以上の手順により、あるファイルシステムがマウントされるたびに、そのファイルシステムのディスク割り当て制限が有効になるように設定できます。手順については、第 17 章「ディスク割り当て制限の管理 (手順)」を参照してください。
一度設定した後は、割り当て制限を変更して、ユーザーが使用できるディスク容量と i ノード数を調整できます。また、システムに変更が必要な場合は、それに合わせて割り当て制限を追加または削除できます。割り当て制限の変更、割り当て制限を超えてもかまわない時間の長さの設定、各割り当て制限を無効または削除する方法などについては、「割り当て制限の変更と削除」を参照してください。
ディスク割り当て制限を使用することによって、システム管理者は、個々のユーザーが使用できるディスク容量と i ノード数 (おおよそファイルの数に相当) を制限して、UFS ファイルシステムのサイズを制御できます。このため、ディスク割り当て制限は、特に、ユーザーのホームディレクトリが存在するファイルシステムで便利です。
一度設定しても、割り当て制限を変更して、ユーザーが使用できるディスク容量と i ノード数を調整できます。また、システムに変更が必要な場合は、それに合わせて割り当て制限を追加または削除できます。ディスク割り当て制限、またはディスク割り当て制限を超えることができる時間を変更する手順、個々のディスク割り当て制限を無効にする手順、あるいはディスク割り当て制限をファイルシステムから削除する手順については、「割り当て制限の変更と削除」を参照してください。
ディスク割り当て制限を監視できます。割り当て制限コマンドを使用することによりシステム管理者は、ファイルシステムでの割り当て制限を表示したり、割り当て制限を超えて使用しているユーザーを検索したりできます。これらのコマンドの使用方法については、「割り当て制限のチェック」を参照してください。
弱い制限値と強い制限値の両方を設定できます。システムは、ユーザーが自分の強い制限値を超えることを許可しません。しかし、システム管理者は、ユーザーが一時的に超えることができる、弱い制限値 (「ディスク割り当て制限」と呼ぶこともある) を設定できます。弱い制限値は、強い制限値より小さくなければなりません。
いったんユーザーが弱い制限値を超えると、タイマーが起動します。タイマーが動いている間、ユーザーは弱い制限値を超えて操作できます。しかし、強い制限値は超えることができません。再びユーザーが弱い制限値を下回ると、タイマーはリセットされます。しかし、タイマーが期限切れになったときに、まだユーザーの使用率が弱い制限値を超えていた場合、弱い制限値は、強い制限値として実施されます。デフォルトでは、弱い制限値のタイマーは 7 日です。
repquota コマンドと quota コマンドの timeleft フィールドは、タイマーの値を示します。
たとえば、あるユーザーの弱い制限値が 10,000 ブロックで、強い制限値が 12,000 ブロックであると仮定します。そのユーザーのブロック使用率が 10,000 ブロックを超えて、タイマーも期限切れになった (7 日を超えた) 場合、そのユーザーは自分の使用率が弱い制限値を下回るまで、それ以上のディスクブロックをそのファイルシステム上に割り当てることはできません。
ファイルシステムは、ユーザーに 2 つの資源を提供します。(データの) ブロックと (ファイルの) i ノードです。各ファイルは、1 つの i ノードを使用します。ファイルデータは、データブロック内に格納されます (通常は、1K バイトブロックで構成される)。
ディレクトリがなくても、ユーザーは空のファイルを作成することによって (ブロックを使用することなく)、自分の i ノードディスク割り当て制限を超過することができます。また、ユーザーは、ユーザーの割り当て制限のデータブロックをすべて消費するのに十分な大きさのファイルを 1 つ作成して、自分のブロックのディスク割り当て制限を超過した i ノードを 1 つ使用することができます。
ディスクの割り当て制限を設定することにより、ユーザーが利用できるディスク容量と、i ノードの数 (おおよそファイルの数に相当) を制限できます。これらの割り当て制限は、ファイルシステムがマウントされるたびに自動的に有効になります。この節ではファイルシステム用にディスク割り当て制限を構成し、設定し、有効にする手順を説明します。
割り当て制限を設定する一般的な手順は次のとおりです。
いくつかのコマンドを使用してファイルシステムにディスク割り当て制限を決め、システムがリブートし、そのファイルシステムがマウントされるたびに割り当て制限を確認することができます。/etc/vfstab ファイルにエントリを追加し、また、そのファイルシステムの一番上のディレクトリに quotas ファイルを作成する必要があります。
まず 1 人のユーザー用に割り当て制限を設定し、それを他のユーザー用にコピーします。
ディスク割り当て制限を実際に有効にする前に、他のコマンドを使用して、整合性をチェックします。このチェックでは、提案したディスク割り当て制限と現在のディスク使用率を比較して、矛盾しないことを確認します。
最後に、コマンドは 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 ノードの割り当て制限を行う | |
3. (省略可能) 複数ユーザーの割り当て制限の設定 |
edquota コマンドを使用して、その他のユーザーアカウント用にプロトタイプの割り当て制限を適用する | |
4. 整合性のチェック |
quotacheck を使用して、1 つまたは複数のファイルシステムの整合性について、現在の使用状況とディスクの割り当て制限を比較する | |
5. 割り当て制限を有効にする |
quotaon を使用して、1 つまたは複数のファイルシステムの割り当て制限を有効にする |
/etc/vfstab ファイルを編集します。割り当て制限を設定しようとする各 UFS ファイルシステムの「mount options」フィールドに rq を追加します。
割り当て制限を格納しようとするファイルシステムのルートディレクトリに移動します。
次のように入力して、quotas というファイルを作成します。
# touch quotas |
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 |
次のように入力して割り当て制限エディタを使用して、quotas ファイルがファイルシステムのルートディレクトリにある各マウント済み UFS ファイルシステムに対して、1 行の割り当て制限情報を含む一時ファイルを作成します。
# edquota username |
username は、割り当て制限を設定するユーザーです。
1K バイトディスクブロック数 (弱い制限値と強い制限値)、および i ノード数 (弱い制限値と強い制限値) を、それぞれ 0 (デフォルト) から各ファイルシステム用に指定されている割り当て制限値に変更します。
ユーザーの割り当て制限を確認します。
# quota -v username |
-v |
ディスク割り当て制限がある、マウント済みのファイルシステム上の、ユーザーのディスク割り当て制限情報を表示する |
username |
ディスク割り当て制限を表示するユーザー名を指定する |
次の例は、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) |
次のように割り当て制限エディタを使用して、すでにプロトタイプユーザー用に設定した割り当て制限を指定するその他のユーザーに適用します。
# edquota -p prototype-user username ... |
prototype-user |
すでに割り当て制限を設定してあるアカウントのユーザー名 |
username .. |
1 人以上の追加アカウントのユーザー名を指定する |
次の例は、ユーザー bob に設定された割り当て制限をユーザー mary と john に適用する方法を示しています。
# edquota -p bob mary john |
ディスクのデータの正確さを保つには、quotacheck コマンドを実行するとき、チェックするファイルシステムが他のユーザーによって使用できないようにしてください。システムをリブートするとき、quotacheck コマンドが自動的に実行されます。
次のように 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) |
ファイルシステム割り当て制限を有効にします。
# 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-1 で、ディスク割り当て制限をチェックするコマンドを説明します。
表 17-2 割り当て制限チェック用コマンド
コマンド |
手順 |
---|---|
quota |
ユーザー割り当て制限と現在のディスク使用量を表示する。ユーザーの割り当て制限超過使用量も表示可能 |
repquota |
指定されたファイルシステムの割り当て制限、ファイル、および所有しているディスク容量を表示する |
quota コマンドを使用して、割り当て制限が適用されているファイルシステム上の個々のユーザーの割り当て制限とディスク使用量を表示できます。
スーパーユーザーになります。
次のように入力して、割り当て制限が有効にされているマウント済みファイルシステムのユーザー割り当て制限を表示します。
# 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 つまたは複数のファイルシステムのすべての割り当て制限を表示します。
# 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 コマンドを使用すると、この割り当て制限の期間制限を変更できます。
次のように割り当て制限エディタを使用して、弱い期間制限値を含む一時ファイルを作成します。
# edquota -t |
-t オプションは、各ファイルシステムの弱い期間制限値を指定します。
期間制限を、0 (デフォルト) から数値とキーワード month、week、day、hour、min、または sec を使用して指定する値に変更します。
この手順は、現在のディスク割り当て制限違反者には影響しません。
次の例は、/export/home がただ 1 つの quotas を持つマウント済みファイルシステムであるシステムで 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 |
次のように割り当て制限エディタを使用して、quotas ファイルがそれぞれのファイルシステムのルートディレクトリにある各マウント済みファイルシステムに対して 1 行ずつエントリが入っている一時ファイルを開きます。
# edquota username |
username は、割り当て制限を変更したいユーザー名を指定します。
edquota コマンドの引数として複数のユーザーを指定できますが、表示される情報にはどのユーザーのものなのか示されないので、混乱を招く恐れがあります。
1K バイトディスクブロック数の弱い制限値と強い制限値、および i ノード数の弱い制限値と強い制限値を入力します。
# quota -v username |
-v |
ディスク割り当て制限が有効にされている、すべてのマウント済みのファイルシステムについて、ユーザーのディスク割り当て制限情報を表示します |
username |
割り当て制限をチェックしたいユーザー名を指定する。 |
次の例は、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 |
次のように割り当て制限エディタを使用して、quotas ファイルがその最上位ディレクトリにある各マウント済みファイルシステムに対して 1 行の割り当て制限情報を含む一時ファイルを作成します。
# edquota username |
username は、割り当て制限を無効にしたいユーザー名を指定します。
edquota コマンドの引数として複数のユーザーを指定できますが、表示される情報にはどのユーザーのものなのか示されないので、混乱を招く恐れがあります。
1K バイトディスクブロック数の弱い制限値と強い制限値、および i ノード数の弱い制限値と強い制限値を 0 (ゼロ) に変更します。
必ずこれらの値を 0 (ゼロ) に変更してください。テキストファイルから行を削除してはいけません。
ユーザーの割り当て制限を無効にしたことを確認します。
# quota -v username |
-v |
ディスク割り当て制限が有効にされている、すべてのマウント済みのファイルシステムについて、ユーザーのディスク割り当て制限情報を表示します |
username |
割り当て制限を確認したいユーザー名 (UID) を指定します。 |
次の例は、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) |
ファイルシステムの割り当て制限を無効にします。
# quotaoff [-v] -a filesystem ... |
-v |
割り当て制限が無効にされた場合、各ファイルシステムからメッセージを表示する |
-a |
全ファイルシステムの割り当て制限を無効にする |
filesystem |
指定する 1 つ以上のファイルシステムの割り当て制限を無効にするスペースでファイル名を区切って、複数のファイルシステムを指定する |
次の例は、/export/home ファイルシステムの割り当て制限を無効にする方法を示しています。
# quotaoff -v /export/home /export/home: quotas turned off |