quota(クォータ)とは、ユーザー毎、グループ毎にファイルシステムの使用量を制限する機能です。quota を利用すれば、一部のユーザ、グループによってディスクスペースを際限なく使用される事を防ぐことが出来ます。
ユーザの意図しない間にディスクスペースを使用しがちな、Imap サーバや、複数のサービスを同時に立ち上げているサーバで、samba, httpd グループなど、グループ毎に容量制限をかけるなどの用途に利用できます。
quota は、以下のコマンドでインストールします。
$ sudo apt-get -y install quota
容量制限をかけるパーティションは、出来れば /(ルート) パーティションを避けた方が良いので、
今回は /home 配下を別パーティションに割当、 quota の管理対象下にします。
fstab ファイルの対象となるパーティションのオプションに usrquota を追加します。
[/etc/fstab]
UUID=13c996ec-b172-4705-af7c-d979293bdb90 /home ext4 defaults 0 2 ↓ UUID=13c996ec-b172-4705-af7c-d979293bdb90 /home ext4 defaults,usrquota 0 2
/home/ を再マウントします。 $ sudo mount -o remount /home/ クォータファイルを作成します。 $ sudo quotacheck -cum /home/ クォータを有効にします。 $ sudo quotaon /home/ クォータを無効にします。 $ sudo quotaoff /home/ 現在の状態を確認します。 $ quotaon -p -a group quota on /home (/dev/sdb1) is off user quota on /home (/dev/sdb1) is on
使用可能なディスク容量を設定します。 $ sudo edquota -u username or $ sudo edquota -g groupname nano が起動するので編集します。 Disk quotas for user username (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sdb1 28 1024000 1536000 9 0 0
soft 制限は、ユーザーが soft 制限値を越えてディスクを消費すると警告を発し、猶予期間に入ります。猶予期間中は hard 制限値を越えるまでディスクに書き込めますが、猶予期間を過ぎると hard制限値を越えていなくても書き込むことができなくなります。容量の設定は、1MB=1024KB と換算して設定します。上記では、 1G のsoft制限, 1.5G の hard制限をかけました。
猶予期間の変更を行います。 $ sudo edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sdb1 7days 7days
現在の使用量を確認します。 $ sudo repquota -a *** Report for user quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20 0 0 2 0 0 taro -- 621568 1024000 1024000 10 0 0
設定以上にディスクスペースを使おうとするとエラーになります。 $ cp /tmp/ubuntu-16.04.1-server-amd64.iso . cp: 'ubuntu-16.04.1-server-amd64.iso' の書き込みエラー: ディスク使用量制限を超過しました