[ITPASS2022]quota のインストールと設定

概要

ここでは, 各ユーザのディスク使用量を

  • ソフトリミット 40 GB
  • ハードリミット 48 GB

に制限するために quota を導入する.

なおユーザによっては quota を変更している (大きく設定している). 2014 年度までに変更しているユーザについては以下の手順に書いているが, このマニュアル作後に変更があるかもしれないので, 作業前に old における quota 設定を確認しておくこと.

準備

カーネルが quota に対応しているか確認

以下のコマンドを入力し, 確認を行う. ( 5.10.0-19-amd64 等はカーネルのバージョンに合わせる)

$ uname -r

5.10.0-19-amd64

$ grep CONFIG_QUOTA /boot/config-5.10.0-19-amd64

CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=m
CONFIG_QUOTACTL=y

quota コマンドが入っているか確認

dpkg -l でパッケージの一覧を表示し, "quota" を含む行を表示する.

$ dpkg -l | grep quota

quota が入っていない場合は, 次のように quota のインストールを行う. 今回は入っていたため行わない.

quota のインストール

root 権限を得る ( itpadmin グループに入っているユーザ、または chikuwaXX のユーザーのみ可能 ).

$ sudo -s

quota パッケージをインストールする.

# apt-get install quota

/etc/fstab の編集

# vi /etc/fstab

で, 以下のように home を含むファイルシステム ( /dev/sda6 ) の <options> 項目に usrquota を追加する.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=88b6f844-b299-42f7-9116-1927db6dd294 /               ext4   errors=remount-ro 0       1
# /home was on /dev/sda6 during installation
UUID=e2d384a2-4b77-4075-aaa4-ebb455629120 /home           ext4   defaults,usrquota        0       2
                                                                          ^^^^^^^^
# swap was on /dev/sda5 during installation
UUID=452f2ffa-baa1-414f-81aa-cb85762033c4 none            swap    sw             0       0
# swap was on /dev/sdb5 during installation
UUID=7381c9f9-29fe-4fc1-a14a-aef0aa986361 none            swap    sw             0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

再起動する.

# reboot

quota の記録ファイル ( aquota.user ) の作成

  • quota を停止させる.
# /etc/init.d/quota stop
  • aquota.user ファイルを作成するために以下のコマンドを実行する.

ファイルシステムは /home 領域をマウントしたものを指定する. まずファイルシステムを調べ, /home になっているファイルをさがす.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             16G     0   16G   0% /dev
tmpfs           3.2G  1.4M  3.2G   1% /run
/dev/sda1       916G  7.6G  862G   1% /
tmpfs            16G     0   16G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
/dev/sda3       189M  3.4M  185M   2% /boot/efi
/dev/sda4       2.7T  357M  2.5T   1% /home


# quotacheck -m -cu /dev/sda4
quotacheck: Cannot find mountpoint for device /dev/sda4
quotacheck: No correct mountpoint specified. 
quotacheck: Cannot initialize mountpoint scan.

とすると aquota.user ファイルが作成される.

  • aquota.user ファイルのパーミッションが以下の様になっていることを確認する.
# ls -l /home/aquota.user
-rw------- 1 root root 13312 Nov 22 09:43 /home/aquota.user
  • quota の起動
# /etc/init.d/quota start

なお, /etc/fstab の編集 で行った fstab の修正もここで反映される.

ユーザの quota 設定

gate ユーザの quota 設定

gate-toroku-system は新規ユーザのホームディレクトリを作成した際に, gate ユーザに設定された quota を新規ユーザに適用する. そのため, まず gate ユーザに quota を設定する.

gate ユーザにソフトリミット 40 GB, ハードリミット 48 GB の quota をかける.

# export EDITOR=vim
# edquota gate

デフォルトで立ち上がるエディターが使いにくい場合は上記のようにエディターを変更する. 上記の場合には vim が立ち上がる.

容量のリミットは, soft 項目 40 000 000 (単位は KB), hard 項目 48 000 000 (単位は KB). ファイル数のリミットは, soft 項目も hard 項目も 0 (単位はファイル数).

具体的には以下の通り.

Disk quotas for user gate (uid 500):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sda6                      5148   40000000   48000000       1026       0       0

ソフトリミット超過の猶予期間

デフォルトは 7 日間である. 変更する場合は edquota コマンドの -t, -T オプションを使う. 詳しくは man を参照.

既存ユーザの quota 設定

  • gate ユーザの quota を, 既に /home に存在する全てのユーザに適用させる.
# cd /home
# edquota -p gate `gate-user-list stable`
  • 山中大学先生 (mdy) のアカウントはソフトリミット 96GB, ハードリミット 112GB に変更した.
# edquota mdy
  • 以下のコマンドで各ユーザの quota の情報を確認する.
# repquota -v /home

動作確認

  • 一時的に適当なユーザ (ここでは hogehoge とする) の quota の設定をソフトリミット 100 MB, ハードリミット 150 MB にする.
    • テストユーザを作成して行う.
    • 今年度は作業者のアカウントchikuwa7でテストを行った.
  • dd コマンドを用いて, 100 MB のソフトリミットを越えるサイズのファイルを作成し, 警告されるかどうかを確認する.
# edquota hogehoge

hogehoge ユーザのホームで次のコマンドを実行する.

# su hogehoge
$ cd
$ dd if=/dev/zero of=tmp bs=1000k count=120

これにより /dev/zero を入力ファイルとして, tmp を出力ファイルとして読み書きする. bs は一度に行う読み出し書き込みのサイズ, count は読み出し書き込みの回数である. ( このようにすると, 1000 kbytes × 120 のサイズのファイル tmpが作成される. )

  • 以下のような警告が表示されることを確認する.

    sda6: warning, user block quota exceeded.
    120+0 レコード入力
    120+0 レコード出力
    122880000 bytes (123 MB, 117 MiB) copied, 0.0448118 s, 2.7 GB/s
  • tmp を削除し, 同様にハードリミットを越えるサイズのファイルを作成し, 警告されるかどうか確認する.
$ dd if=/dev/zero of=tmp bs=1000k count=200
  • 以下のような警告が表示されることを確認する.
sda4: warning, user block quota exceeded.
sda4: write failed, user block limit reached.
150+0 レコード入力
149+0 レコード出力
153583616 bytes (154 MB, 146 MiB) copied, 0.0556073 s, 2.8 GB/s

テスト用に作ったユーザは削除する.

動作確認をした後, 忘れずにファイルを削除し, quota の設定も元に戻しておくこと. さらにテスト用に作ったユーザーも削除すること. 動作確認終了後ファイルとテストユーザを削除し, quota の設定が元通りかを確認する.

ユーザのディスク使用状態の確認

自身のアカウントのディスク使用状態は, 以下のコマンドで確認できる.

$ quota

ちなみに, root 権限を持つユーザが

# quota [ユーザ名]

と打つと, [ユーザ名] のディスク使用状態を見ることが出来る.

参考文献

[[ITPASS2022]2022年度サーバ構築マニュアル へ戻る]

Last modified:2022/12/16 12:49:02
Keyword(s):
References:[[ITPASS2022]2022年度サーバ構築マニュアル]