IT pass HikiWiki - [Memo2021][ITPASS]quota のインストールと設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]
= 概要
ここでは, 各ユーザのディスク使用量を
* ソフトリミット 40 GB
* ハードリミット 48 GB
に制限するために quota を導入する.
なおユーザによっては quota を変更している (大きく設定している).
2014 年度までに変更しているユーザについては以下の手順に書いているが, このマニュアル作後に変更があるかもしれないので, 作業前に old における quota 設定を確認しておくこと.
= 準備
== カーネルが quota に対応しているか確認
以下のコマンドを入力し, 確認を行う.
( 4.9.0-8-amd64 等はカーネルのバージョンに合わせる)
$ uname -r
5.10.0-9-amd64
$ grep CONFIG_QUOTA /boot/config-5.10.0-9-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 9.2M 3.2G 1% /run
/dev/sda1 916G 17G 853G 2% /
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda3 189M 5.1M 183M 3% /boot/efi
/dev/sda4 2.7T 559G 2.0T 22% /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 15 16:25 /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 にする.
* テストユーザを作成して行う.
*今年度は作業者のアカウントchikuwa2でテストを行った.
* dd コマンドを用いて, 100 MB のソフトリミットを越えるサイズのファイルを作成し, 警告されるかどうかを確認する.
# edquota hogehoge
hogehoge ユーザのホームで次のコマンドを実行する.
# su hogehoge
$ cd
$ dd if=/dev/zero of=tmp bs=1000k count=200
これにより /dev/zero を入力ファイルとして, tmp を出力ファイルとして読み書きする.
bs は一度に行う読み出し書き込みのサイズ, count は読み出し書き込みの回数である. ( このようにすると, 1000 kbytes × 200 のサイズのファイル tmpが作成される. )
* 以下のような警告が表示されることを確認する.
sda6: warning, user block quota exceeded.
200+0 レコード入力
200+0 レコード出力
204800000 bytes (205 MB, 195 MiB) copied, 0.127011 s, 1.6 GB/s
* tmp を削除し, 同様にハードリミットを越えるサイズのファイルを作成し, 警
告されるかどうか確認する.
$ dd if=/dev/zero of=tmp bs=1000k count=250
* 以下のような警告が表示されることを確認する.
sda6: write failed, user block limit reached.
dd: 'tmp' の書き込みエラー: ディスク使用量制限を超過しました
151+0 レコード入力
150+0 レコード出力
153600000 bytes (154 MB, 146 MiB) copied, 0.0997493 s, 1.5 GB/s
テスト用に作ったユーザは削除する.
動作確認をした後, 忘れずに((*ファイルを削除*))し, quota の設定も((*元に戻しておく*))こと. さらにテスト用に作ったユーザーも削除すること.
動作確認終了後ファイルとテストユーザを削除し, quota の設定が元通りかを確認する.
= ユーザのディスク使用状態の確認
自身のアカウントのディスク使用状態は, 以下のコマンドで確認できる.
$ quota
ちなみに, root 権限を持つユーザが
# quota [ユーザ名]
と打つと, [ユーザ名] のディスク使用状態を見ることが出来る.
# 2012 年度からはサーバ交換作業の後に new のローカルバックアップを
# 行わないようなので, 以下の作業は必要ない.
#
#= /home.bk の quota 設定の解除
#
#((*(注意)*))
#この作業はサーバ交換作業後に行う.
#quota の設定が終わった後にローカルバックアップを取るために
#/home.bk をマウントしたが, ローカルバックアップを取らないことに
#なったためにマウントする必要がなくなった場合の作業である.
#ゆえに, ローカルバックアップを取り続けるのであればこの作業は必要ない.
#
#ika のローカルバックアップのために行った /home.bk 領域への quota の設定の影響で, #edquota コマンドや quota コマンドを実行すると, /home.bk 領域のファイルも読み込もうとして「ファイルが存在しない」という旨のエラーが表示される.
#それを解消するために fstab 内にある記述を
#
# /dev/sdb3 /home.bk ext3 defaults,usrquota 0 2
#
#から
# /dev/sdb3 /home.bk ext3 defaults 0 2
#
#に変更する.
#その後, /bk と /home.bk を一度アンマウントし, マウントしなおす.
#
# # umount -a
# # mount -a
#
#マウントが正しくされているかどうかを以下のコマンドで確認する.
#
# root@ika-itpass:/home/chikuwa2# df
# Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
# /dev/sda1 57674192 8491012 46253496 16% /
# udev 8229824 224 8229600 1% /dev
# /dev/sda3 1834427936 271876792 1469367608 16% /home
# /dev/sdb1 57674192 8735396 46009112 16% /bk
# /dev/sdb3 1834427936 271933828 1469310572 16% /home.bk
#
# edquota や quota を実行してもエラーが出ないことが確認できたら完了.
== 参考文献
* ((<[ITPASS2017]quota のインストールと設定>))
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]
= 概要
ここでは, 各ユーザのディスク使用量を
* ソフトリミット 40 GB
* ハードリミット 48 GB
に制限するために quota を導入する.
なおユーザによっては quota を変更している (大きく設定している).
2014 年度までに変更しているユーザについては以下の手順に書いているが, このマニュアル作後に変更があるかもしれないので, 作業前に old における quota 設定を確認しておくこと.
= 準備
== カーネルが quota に対応しているか確認
以下のコマンドを入力し, 確認を行う.
( 4.9.0-8-amd64 等はカーネルのバージョンに合わせる)
$ uname -r
5.10.0-9-amd64
$ grep CONFIG_QUOTA /boot/config-5.10.0-9-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 9.2M 3.2G 1% /run
/dev/sda1 916G 17G 853G 2% /
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda3 189M 5.1M 183M 3% /boot/efi
/dev/sda4 2.7T 559G 2.0T 22% /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 15 16:25 /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 にする.
* テストユーザを作成して行う.
*今年度は作業者のアカウントchikuwa2でテストを行った.
* dd コマンドを用いて, 100 MB のソフトリミットを越えるサイズのファイルを作成し, 警告されるかどうかを確認する.
# edquota hogehoge
hogehoge ユーザのホームで次のコマンドを実行する.
# su hogehoge
$ cd
$ dd if=/dev/zero of=tmp bs=1000k count=200
これにより /dev/zero を入力ファイルとして, tmp を出力ファイルとして読み書きする.
bs は一度に行う読み出し書き込みのサイズ, count は読み出し書き込みの回数である. ( このようにすると, 1000 kbytes × 200 のサイズのファイル tmpが作成される. )
* 以下のような警告が表示されることを確認する.
sda6: warning, user block quota exceeded.
200+0 レコード入力
200+0 レコード出力
204800000 bytes (205 MB, 195 MiB) copied, 0.127011 s, 1.6 GB/s
* tmp を削除し, 同様にハードリミットを越えるサイズのファイルを作成し, 警
告されるかどうか確認する.
$ dd if=/dev/zero of=tmp bs=1000k count=250
* 以下のような警告が表示されることを確認する.
sda6: write failed, user block limit reached.
dd: 'tmp' の書き込みエラー: ディスク使用量制限を超過しました
151+0 レコード入力
150+0 レコード出力
153600000 bytes (154 MB, 146 MiB) copied, 0.0997493 s, 1.5 GB/s
テスト用に作ったユーザは削除する.
動作確認をした後, 忘れずに((*ファイルを削除*))し, quota の設定も((*元に戻しておく*))こと. さらにテスト用に作ったユーザーも削除すること.
動作確認終了後ファイルとテストユーザを削除し, quota の設定が元通りかを確認する.
= ユーザのディスク使用状態の確認
自身のアカウントのディスク使用状態は, 以下のコマンドで確認できる.
$ quota
ちなみに, root 権限を持つユーザが
# quota [ユーザ名]
と打つと, [ユーザ名] のディスク使用状態を見ることが出来る.
# 2012 年度からはサーバ交換作業の後に new のローカルバックアップを
# 行わないようなので, 以下の作業は必要ない.
#
#= /home.bk の quota 設定の解除
#
#((*(注意)*))
#この作業はサーバ交換作業後に行う.
#quota の設定が終わった後にローカルバックアップを取るために
#/home.bk をマウントしたが, ローカルバックアップを取らないことに
#なったためにマウントする必要がなくなった場合の作業である.
#ゆえに, ローカルバックアップを取り続けるのであればこの作業は必要ない.
#
#ika のローカルバックアップのために行った /home.bk 領域への quota の設定の影響で, #edquota コマンドや quota コマンドを実行すると, /home.bk 領域のファイルも読み込もうとして「ファイルが存在しない」という旨のエラーが表示される.
#それを解消するために fstab 内にある記述を
#
# /dev/sdb3 /home.bk ext3 defaults,usrquota 0 2
#
#から
# /dev/sdb3 /home.bk ext3 defaults 0 2
#
#に変更する.
#その後, /bk と /home.bk を一度アンマウントし, マウントしなおす.
#
# # umount -a
# # mount -a
#
#マウントが正しくされているかどうかを以下のコマンドで確認する.
#
# root@ika-itpass:/home/chikuwa2# df
# Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
# /dev/sda1 57674192 8491012 46253496 16% /
# udev 8229824 224 8229600 1% /dev
# /dev/sda3 1834427936 271876792 1469367608 16% /home
# /dev/sdb1 57674192 8735396 46009112 16% /bk
# /dev/sdb3 1834427936 271933828 1469310572 16% /home.bk
#
# edquota や quota を実行してもエラーが出ないことが確認できたら完了.
== 参考文献
* ((<[ITPASS2017]quota のインストールと設定>))
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]