ディスククォータ

提供: ArchWiki
移動先: 案内検索

Wikipedia より:

ディスククォータとはシステムの管理者によって設定されるファイルシステムの使用量の制限である。ディスクにクォータを設定することで限られたディスク資源を効果的に活用できる。

この記事ではディスククォータのインストールと設定方法について説明します。

インストール

quota-tools パッケージをインストールしてください。

使用方法

まずは、/etc/fstab を編集してファイルシステムのクォータマウントオプションを有効にしてください。例えば以下のエントリがあった場合:

/dev/sda1 /home ext4 defaults 1 1

以下のように変更します:

/dev/sda1 /home ext4 defaults,usrquota 1 1

または、グループクォータマウントオプションも有効にする場合:

/dev/sda1 /home ext4 defaults,usrquota,grpquota 1 1

オプションを追加したら再マウントしてください:

# mount -vo remount /home

そしてクォータインデックスを作成してください:

# quotacheck -vgum /home

複数のパーティションでクォータオプションを追加した場合、root で quotacheck -vguma を使うこともできます。

ヒント:

If the command returns with

  • [...]Quotafile $FILE was probably truncated. Cannot save quota settings..., you can try removing the previously created files aquota*.
  • quotacheck: Mountpoint (or device) /home not found or has no quota enabled. quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option. and you are using a custom kernel, make sure quota support is enabled in your kernel.

If it continues to throw an error, you can additionally try to use options "-F vfsold or -F vfsv0 afterwards. Note that as of kernel 3.1.6-1, Arch does not support vfsv1 anymore.

If trying to remount the filesystem returns with

  • mount: /home not mounted already, or bad option you might have enabled quotas already, run quotaoff /home as root and the remount again.

最後に、クォータを有効にしてください:

# quotaon -av

上記の設定を行うと systemd ユニットの quotaon.servicesystemd-quotacheck.service がディスククォータのチェックを行ってくれます [1]/etc/fstab のクォータマウントオプションがパースされると、両方のサービスが自動的に起動します。

設定

ヒント: パーティションに存在する 1K ブロックの数を確認するには df コマンドを使ってください。

$USER は適当なユーザーに置き換えてください:

# edquota $USER
Disk quotas for user $USER (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda1                      1944          0          0        120        0        0
ノート: グループクォータを編集する場合、edquota -g $GROUP を使ってください。
blocks
$USER によって現在使われている 1k ブロック数。
ノート: ファイルシステムのブロックサイズとは無関係にブロックサイズは 1k に固定して設定されています。詳しくは [2] を参照。
inodes
$USER によって使われているディレクトリ・ファイルのエントリ数。
soft
$USER がパーティション上に作成できるブロック/inode の最大数。この数に達すると警告が表示され猶予時間のカウントダウンが開始します。"0" (ゼロ) に設定されている場合、制限無しです。
hard
$USER がパーティション上に作成できるブロック/inode の最大数。"0" (ゼロ) に設定されている場合、制限無しです。

soft リミットの猶予期間を設定するには:

# edquota -t

設定例

例えば以下の user1 の設定の場合:

# edquota user1
Disk quotas for user user1 (uid 1000):
Filesystem      blocks      soft      hard      inodes      soft      hard
/dev/sda1       695879      10000     15000     6741        0         0

user1 の使用容量が soft リミットの 10MB を超えたときに、edquota -t で設定した時間が経過した後、ソフトリミットが発動します。

hard リミットはさらに厳しい制限を課します。ハードリミットまで達したらユーザーはデータを全く書き込めなくなります。

警告: hard リミットはユーザーやグループによって書き込まれる全てのファイルに適用されます。一時ファイルも書き込めなくなるため、アプリケーションを起動してもクラッシュしてしまう可能性があります。
ヒント: クォータの設定によって問題が発生する場合、まずは root コンソールから edquota user1 でクォータを修正してみてください。もしくは、root で quotaoff -a を実行することで全てのクォータを無効化することもできます。起動時に quotacheck.mode=skip カーネルパラメータを使用すると systemd-quotacheck.service が一時的に無効化されます。

管理

クォータの制限と高度な操作。

基本

以下のコマンドを使うことで指定したパーティションのクォータを確認できます:

# repquota /home

ユーザーに適用されている全てのクォータを確認するには以下のコマンドを使ってください:

# quota -u $USER

グループの場合:

# quota -g $GROUP

クォータの設定のコピー

別のユーザーにコピー

user1 から user2 にクォータの設定をコピーするには:

# edquota -p user1 user2

クォータの設定を複数のユーザーにコピーしたい場合、コマンドの末尾に user3, user4 とユーザーを追加することができます。

グループの設定をコピーする場合は edquota -g -p group1 group2 ... とします。

全てのユーザーにコピー

user1 のクォータを設定してから999以上の UID を持つユーザー全てにクォータを適用:

# edquota -p user1 $(awk -F: '$3 > 999 {print $1}' /etc/passwd)

他のコマンド

便利なコマンドが存在します:

  • repquota -a はディスクの使用状況を表示します。
  • warnquota/etc/warnquota.conf の設定に基づいて、クォータについてユーザーに警告します。
  • setquota はスクリプトから使うときに便利なクォータの設定コマンドです。
  • quotastats はクォータシステムに関する情報を表示します:
$ quotastats
Number of dquot lookups: 101289
Number of dquot drops: 101271
Number of still active inodes with quota : 18
Number of dquot reads: 93
Number of dquot writes: 2077
Number of quotafile syncs: 134518740
Number of dquot cache hits: 7391
Number of allocated dquots: 90
Number of free dquots: 2036
Number of in use dquot entries (user/group): -1946

参照