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