quotaコマンドでファイルシステムの容量制限を行う:UNIX処方箋
現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、ユーザーごとに使用できるディスク容量やiノード数に制限を設けるためのコマンド「quota」を解説する。
Solaris 8でサーバを管理しています。これまでユーザーに対して、特に何か制限を設けるといったことは行っていなかったため、先日、サーバ上で「file system is full」というメッセージが表示されてしまいました。今後は、このような状態を避けるために、ユーザーごとに使える領域を制限したいと考えています。何かいい方法はありませんか?
この場合は、quotaコマンドを用いるといいでしょう。quotaとは、ユーザーごとに使用できるディスク容量やiノード数に制限を設けるためのコマンドです。このコマンドはシステム管理の上で必須となるものではありませんが、有限なシステム資源の有効な利用という観点や、またご質問の内容から考えると、quotaを用いることが有効な手段といえます。
quotaの設定
quotaの設定方法は、次に挙げる3段階のステップを踏みます。
1.マウントオプションの変更
/etc/vfstabファイルの内容を以下のように編集します。
2.rcファイルの変更
/etc/rc2.d/S01MOUNTFSYSファイルの最後に、リスト1の5行をつけ加えます。この内容は、OS起動の際に「quotacheck -a」によるquotaチェックを行い、「quotaon -a」でquotaを起動するというものです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
3.quotaファイルの作成
quotaによって制限を設けるファイルシステムの幹に当たるディレクトリ(ここでは/export/home)に移って、次のようにquotasファイルを作成します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これで、システムを再起動するとquotaが使える状態になります。
各ユーザー単位でのquota設定
ufsファイルシステムに対して、ユーザー単位でquotaを設定するには、edquotaコマンドを利用します。このコマンドを次のように実行すると、viが呼び出されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
書き込む内容の例は以下のとおりです。弱い制限値とは、ユーザーが一時的に超えることができる制限値で、強い制限値はユーザーが超えられない制限値を意味します(詳細は後述)。
repquotaコマンドによるquota情報の表示
repquotaコマンドは、各自のquota情報を表示します。スーパーユーザーは、ほかのユーザーのquota情報を確認できます(実効例1)。また、例えば、実効例1のユーザーbbbと同じquota情報をユーザーcccに割り当てたいという場合は、「-p」オプションで基になるユーザーbbbを指定し、ユーザーcccに対してedquotaコマンドを実行します(実行例2)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
制限値について
ユーザーが弱い制限値を超えるとタイマーが作動し始め、期限切れ(デフォルトは7日間)の時点でユーザーの使用率が弱い制限値を超えていた場合、弱い制限値は、強い制限値として実施されます(期限設定は「edquota -t」コマンドで変更)。期限切れ以降は、ユーザーはその領域への書き込みができなくなります。
ただ、これら制限値のサイズを超えても、ユーザーに対して警告などが表示されるわけではありません。そのため、ユーザーから「突然書き込みできなくなった」というクレームが出るケースが想定できます。その場合に備え、次のような対処を行っておくといいでしょう。
- 弱い制限値を超えた瞬間に、ユーザーにメールを送る
- .cshrc、.tcshrcなどのドットファイルに、以下のようなシェルを設定しておく。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
運用中に、さらに大きな領域を要求してくるユーザーもいるはずです。この場合は、まず共有領域を使っていることを理解してもらい、各ユーザーに「不必要なファイルを捨てる」ことを徹底させましょう。それを実行してもなお領域が必要になった場合は、quotaの切り直しを行うよりも、次のような対応を取るといいでしょう。
- 別領域を与え、シンボリックリンクを張る
- システム以外のテンポラリディスクでの運用を行う
関連記事
- 電源投入時にdiagが実行される設定の解除(ALOMの設定)
- mdbコマンドでSCSIのTagged Command Queueing設定を確認
- tarアーカイブ内から、特定キーワードを含むファイルを指定してリストアする
- /etc/systemファイルの編集に失敗してマシンが起動しない場合の対処法
- Perlを用いた自動FTP転送
- iノード数の変更方法
- Solaris 8以前と9以降のログローテーション設定の違い
- HTTPSサーバを構築する
- SolarisからIPv6ルーターのようにRAを配信する
- Solstice Backup 7.1によるディスクバックアップ
- シェルスクリプトによる特定ファイルのバックアップ
- 9個以上のディスクスライス作成
- bashが起動時に実行するファイル
- acctcomコマンドによる終了ステータスの確認
- 電源制御キーの役割と無効化
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.