Debian10でファイルシステムクォータを設定する方法
序章
クォータは、ユーザーまたはグループがファイルシステムで使用できるディスク容量を制限するために使用されます。 このような制限がないと、ユーザーはマシンのディスクをいっぱいにして、他のユーザーやサービスに問題を引き起こす可能性があります。
このチュートリアルでは、コマンドラインツールをインストールしてディスククォータを作成および検査し、サンプルユーザーのクォータを設定します。
前提条件
このチュートリアルは、 Debian 10 での初期サーバー設定で説明されているように、root以外のsudo対応ユーザーでDebian10サーバーにログインしていることを前提としています。
このチュートリアルの手法は、通常、Debian以外のLinuxディストリビューションでも機能するはずですが、多少の調整が必要になる場合があります。
ステップ1-クォータツールのインストール
クォータを設定および確認するには、最初にapt
を使用してクォータコマンドラインツールをインストールする必要があります。 パッケージリストを更新してから、パッケージをインストールしましょう。
sudo apt update
sudo apt install quota
quota
コマンドを実行し、そのバージョン情報を要求することで、ツールがインストールされていることを確認できます。
quota --version
OutputQuota utilities version 4.04.
. . .
出力にわずかに異なるバージョン番号が表示されていれば問題ありません。
次に、ファイルシステムのmount
オプションを更新して、rootファイルシステムでクォータを有効にします。
ステップ2–ファイルシステムのマウントオプションを更新する
特定のファイルシステムでクォータをアクティブ化するには、いくつかのクォータ関連のオプションを指定してファイルシステムをマウントする必要があります。 これを行うには、/etc/fstab
構成ファイルのファイルシステムのエントリを更新します。 今すぐお気に入りのテキストエディタでそのファイルを開きます。
sudo nano /etc/fstab
ファイルの内容は次のようになります。
# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e / ext4 errors=remount-ro 0 1
このfstab
ファイルは仮想サーバーからのものです。 デスクトップまたはラップトップコンピュータは、おそらくわずかに異なる外観のfstab
を持ちますが、ほとんどの場合、すべてのディスクスペースを表す/
またはrootファイルシステムがあります。 。
次のようにオプションを追加して、ルートファイルシステムを指す行を更新します。
# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e / ext4 errors=remount-ro,usrquota,grpquota 0 1
既存のオプションの最後に新しいオプションを追加します。必ず、すべてをコンマで区切り、スペースを入れないでください。 上記の変更により、ファイルシステムでユーザー(usrquota
)とグループベース(grpquota
)の両方のクォータを有効にできるようになります。 どちらか一方だけが必要な場合は、未使用のオプションを省略できます。
ファイルシステムを再マウントして、新しいオプションを有効にします。
sudo mount -o remount /
注:/etc/fstab
ファイルにリストされているオプションの間にスペースがないことを確認してください。 ,
カンマの後にスペースを入れると、次のようなエラーが表示されます。
Outputmount: /etc/fstab: parse error at line 2 -- ignored
前のmount
コマンドを実行した後にこのメッセージが表示された場合は、fstab
ファイルを再度開き、エラーを修正して、mount
コマンドを繰り返してから続行してください。
/proc/mounts
ファイルを確認することで、ファイルシステムのマウントに新しいオプションが使用されたことを確認できます。 ここでは、grep
を使用して、そのファイルのルートファイルシステムエントリのみを表示します。
cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota,errors=remount-ro,data=ordered 0 0
指定した2つのオプションに注意してください。 ツールをインストールし、ファイルシステムオプションを更新したので、クォータシステムをオンにできます。
ステップ3–クォータを有効にする
最終的にクォータシステムをオンにする前に、quotacheck
コマンドを手動で1回実行する必要があります。
sudo quotacheck -ugm /
このコマンドは、ファイル/aquota.user
および/aquota.group
を作成します。 これらのファイルには、ファイルシステムの制限と使用法に関する情報が含まれており、クォータ監視をオンにする前に存在している必要があります。 使用したquotacheck
パラメーターは次のとおりです。
- u:は、ユーザーベースのクォータファイルを作成する必要があることを指定します
- g:は、グループベースのクォータファイルを作成する必要があることを示します
- m:は、クォータの初期集計を実行している間、ファイルシステムを読み取り専用として再マウントすることを無効にします。 ファイルシステムを読み取り専用として再マウントすると、ユーザーがプロセス中にファイルをアクティブに保存している場合に、より正確な結果が得られますが、この初期設定では必要ありません。
ユーザーベースまたはグループベースのクォータを有効にする必要がない場合は、対応するquotacheck
オプションを省略できます。
ルートディレクトリを一覧表示することで、適切なファイルが作成されたことを確認できます。
ls /
Outputaquota.group bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
aquota.user boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old
quotacheck
コマンドにu
またはg
オプションを含めなかった場合、対応するファイルは失われます。 これで、クォータシステムをオンにする準備が整いました。
sudo quotaon -v /
Output/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned on
サーバーは現在、クォータを監視および適用していますが、まだ設定していません。 次に、シングルユーザーのディスククォータを設定します。
ステップ4–ユーザーのクォータを構成する
ユーザーまたはグループの割り当てを設定する方法はいくつかあります。 ここでは、edquota
コマンドとsetquota
コマンドの両方を使用してクォータを設定する方法について説明します。
edquota
を使用してユーザークォータを設定する
edquota
コマンドを使用してed it quoteを実行します。 この例のsammyユーザーのクォータを編集してみましょう。
sudo edquota -u sammy
-u
オプションは、これが編集するuser
クォータであることを指定します。 代わりにグループのクォータを編集する場合は、代わりに-g
オプションを使用してください。
これにより、crontab -e
が編集用の一時ファイルを開くのと同じように、デフォルトのテキストエディタでファイルが開きます。 ファイルは次のようになります。
Disk quotas for user sammy (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 24 0 0 7 0 0
これには、ユーザー名とuid
、クォータが有効になっているファイルシステム、およびブロックベースとiノードベースの使用法と制限が一覧表示されます。 iノードベースのクォータを設定すると、使用するディスク容量に関係なく、ユーザーが作成できるファイルとディレクトリの数が制限されます。 ほとんどの人は、特にディスクスペースの使用を制限するブロックベースのクォータを必要とします。 これが構成します。
注: ブロックの概念は十分に指定されておらず、どのコマンドラインツールがそれらを報告しているかなど、多くの要因に応じて変更される可能性があります。 Debianでクォータを設定する場合、1ブロックが1キロバイトのディスク容量に等しいと想定するのはかなり安全です。
上記のリストでは、ユーザー sammy は24ブロック、つまり/dev/vda1
ドライブで24KBのスペースを使用しています。 soft
とhard
の制限は、どちらも0
の値で無効になります。
各タイプのクォータでは、ソフト制限とハード制限の両方を設定できます。 ユーザーがソフト制限を超えると、クォータを超えますが、スペースやiノードの消費がすぐに妨げられることはありません。 代わりに、ある程度の余裕があります。ユーザーは、デフォルトで、ディスクの使用をソフト制限の下に戻すために7日間の猶予があります。 7日間の猶予期間が終了しても、ユーザーがまだソフト制限を超えている場合は、ハード制限として扱われます。 ハード制限はそれほど寛容ではありません。指定されたハード制限に達すると、新しいブロックまたはiノードのすべての作成が即座に停止されます。 これは、ディスクの容量が完全に不足しているように動作します。書き込みが失敗し、一時ファイルの作成に失敗し、ユーザーは一般的なタスクの実行中に警告とエラーを確認し始めます。
sammy ユーザーを更新して、100MBのソフト制限と110MBのハード制限を持つブロッククォータを設定しましょう。
Disk quotas for user sammy (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 24 100M 110M 7 0 0
ファイルを保存して閉じます。 新しいクォータを確認するには、quota
コマンドを使用できます。
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1001):
Filesystem space quota limit grace files quota limit grace
/dev/vda1 24K 100M 110M 7 0 0
このコマンドは、現在のクォータステータスを出力し、クォータが100M
であり、制限が110M
であることを示します。 これは、それぞれソフト制限とハード制限に対応します。
注:ユーザーがsudo
にアクセスせずに自分の割り当てを確認できるようにするには、手順4で作成した割り当てファイルを読み取る権限をユーザーに付与する必要があります。 これを行う1つの方法は、users
グループを作成し、それらのファイルをusers
グループで読み取り可能にしてから、すべてのユーザーもグループに配置されるようにすることです。
ユーザーとグループの所有権を含むLinuxパーミッションの詳細については、Linuxパーミッションの概要をお読みください。
setquota
を使用してユーザークォータを設定する
edquota
とは異なり、setquota
は、インタラクティブな編集手順なしで、ユーザーのクォータ情報を1つのコマンドで更新します。 ブロックベースとiノードベースの両方のクォータのユーザー名とソフトおよびハード制限を指定し、最後にクォータを適用するファイルシステムを指定します。
sudo setquota -u sammy 200M 220M 0 0 /
上記のコマンドは、sammyのブロックベースのクォータ制限を2倍にして200メガバイトと220メガバイトにします。 iノードベースのソフトおよびハード制限の0 0
は、それらが未設定のままであることを示します。 これは、iノードベースのクォータを設定していない場合でも必要です。
もう一度、quota
コマンドを使用して、作業を確認します。
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1001):
Filesystem space quota limit grace files quota limit grace
/dev/vda1 24K 200M 220M 7 0 0
いくつかのクォータを設定したので、クォータレポートを生成する方法を見てみましょう。
ステップ5–クォータレポートの生成
特定のファイルシステム上のすべてのユーザーの現在のクォータ使用量に関するレポートを生成するには、repquota
コマンドを使用します。
sudo repquota -s /
Output*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 981M 0K 0K 35234 0 0
nobody -- 7664K 0K 0K 3 0 0
ntp -- 12K 0K 0K 3 0 0
_apt -- 8K 0K 0K 2 0 0
debian -- 16K 0K 0K 4 0 0
sammy -- 24K 200M 220M 7 0 0
この例では、/
rootファイルシステムのレポートを生成しています。 -s
コマンドは、repquota
に、可能な場合は人間が読める形式の数字を使用するように指示します。 リストされているシステムユーザーは数人いますが、デフォルトでは割り当てが設定されていない可能性があります。 ユーザーsammyが下部に表示され、使用量とソフトおよびハードの制限が示されています。
Block grace time: 7days
コールアウトとgrace
列にも注意してください。 ユーザーがソフト制限を超えた場合、grace
列には、制限を下回るまでに残っている時間が表示されます。
次のステップでは、クォータシステムの猶予期間を更新します。
ステップ6–超過分の猶予期間を設定する
ユーザーがソフト制限を超えてフロートできる期間を構成できます。 これを行うには、setquota
コマンドを使用します。
sudo setquota -t 864000 864000 /
上記のコマンドは、ブロックとiノードの両方の猶予時間を864000秒、つまり10日に設定します。 この設定はすべてのユーザーに適用され、両方のタイプのクォータ(ブロックとブロック)を使用しない場合でも、両方の値を指定する必要があります。 iノード)。
値
repquota
を再度実行して、変更が有効になったことを確認します。
sudo repquota -s /
OutputBlock grace time: 10days; Inode grace time: 10days
. . .
変更は、repquota
出力にすぐに反映されます。
結論
このチュートリアルでは、quota
コマンドラインツールをインストールし、1人のユーザーにブロックベースのクォータを設定し、ファイルシステムのクォータ使用量に関するレポートを生成しました。
付録:一般的なクォータ関連のエラーメッセージ
以下は、ファイルシステムクォータを設定および操作するときに表示される可能性のある一般的なエラーです。
quotaon Outputquotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]
これは、最初のquotacheck
コマンドを実行する前に(quotaon
を使用して)クォータをオンにしようとした場合に表示される可能性のあるエラーです。 quotacheck
コマンドは、クォータシステムをオンにするために必要なaquota
またはquota
ファイルを作成します。 詳細については、ステップ3を参照してください。
quota Outputquota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory
これは、quota
を実行していて、現在のユーザーにファイルシステムのクォータファイルを読み取る権限がない場合に表示されるエラーです。 ユーザー(またはシステム管理者)は、ファイルのアクセス許可を適切に調整するか、クォータファイルへのアクセスが必要なコマンドを実行するときにsudo
を使用する必要があります。
ユーザーとグループの所有権を含むLinuxパーミッションの詳細については、Linuxパーミッションの概要をお読みください。