Ubuntu 18.04
Sponsored Link

ディスククォータを設定する2018/11/27

 
ディスククォータを設定してディスクの使用量を制限します。
例として、/home にマウントした ext4 ファイルシステムに対してクォータを設定します。
RedHat 系で使用されている XFS ファイルシステムの場合はこちらを参照ください
[1] クォータツールをインストールします。
root@dlp:~#
apt -y install quota quotatool
[2] マウントオプションを追加してクォータを有効にします。
# ユーザークォータとグループクォータのオプションを付加して再マウント

root@dlp:~#
umount /home

root@dlp:~#
mount -o usrquota,grpquota /dev/sdb1 /home
root@dlp:~#
vi /etc/fstab
# 起動時も有効となるようオプション追記

/dev/mapper/VolGroup-lv_root /          ext4    defaults        1 1
UUID=cf3f9660-e40d-459d-8763 /boot      ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap       swap    defaults        0 0
tmpfs                        /dev/shm   tmpfs   defaults        0 0
devpts                       /dev/pts   devpts  gid=5,mode=620  0 0
sysfs                        /sys       sysfs   defaults        0 0
proc                         /proc      proc    defaults        0 0
/dev/sdb1                    /home      xfs     defaults,usrquota,grpquota 0 0
[3] ユーザークォータを設定します。例として [ubuntu] ユーザーにクォータを適用します。
# ユーザークォータ設定ファイル作成

root@dlp:~#
quotacheck -um /home
# ユーザークォータを有効にする

root@dlp:~#
quotaon -uv /home

/dev/sdb1 [/home]: user quotas turned on
# 設定確認

root@dlp:~#
quotaon -ap

group quota on /home (/dev/sdb1) is off
user quota on /home (/dev/sdb1) is on
project quota on /home (/dev/sdb1) is off
# [ubuntu] ユーザーにクォータを設定

root@dlp:~#
edquota -u ubuntu
# Softリミット 4G, Hardリミット 5G を設定 (キロバイト単位で指定)

Disk quotas for user ubuntu (uid 500):
  Filesystem   blocks     soft       hard   inodes   soft   hard
  /dev/sdb1    32      4096000    5120000        7      0      0

# 設定確認

root@dlp:~#
*** Report for user quotas on device /dev/mapper/vg_volume01-lv_volume01
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
ubuntu    --      32 4096000 5120000             10     0     0
[4] あるユーザーへの既存設定を他ユーザーにも適用する場合は以下のように設定します。
# [ubuntu] ユーザーのクォータ設定を [fedora] ユーザーにも適用

root@dlp:~#
edquota -p ubuntu fedora

root@dlp:~#
*** Report for user quotas on device /dev/mapper/vg_volume01-lv_volume01
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
ubuntu    --      32 4096000 5120000             10     0     0
fedora    --      16 4096000 5120000              4     0     0
[5] グループクォータを設定します。例として [ubuntu] グループにクォータを適用します。
# グループクォータ設定ファイル作成

root@dlp:~#
quotacheck -gm /home
# グループクォータを有効にする

root@dlp:~#
quotaon -gv /home

/dev/sdb1 [/home]: group quotas turned on
# 設定確認

root@dlp:~#
quotaon -ap

group quota on /home (/dev/sdb1) is on
user quota on /home (/dev/sdb1) is on
project quota on /home (/dev/sdb1) is off
# [ubuntu] グループにクォータを設定

root@dlp:~#
edquota -g ubuntu
# Softリミット 4G, Hardリミット 5G を設定 (キロバイト単位で指定)

Disk quotas for group ubuntu (gid 500):
  Filesystem       blocks       soft       hard     inodes   soft   hard
  /dev/sdb1       5120000    4096000    5120000          7      0      0

# 設定確認

root@dlp:~#
*** Report for group quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0
ubuntu    +- 5120000 4096000 5120000  6days       7     0     0
fedora    --      16       0       0              4     0     0
[6] Warnquota を設定すると、制限を超えて使用しているユーザーに警告メールを送信することができます。
メールを送信するため、SMTPサーバーが稼働していることが前提になります。
root@dlp:~#
vi /etc/quotatab
# クォータを設定したデバイスと要約を追記

/dev/sdb1: Your Home Director
root@dlp:~#
vi /etc/warnquota.conf
# 必要であればメール送信元等を変更

MAIL_CMD        = "/usr/sbin/sendmail -t"
FROM            = "root@localhost"
# but they don't have to be:
SUBJECT         = Over quota
CC_TO           = "root@localhost"
SUPPORT         = "root@localhost"
PHONE           = "<enter your phone number here>"
#
CHARSET         = UTF-8

# warnquota 実行

root@dlp:~#
warnquota -s
# warnquota 実行時に制限を超えているユーザーには以下のようなメールが送信される

From root@dlp.srv.world  Fri Oct 23 09:38:10 2011
Return-Path: <root@dlp.srv.world>
X-Original-To: ubuntu
Delivered-To: ubuntu@dlp.srv.world
From: root@srv.world
Reply-To: root@srv.world
Subject: NOTE: You are exceeding your allocated disk space limits
To: ubuntu@dlp.srv.world
Cc: root@srv.world
Date: Fri, 23 Oct 2011 09:38:10 +0900 (JST)
Status: R

Your disk usage has exceeded the agreed limits on this server
Please delete any unnecessary files on following filesystems:

Your Home Director (/dev/sdb1)

                        Block limits               File limits
Filesystem           used    soft    hard  grace    used  soft  hard  grace
/dev/sdb1      +-   5000M   4000M   5000M  6days       7     0     0

root@srv.world
関連コンテンツ