Ubuntu でファイルシステム (ディスク) クォータを設定する方法
ファイルシステム クォータは、Linux カーネルにある標準の組み込み機能です。クォータは、ユーザーのアクティビティをサポートするためにファイルに必要なスペースの量を決定します。ディスク クォータにより、ユーザーがシステム上に作成できるファイルの数も制限されます。
クォータ システムをサポートするファイル システムには、xfs、ext2、ext4、および ext3 などがあります。クォータの割り当ては、ファイルシステムおよび各ユーザーに固有です。この記事には、 マルチユーザーのUbuntu環境でのクォータ ファイルシステムの操作について知っておく必要があるすべてが記載されています。
ここでの前提は、sudo 権限を与えられたユーザー (tecmint) でUbuntu システムを使用していることです。ここで共有されたアイデアは、適切な実装テクニックを使用している限り、どの 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
: ユーザーベースのクォータ ファイルが作成されることを示します。-g
: グループベースのクォータ ファイルが作成されることを示します。-m
: ファイル システムの読み取り専用としての再マウントを無効にすると同時に、ユーザーがファイルを保存し続ける環境で正確な結果を提供します。 m オプションはセットアップ中に必須ではありません。
ユーザーまたはグループに基づいてクォータの使用を有効にする必要がない場合は、クォータチェックオプションを実行する必要はありません。これを確認するには、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
quotacheck コマンドに u
パラメータと g
パラメータを含めないと、対応するファイルが失われます。
これで、次のコマンドを使用して、ルート (/)
ファイルシステムでクォータを有効にする準備が整いました。
sudo quotaon -v /
ステップ 5: 単一ユーザーのクォータを構成する
edquota および setquota コマンドを使用して、ユーザーまたはグループにそれらを設定できます。
edquota の使用
edquota コマンド はクォータを編集します。たとえば、次のコマンドを使用して tecmint ユーザーに属するクォータを編集できます。
sudo edquota -u tecmint
-u
オプションを使用すると、クォータがユーザーに属することを指定します。グループに属するクォータを編集する必要がある場合は、-g
オプションを使用します。このコマンドは、選択したテキスト エディターを使用してファイルを開きます。
出力には、ユーザー名、uid、アクティブなクォータを持つファイルシステム、およびブロックと i ノードの使用状況がリストされます。 i ノードに基づくクォータにより、ディスク上で使用するサイズに関係なく、ユーザーが作成できるファイルとディレクトリの数が制限されます。ほとんどの管理者は、 ディスク容量を制御するブロックベースのクォータを好みます。
注: ブロックの使用は、ブロックを報告するコマンドライン ツールなどのさまざまな要因に応じてブロックがどのように変化するかを示すものではありません。 Ubuntu のコンテキスト クォータ内では、1 つのブロックが 1 キロバイトのディスク領域と同じであると想定できます。
上記のコマンド ラインを使用すると、ユーザーは 2032 ブロックを使用します。これは、/dev/sda1 上の 2032 KB のスペースと同じです。 0 値は、ソフト制限とハード制限の両方を無効にします。
すべてのクォータ セットでは、ソフト制限とハード制限を設定できます。ソフト制限を超えるユーザーは割り当てを超えている可能性がありますが、それ以上のスペースまたは i ノードの使用が妨げられるわけではありません。このような場合、ユーザーはソフト リミット スペースを引き換えるまで 7 日間の期限があり、それを怠るとファイルの保存や作成が困難になります。
ハード制限とは、制限に達した時点で新しいブロックまたは i ノードの作成が停止されることを意味します。ユーザーは、通常のタスクの実行中に警告やエラーが表示されると報告します。
tecmint のブロック クォータを更新して、ソフト制限を 100MB に、ハード制限を 110MB に設定できます。
編集後、ファイルを閉じ、quota コマンドを使用して新しいユーザーのクォータ制限設定を確認します。
sudo quota -vs tecmint
注: sudo コマンドを呼び出さずにクォータを分析する機会をユーザーに与えるには、ユーザーには、実行中にクォータ ファイルを読み取るアクセス権が与えられている必要があります。ステップ 4 の作成フェーズ。これを行う簡単な方法の 1 つは、ユーザーのグループを作成し、そのグループにユーザーを追加できるようにアクセス権を付与することです。
setquota の使用
setquota は、対話型のセットアップを行わずに、単一のコマンドを使用してクォータ情報を更新します。このコマンドには、ユーザー名と、ブロックと i ノードが使用するソフト制限とハード制限の両方の設定が必要です。クォータが使用するファイル システムも宣言する必要があります。
sudo setquota -u tecmint 200M 220M 0 0 /
このコマンドにより、ブロックベースのクォータ制限が 2 倍の 200 メガバイトと 220 メガバイトになります。 2 つの 0 0
は、ハード制限とソフト制限の両方が設定されていないことを示します。これは、inode ベースのクォータを設定する必要がない場合でも必須です。
いつものように、quota コマンドを使用して進行状況を確認します。
sudo quota -vs tecmint
ステップ 6: クォータ レポートの生成
クォータ レポートを生成するには、すべてのユーザーの使用状況を示す必要があります。コマンドrepquota が使用されます。
sudo repquota -s /
上記の出力は、/
ルート ファイルシステムに関するレポートです。 -s
は、repquota に人間が判読できる形式で結果を与えるように指示します。
デフォルトのブロック猶予時間は7 日です。猶予列は、リソース ディスクへのアクセスが拒否されるまでの日数をユーザーに警告します。
ステップ 7: 構成猶予期間を設定する
猶予期間とは、ユーザーがデフォルトのタイミングを超えて作業する許可を得る期間です。
sudo setquota -t 864000 864000 /
このコマンドは、ブロックと i ノードに、10 日に相当する 864000 秒の猶予期間を設けるように指示します。この設定はすべてのユーザーに影響するため、ブロックや 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 を使用するだけで済みます。
結論
記事の冒頭ではクォータコマンドライン ツールとカーネル バージョンの確認から始め、さらに単一ユーザーに対するブロックベースのクォータを設定する方法とその方法について説明しました。ファイルシステムのクォータ使用量に関するレポートを生成します。
この記事では、一般的なエラーと、追加のパッケージを使用するかシステムのカーネル バージョンを確認することによってそれらを回避する方法についても説明します。