序章

クォータは、ユーザーまたはグループがファイルシステムで使用できるディスクスペースの量を制限するために使用されます。 このような制限がないと、ユーザーはマシンのディスクをいっぱいにして、他のユーザーやサービスに問題を引き起こす可能性があります。

このチュートリアルでは、コマンドラインツールをインストールしてディスククォータを作成および検査し、サンプルユーザーのクォータを設定します。

前提条件

このチュートリアルは、 Debian 9 での初期サーバー設定で説明されているように、root以外のsudo対応ユーザーでDebian9サーバーにログインしていることを前提としています。

このチュートリアルの手法は、通常、Debian以外のLinuxディストリビューションでも機能するはずですが、多少の調整が必要になる場合があります。

ステップ1-クォータツールのインストール

クォータを設定および確認するには、最初にを使用してクォータコマンドラインツールをインストールする必要があります apt. パッケージリストを更新してから、パッケージをインストールしましょう。

sudo apt update
sudo apt install quota

ツールがインストールされていることを確認するには、 quota コマンドとそのバージョン情報の要求:

quota --version
Output
Quota utilities version 4.03. . . .

出力にわずかに異なるバージョン番号が表示されている場合は問題ありません。

次に、ファイルシステムを更新します mount rootファイルシステムでクォータを有効にするオプション。

ステップ2–ファイルシステムのマウントオプションを更新する

特定のファイルシステムでクォータをアクティブ化するには、いくつかのクォータ関連のオプションを指定してファイルシステムをマウントする必要があります。 これを行うには、ファイルシステムのエントリを更新します。 /etc/fstab 構成ファイル。 今すぐお気に入りのテキストエディタでそのファイルを開きます。

sudo nano /etc/fstab

ファイルの内容は次のようになります。

/ 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
# /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 ファイル。 後にスペースを入れると , カンマを使用すると、次のようなエラーが表示されます。

Output
mount: /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 一度コマンド:

sudo quotacheck -ugm /

このコマンドはファイルを作成します /aquota.user/aquota.group. これらのファイルには、ファイルシステムの制限と使用法に関する情報が含まれており、クォータ監視をオンにする前に存在している必要があります。 The quotacheck 使用したパラメータは次のとおりです。

  • u:は、ユーザーベースのクォータファイルを作成する必要があることを指定します
  • g:は、グループベースのクォータファイルを作成する必要があることを示します
  • m:は、クォータの初期集計を実行している間、ファイルシステムを読み取り専用として再マウントすることを無効にします。 ファイルシステムを読み取り専用として再マウントすると、ユーザーがプロセス中にファイルをアクティブに保存している場合に、より正確な結果が得られますが、この初期設定では必要ありません。

ユーザーベースまたはグループベースのクォータを有効にする必要がない場合は、対応するクォータを省略できます。 quotacheck オプション。

ルートディレクトリを一覧表示することで、適切なファイルが作成されたことを確認できます。

ls /
Output
aquota.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

含まなかった場合 u また g のオプション quotacheck コマンドを実行すると、対応するファイルが失われます。 これで、クォータシステムをオンにする準備が整いました。

sudo quotaon -v /
Output
/dev/vda1 [/]: group quotas turned on /dev/vda1 [/]: user quotas turned on

サーバーは現在、クォータを監視および適用していますが、まだ設定していません。 次に、1人のユーザーのディスククォータを設定します。

ステップ4–ユーザーのクォータを構成する

ユーザーまたはグループの割り当てを設定する方法はいくつかあります。 ここでは、両方でクォータを設定する方法について説明します。 edquotasetquota コマンド。

使用する edquota ユーザークォータを設定するには

を使用します edquota ed it quotesへのコマンド。 この例のsammyユーザーのクォータを編集してみましょう。

sudo edquota -u sammy

The -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、クォータが有効になっているファイルシステム、およびblock-およびinodeベースの使用法と制限。 iノードベースのクォータを設定すると、使用するディスク容量に関係なく、ユーザーが作成できるファイルとディレクトリの数が制限されます。 ほとんどの人は、特にディスクスペースの使用を制限するブロックベースのクォータを必要とします。 これが構成します。

注: ブロックの概念は十分に指定されておらず、どのコマンドラインツールがそれらを報告しているかなど、多くの要因に応じて変更される可能性があります。 Debianでクォータを設定する場合、1ブロックが1キロバイトのディスク容量に等しいと想定するのはかなり安全です。

上記のリストでは、ユーザー sammy は24ブロック、つまり24KBのスペースを使用しています。 /dev/vda1 ドライブ。 The softhard 制限は両方とも無効になります 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
Output
Disk 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メガバイトにします。 The 0 0 iノードベースのソフトおよびハード制限の場合、それらが未設定のままであることを示します。 これは、iノードベースのクォータを設定していない場合でも必要です。

もう一度、 quota 私たちの仕事をチェックするコマンド:

sudo quota -vs sammy
Output
Disk 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ファイルシステム。 The -s コマンドは指示します repquota 可能な場合は人間が読める番号を使用します。 リストされているシステムユーザーは数人いますが、デフォルトでは割り当てが設定されていない可能性があります。 ユーザーsammyが下部に表示され、使用量とソフトおよびハードの制限が示されています。

また、 Block grace time: 7days コールアウト、および grace 桁。 ユーザーがソフト制限を超えた場合、 grace 列には、制限を下回るまでに残っている時間が表示されます。

次のステップでは、クォータシステムの猶予期間を更新します。

ステップ6–超過分の猶予期間を設定する

ユーザーがソフト制限を超えてフロートできる期間を構成できます。 を使用します setquota そうするためのコマンド:

sudo setquota -t 864000 864000 /

上記のコマンドは、ブロックとiノードの両方の猶予時間を864000秒、つまり10日に設定します。 この設定はすべてのユーザーに適用され、両方のタイプのクォータ(ブロックとブロック)を使用しない場合でも、両方の値を指定する必要があります。 iノード)。

は秒単位で指定する必要があることに注意してください。

走る repquota 変更が有効になったことをもう一度確認します。

sudo repquota -s /
Output
Block grace time: 10days; Inode grace time: 10days . . .

変更はすぐにに反映される必要があります repquota 出力。

結論

このチュートリアルでは、 quota コマンドラインツールを使用して、1人のユーザーにブロックベースのクォータを設定し、ファイルシステムのクォータ使用量に関するレポートを生成しました。

以下は、ファイルシステムクォータを設定および操作するときに表示される可能性のある一般的なエラーです。

quotaon Output
quotaon: cannot find //aquota.group on /dev/vda1 [/] quotaon: cannot find //aquota.user on /dev/vda1 [/]

これは、クォータをオンにしようとした場合に表示される可能性のあるエラーです( quotaon)イニシャルを実行する前に quotacheck 指図。 The quotacheck コマンドは aquota また quota クォータシステムをオンにするために必要なファイル。 詳細については、ステップ3を参照してください。

quota Output
quota: 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のアクセス許可の概要をお読みください。