Ubuntuでファイルシステム(ディスク)クォータを設定する方法


ファイルシステムクォータは、Linuxカーネルにある標準の組み込み機能です。クォータは、ファイルがユーザーアクティビティをサポートするために必要なスペースの量を決定します。ディスククォータは、ユーザーがシステム上に作成できるファイルの数も制限します。

クォータシステムをサポートするファイルシステムには、いくつか言及すると、xfs、ext2、ext4、およびext3が含まれます。クォータの割り当ては、ファイルシステムおよび各ユーザーに固有です。この記事には、マルチユーザーのUbuntu18.04環境でクォータファイルシステムを操作するために知っておく必要のあるすべての情報が含まれています。

ここでの前提は、sudo権限が付与されたユーザー(tecmint)でUbuntu18.04システムを使用していることです。ここで共有するアイデアは、適切な実装手法を使用している限り、どのLinuxディストリビューションでも機能します。

ステップ1:Ubuntuにクォータをインストールする

クォータを準備して使用できるようにするには、aptコマンドを使用してクォータコマンドラインツールをインストールしますが、その前にシステムソフトウェアパッケージを更新する必要があります。

$ sudo apt update

次のコマンドを使用して、Ubuntuにクォータパッケージをインストールします。

$ sudo apt install quota

Y を押してから、Enterキーを押してインストールプロセスを開始します。

以下のコマンドを実行して、インストールバージョンを確認します。バージョン番号は、以下に表示されているものと異なる場合があります。

$ quota --version

ステップ2:クォータカーネル用のモジュールをインストールする

クラウドベースの仮想システムを実行している場合、デフォルトのUbuntuインストールには、クォータの使用をサポートするカーネルモジュールがない可能性があります。検索ツールを使用して確認し、2つのモジュールquota_v1とquota_v2が/ lib/modulesディレクトリ内にあることを確認する必要があります。

$ find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'

これは、上記のコマンドの結果であるはずです。

2つのモジュールが存在する限り、カーネルのバージョンについて心配する必要はありません。見つからない場合は、次のコマンドを使用して、図のようにクォータカーネルモジュールをインストールします。

$ sudo apt install linux-image-extra-virtual

クォータの実装に必要な適切なモジュールを入手できます。

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

クォータを特定のシステムでアクティブにするには、関連するクォータオプションを使用してマウントする必要があります。これを行うには、/ etc/fstabファイルにあるファイルシステムエントリを更新します。

$ sudo nano /etc/fstab

ファイルを適切に編集する準備ができているはずです。 fstabファイルとデスクトップファイルの違いは、/またはルートファイルシステムがディスクスペース全体を表す方法の違いです。以下の行を使用して、ルートシステムを指す行(/)を置き換えます。

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0

行が変更され、userquotaとgrpquotaにアクセスできるようになります。最終構成の一部ではないものを残すことができます。 fstabにいくつかのオプションがある場合は、行の最後に新しいオプションを追加します。追加を行うときは、新しいアイテムをコンマで区切りますが、間隔は空けません。

変更を有効にするには、ファイルシステムを再マウントします。

$ sudo mount -o remount /

注:このようなエラーを回避するために、/ etc/fstabのオプション間にスペースが存在しないことを確認してください。

mount: /etc/fstab: parse error

/ proc/mountsファイルにファイルシステムをマウントするときの新しいオプションの使用の検証は、grepを介して行われます。このコマンドは、ファイル内のルートファイルシステムエントリを表示します。

$ sudo cat /proc/mounts | grep ' / '

出力から、設定した2つのオプションを確認できます。クォータシステムをオンにする時が来ました。

ステップ4:Ubuntuでディスククォータを有効にする

まず、quotacheckコマンドを実行する必要があります。

$ sudo quotacheck -ugm /

このコマンドは、ファイルシステムの制限と使用法に関する情報を持つクォータユーザーとクォータグループの2つのファイルを作成します。クォータの使用を開始する前に、これらのファイルが存在している必要があります。

パラメータの定義は次のとおりです。

  • -u: symbolizes a user-based quota file will be created.
  • -g: indicates that a group-based quota file will be created.
  • -m: disables remounting of the file system as a read-only while at the same time gives accurate results in an environment where the user keeps saving files. The m option is not mandatory during setup.

ユーザーまたはグループに基づいてクォータの使用を有効にする必要がない場合は、quotacheckオプションを実行する必要はありません。 lsコマンドを使用してルートディレクトリを一覧表示することにより、これを確認します。

$ ls /
aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

クォータチェックコマンドに u および g パラメータを含めないと、対応するファイルが失われます。

これで、次のコマンドを使用して、ルート(/)ファイルシステムでクォータをオンにする準備ができました。

$ sudo quotaon -v /

手順5:シングルユーザーの割り当てを構成する

edquotaコマンドとsetquotaコマンドを使用して、ユーザーまたはグループ用に設定できます。

edquotaコマンドはクォータを編集します。たとえば、次を使用してtecmintユーザーに属するクォータを編集できます。

$ sudo edquota -u tecmint

-u オプションを使用すると、クォータがユーザーに属することを指定します。グループに属するクォータを編集する必要がある場合は、 -g オプションを使用します。このコマンドは、選択したテキストエディタを使用してファイルを開きます。

出力には、ユーザー名、uid、アクティブなクォータを持つファイルシステム、およびブロックとiノードの使用法が一覧表示されます。 iノードに基づくクォータは、ディスクで使用するサイズに関係なく、ユーザーが作成できるファイルとディレクトリの数を制限します。ほとんどの管理者は、ディスク容量を制御するブロックベースのクォータを好みます。

注:ブロックの使用は、ブロックを報告するコマンドラインツールなどのさまざまな要因に応じてブロックがどのように変化するかを示していません。 Ubuntuのコンテキストクォータ内では、1つのブロックが1キロバイトのディスクスペースと同じであると想定できます。

上記のコマンドラインを使用すると、ユーザーは2032ブロックを使用します。これは、/ dev/sda1の2032KBのスペースと同じです。 0の値は、ソフト制限とハード制限の両方を無効にします。

すべてのクォータセットで、ソフト制限とハード制限を設定できます。ソフト制限を超えたユーザーは、クォータを超えている可能性がありますが、より多くのスペースまたはiノードを使用することを禁じられていません。このような場合、ユーザーは7日以内にソフト制限スペースを利用できます。これを怠ると、ファイルの保存や作成が困難になります。

ハード制限とは、制限に達した瞬間に新しいブロックまたはiノードの作成が停止することを意味します。ユーザーは、通常のタスクの実行中に警告またはエラーが表示されたことを報告します。

tecmintのブロッククォータを更新して、ソフト制限を100 MB、ハード制限を110MBにすることができます。

編集後、ファイルを閉じ、quotaコマンドを使用して新しいユーザークォータ制限設定を確認します。

$ sudo quota -vs tecmint

注:ユーザーにsudoコマンドを呼び出さずにクォータを分析する機会を与えるには、ステップ4の作成フェーズでクォータファイルを読み取るためのアクセス権をユーザーに付与する必要があります。これを行う簡単な方法の1つは、ユーザーのグループを作成し、グループにアクセス権を付与して、ユーザーをグループに追加できるようにすることです。

setquotaは、インタラクティブな設定なしで1つのコマンドを使用してクォータ情報を更新します。このコマンドにはユーザー名が必要であり、ブロックとiノードが使用するソフト制限とハード制限の両方を設定します。また、クォータが使用するファイルシステムを宣言する必要があります。

$ sudo setquota -u tecmint 200M 220M 0 0 /

このコマンドは、ブロックベースのクォータ制限を2倍にして200メガバイトと220メガバイトにします。 2つの 0 0 は、ハード制限とソフト制限の両方が設定されていないことを示します。これは、iノードベースのクォータを設定する必要がない場合でも要件です。

いつものように、quotaコマンドを使用して進行状況を確認します。

$ sudo quota -vs tecmint

ステップ6:クォータレポートの生成

クォータレポートを生成するには、すべてのユーザーからの使用状況を示す必要があります。コマンドrepquotaが使用されます。

$ sudo repquota -s /

上記の出力は、/ルートファイルシステムに関するレポートです。 -s は、人間が読める形式で結果を提供するようにrepquotaに指示します。

デフォルトのブロック猶予時間は7日です。猶予列は、リソースディスクへのアクセスが拒否されるまでの日数をユーザーに警告します。

手順7:構成の猶予期間を設定する

猶予期間とは、ユーザーがデフォルトのタイミングを超えて作業する許可を取得する時間です。

$ sudo setquota -t 864000 864000 /

このコマンドは、ブロックとiノードに864000秒の猶予期間を10日に相当するように指示します。この設定はすべてのユーザーに影響するため、ブロックやiノードを使用しない場合でも値を設定する必要があります。時間の値は秒単位である必要があります。

変更を確認し、次のコマンドを使用して有効になったかどうかを確認します。

$ sudo repquota -s /

一般的なエラーメッセージ

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

上記のエラーは、コマンドquotacheckを使用してクォータのステータスを確認する前に、コマンドqoutaonを使用してクォータをオンにしようとした場合によく発生します。

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

このエラーは、カーネルがサポートしていないか、マシンのバージョンが間違っている可能性があることを管理者に通知します(quota_v1とquota_v2があります)。 Ubuntuの場合、このようなエラーはクラウドベースの仮想サーバーでよく見られます。

aptコマンドを使用してLinux-image-extra-virtualパッケージをインストールすることにより、エラーを修正します。

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

このエラーは、現在のユーザーにクォータファイルを読み取る権限がない場合に顕著です。管理者は、クォータシステムまたはファイル内のファイルにアクセスする必要がある場合にのみ、適切な権限の変更を行うか、sudoを使用する必要があります。

記事の冒頭で、クォータコマンドラインツールとカーネルバージョンの検証から始め、さらに、シングルユーザーのブロックベースのクォータを設定する方法とファイルシステムクォータに関するレポートを生成する方法について説明しました。使用法。

この記事では、一般的なエラーと、追加のパッケージを使用したり、システムのカーネルバージョンを確認したりしてエラーを回避する方法についても説明します。