前書き

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

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

前提条件

このチュートリアルでは、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-で説明されているように、ルート以外のsudo対応ユーザーでDebian 10サーバーにログインしていることを前提としています。 10 [Debian 10での初期サーバー設定]。

このチュートリアルのテクニックは、一般にDebian以外のLinuxディストリビューションで機能するはずですが、多少の適応が必要になる場合があります。

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

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

sudo apt update
sudo apt install quota

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

quota --version
OutputQuota utilities version .
. . .

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

次に、ファイルシステムの `+ 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   0   1

既存のオプションの最後に新しいオプションを追加します。すべてのオプションはスペースなしでコンマで区切ってください。 上記の変更により、ファイルシステムでユーザーベース( + usrquota +)とグループベース( + grpquota +)の両方のクォータを有効にできます。 どちらか一方のみが必要な場合は、未使用のオプションを省略できます。

ファイルシステムを再マウントして、新しいオプションを有効にします。

sudo mount -o remount /

`+ / proc / mounts `ファイルを見ることで、新しいオプションがファイルシステムのマウントに使用されたことを確認できます。 ここでは、 ` grep +`を使用して、そのファイルのルートファイルシステムエントリのみを表示します。

cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,,,errors=remount-ro,data=ordered 0 0

指定した2つのオプションに注意してください。 ツールをインストールし、ファイルシステムオプションを更新したので、クォータシステムを有効にできます。

ステップ3 –クォータを有効にする

最終的にクォータシステムを有効にする前に、手動で `+ quotacheck +`コマンドを1回実行する必要があります。

sudo quotacheck -ugm /

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

  • * + u +:*は、ユーザーベースのクォータファイルを作成することを指定します

  • * + g +:*は、グループベースのクォータファイルを作成することを示します

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

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

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

ls /
Output  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  sys  usr  vmlinuz
  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 +`コマンドを使用して quota sを ed itします。 サンプルの* sammy *ユーザーのクォータを編集してみましょう。

sudo edquota -u

`+ -u `オプションは、これが編集する ` user `クォータであることを指定します。 代わりにグループの割り当てを編集する場合は、代わりに「 -g +」オプションを使用します。

これは、デフォルトのテキストエディターでファイルを開きます。これは、 `+ crontab -e +`が編集用の一時ファイルを開く方法と同様です。 ファイルは次のようになります。

Disk quotas for user  (uid 1001):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
 /dev/vda1                        24          0          0          7        0        0

これには、ユーザー名と「+ uid +」、クォータが有効になっているファイルシステム、および_block_-および_inode_ベースの使用と制限が一覧表示されます。 iノードベースのクォータを設定すると、ユーザーが使用するディスク容量に関係なく、ユーザーが作成できるファイルとディレクトリの数が制限されます。 ほとんどの人は、ブロックベースのクォータが必要になります。これは、特にディスクスペースの使用を制限します。 これが設定されます。

クォータの各タイプでは、_soft limit_と_hard limit_の両方を設定できます。 ユーザーがソフト制限を超えると、クォータを超えますが、より多くのスペースやiノードを消費することはすぐには防止されません。 代わりに、ある程度の余裕が与えられます。ユーザーは、デフォルトで7日間、ディスクの使用をソフト制限の下に戻すことができます。 7日間の猶予期間の終わりに、ユーザーがまだソフト制限を超えている場合、ハード制限として扱われます。 ハード制限はそれほど寛容ではありません。指定されたハード制限に達すると、新しいブロックまたはiノードの作成はすべて直ちに停止されます。 これは、ディスクが完全にスペース不足であるかのように動作します。書き込みは失敗し、一時ファイルの作成は失敗し、ユーザーは一般的なタスクの実行中に警告とエラーを見始めます。

  • sammy *ユーザーを更新して、100 MBのソフト制限と110 MBのハード制限でブロッククォータを設定します。

Disk quotas for user  (uid 1001):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
 /dev/vda1                        24                        7        0        0

ファイルを保存して閉じます。 新しいクォータを確認するには、 `+ quota +`コマンドを使用できます。

sudo quota -vs
OutputDisk quotas for user  (uid 1001):
    Filesystem   space   quota   limit   grace   files   quota   limit   grace
     /dev/vda1     24K                       7       0       0

このコマンドは、現在のクォータステータスを出力し、クォータが「+ 100M 」であるのに対し、制限が「​​ 110M +」であることを示します。 これは、それぞれソフト制限とハード制限に対応します。

`+ setquota +`を使用してユーザークォータを設定する

「+ edquota 」とは異なり、「 setquota +」はインタラクティブな編集手順なしで、単一のコマンドでユーザーのクォータ情報を更新します。 ユーザー名と、ブロックベースとiノードベースの両方のクォータにソフト制限とハード制限を指定し、最後にクォータを適用するファイルシステムを指定します。

sudo setquota -u  200M 220M 0 0 /

上記のコマンドは、* sammy *のブロックベースのクォータ制限を200メガバイトと220メガバイトに倍増します。 iノードベースのソフト制限とハード制限の「0 0」は、それらが未設定のままであることを示します。 これは、iノードベースのクォータを設定していない場合でも必要です。

もう一度、 `+ quota`コマンドを使用して作業を確認します。

sudo quota -vs
OutputDisk quotas for user  (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

この例では、 + / + * root ファイルシステムのレポートを生成しています。 `+ -s `コマンドは、可能であれば人間が読める数字を使用するように ` repquota +`に指示します。 おそらくデフォルトでクォータが設定されていないシステムユーザーがいくつか表示されます。 ユーザー sammy *が下部に表示され、使用量とソフト制限とハード制限が示されます。

また、「+ Block grace time:7days 」コールアウトと「 grace 」列にも注意してください。 ユーザーがソフト制限を超えていた場合、「 grace +」列には、制限の下に戻るまでの残り時間が表示されます。

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

ステップ6 –超過分の猶予期間の構成

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

sudo setquota -t 864000 864000 /

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

値は秒単位で指定する必要があります。

`+ repquota +`を再度実行して、変更が有効になったことを確認します。

sudo repquota -s /
OutputBlock grace time: ; Inode grace time:
. . .

変更はすぐに `+ 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 +`ファイルを作成します。 詳細については、link:#step-3-%E2%80%93-enabling-quotas [ステップ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のアクセス許可の詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions [Linuxのアクセス許可の概要]をご覧ください。