序章
クォータは、ユーザーまたはグループがファイルシステムで使用できるディスクスペースの量を制限するために使用されます。 このような制限がないと、ユーザーはマシンのディスクをいっぱいにして、他のユーザーやサービスに問題を引き起こす可能性があります。
このチュートリアルでは、コマンドラインツールをインストールしてディスククォータを作成および検査し、サンプルユーザーのクォータを設定します。
前提条件
このチュートリアルでは、 Ubuntu 18.04 でのサーバーの初期設定で説明されているように、root以外のsudo対応ユーザーでUbuntu18.04サーバーにログインしていることを前提としています。
このチュートリアルの手法は、通常、Ubuntu以外のLinuxディストリビューションで機能するはずですが、ある程度の調整が必要になる場合があります。
ステップ1-クォータツールのインストール
クォータを設定および確認するには、最初にを使用してクォータコマンドラインツールをインストールする必要があります apt
. パッケージリストを更新してから、パッケージをインストールしましょう。
sudo apt update
sudo apt install quota
ツールがインストールされていることを確認するには、 quota
コマンドとそのバージョン情報の要求:
quota --version
OutputQuota utilities version 4.04.
. . .
出力にわずかに異なるバージョン番号が表示されている場合は問題ありません。
次に、クォータを監視するための適切なカーネルモジュールがあることを確認します。
ステップ2–クォータカーネルモジュールのインストール
クラウドベースの仮想サーバーを使用している場合、デフォルトのUbuntu Linuxインストールには、クォータ管理をサポートするために必要なカーネルモジュールが含まれていない可能性があります。 確認するには、 find
検索するには quota_v1
と quota_v2
のモジュール /lib/modules/...
ディレクトリ:
find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'
Output/lib/modules/4.15.0-45-generic/kernel/fs/quota/quota_v1.ko
/lib/modules/4.15.0-45-generic/kernel/fs/quota/quota_v2.ko
上記のファイルパスで強調表示されているカーネルバージョンは異なる可能性がありますが、2つのモジュールがリストされている限り、すべて設定されており、この手順の残りをスキップできます。
上記のコマンドから出力が得られない場合は、 linux-image-extra-virtual
パッケージ:
sudo apt install linux-image-extra-virtual
これにより、クォータの実装に必要なカーネルモジュールが提供されます。 前を実行します find
もう一度コマンドを実行して、インストールが成功したことを確認します。
次に、ファイルシステムを更新します mount
rootファイルシステムでクォータを有効にするオプション。
ステップ3–ファイルシステムのマウントオプションを更新する
特定のファイルシステムでクォータをアクティブ化するには、いくつかのクォータ関連のオプションを指定してファイルシステムをマウントする必要があります。 これを行うには、ファイルシステムのエントリを更新します。 /etc/fstab
構成ファイル。 今すぐお気に入りのテキストエディタでそのファイルを開きます。
sudo nano /etc/fstab
このファイルの内容は次のようになります。
LABEL=cloudimg-rootfs / ext4 defaults 0 0
LABEL=UEFI /boot/efi vfat defaults 0 0
これ fstab
ファイルは仮想サーバーからのものです。 デスクトップまたはラップトップコンピュータはおそらくわずかに異なるでしょう fstab
、しかしほとんどの場合、 /
または、すべてのディスク領域を表すrootファイルシステム。
ルートファイルシステムを指す行を更新して、 defaults
次の強調表示されたオプションを持つオプション:
LABEL=cloudimg-rootfs / ext4 usrquota,grpquota 0 0
. . .
この変更により、両方のユーザーを有効にすることができます-(usrquota
)およびグループベース(grpquota
)ファイルシステムのクォータ。 どちらか一方だけが必要な場合は、未使用のオプションを省略できます。 もしあなたの fstab
行には、代わりにいくつかのオプションがすでにリストされていました defaults
、すでに存在するものの最後に新しいオプションを追加する必要があります。すべてのオプションは、スペースを入れずにコンマで区切ってください。
ファイルシステムを再マウントして、新しいオプションを有効にします。
sudo mount -o remount /
注:リストされているオプションの間にスペースがないことを確認してください /etc/fstab
ファイル。 後にスペースを入れると ,
カンマを使用すると、次のようなエラーが表示されます。
Outputmount: /etc/fstab: parse error
前の実行後にこのメッセージが表示された場合 mount
コマンド、再度開きます fstab
ファイルを作成し、エラーを修正して、 mount
続行する前にコマンド。
新しいオプションがファイルシステムのマウントに使用されたことを確認するには、 /proc/mounts
ファイル。 ここでは、 grep
そのファイルのルートファイルシステムエントリのみを表示するには、次のようにします。
cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota,data=ordered 0 0
指定した2つのオプションに注意してください。 ツールをインストールし、ファイルシステムオプションを更新したので、クォータシステムをオンにできます。
ステップ4–クォータを有効にする
最終的にクォータシステムをオンにする前に、手動で実行する必要があります quotacheck
一度コマンド:
sudo quotacheck -ugm /
このコマンドはファイルを作成します /aquota.user
と /aquota.group
. これらのファイルには、ファイルシステムの制限と使用法に関する情報が含まれており、クォータ監視をオンにする前に存在している必要があります。 The quotacheck
使用したパラメータは次のとおりです。
- u:は、ユーザーベースのクォータファイルを作成する必要があることを指定します
- g:は、グループベースのクォータファイルを作成する必要があることを示します
- m:は、クォータの初期集計を実行している間、ファイルシステムを読み取り専用として再マウントすることを無効にします。 ファイルシステムを読み取り専用として再マウントすると、ユーザーがプロセス中にファイルをアクティブに保存している場合に、より正確な結果が得られますが、この初期設定では必要ありません。
ユーザーベースまたはグループベースのクォータを有効にする必要がない場合は、対応するクォータを省略できます。 quotacheck
オプション。
ルートディレクトリを一覧表示することで、適切なファイルが作成されたことを確認できます。
ls /
Outputaquota.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
のオプション quotacheck
コマンドを実行すると、対応するファイルが失われます。 これで、クォータシステムをオンにする準備が整いました。
sudo quotaon -v /
サーバーは現在、クォータを監視および適用していますが、まだ設定していません。 次に、1人のユーザーのディスククォータを設定します。
ステップ5–ユーザーのクォータを構成する
ユーザーまたはグループの割り当てを設定する方法はいくつかあります。 ここでは、両方でクォータを設定する方法について説明します。 edquota
と setquota
コマンド。
使用する edquota
ユーザークォータを設定するには
を使用します edquota
ed it quotesへのコマンド。 この例のsammyユーザーのクォータを編集してみましょう。
sudo edquota -u sammy
The -u
オプションは、これが user
編集するクォータ。 代わりにグループの割り当てを編集する場合は、 -g
その代わりにオプション。
これにより、デフォルトのテキストエディタでファイルが開きます。 crontab -e
編集するための一時ファイルを開きます。 ファイルは次のようになります。
Disk quotas for user sammy (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 40 0 0 13 0 0
これはユーザー名と uid
、クォータが有効になっているファイルシステム、およびblock-およびinodeベースの使用法と制限。 iノードベースのクォータを設定すると、使用するディスク容量に関係なく、ユーザーが作成できるファイルとディレクトリの数が制限されます。 ほとんどの人は、特にディスクスペースの使用を制限するブロックベースのクォータを必要とします。 これが構成します。
注: ブロックの概念は十分に指定されておらず、どのコマンドラインツールがそれらを報告しているかなど、多くの要因に応じて変更される可能性があります。 Ubuntuでクォータを設定する場合、1ブロックが1キロバイトのディスクスペースに等しいと想定するのはかなり安全です。
上記のリストでは、ユーザー sammy は40ブロック、つまり40KBのスペースを使用しています。 /dev/vda1
ドライブ。 The soft
と hard
制限は両方とも無効になります 0
価値。
各タイプのクォータでは、ソフト制限とハード制限の両方を設定できます。 ユーザーがソフト制限を超えると、クォータを超えますが、スペースやiノードの消費がすぐに妨げられることはありません。 代わりに、ある程度の余裕があります。ユーザーは、デフォルトで、ディスクの使用をソフト制限の下に戻すために7日間の猶予があります。 7日間の猶予期間が終了しても、ユーザーがまだソフト制限を超えている場合は、ハード制限として扱われます。 ハード制限はそれほど寛容ではありません。指定されたハード制限に達すると、新しいブロックまたはiノードのすべての作成が即座に停止されます。 これは、ディスクの容量が完全に不足しているように動作します。書き込みが失敗し、一時ファイルの作成に失敗し、ユーザーは一般的なタスクの実行中に警告とエラーを確認し始めます。
sammy ユーザーを更新して、100MBのソフト制限と110MBのハード制限を持つブロッククォータを設定しましょう。
Disk quotas for user sammy (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 40 100M 110M 13 0 0
ファイルを保存して閉じます。 新しい割り当てを確認するには、 quota
指図:
sudo quota -vs sammy
OutputDisk quotas for user sammy (uid 1000):
Filesystem space quota limit grace files quota limit grace
/dev/vda1 40K 100M 110M 13 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
OutputDisk quotas for user sammy (uid 1000):
Filesystem space quota limit grace files quota limit grace
/dev/vda1 40K 200M 220M 13 0 0
いくつかのクォータを設定したので、クォータレポートを生成する方法を見てみましょう。
ステップ6–クォータレポートの生成
特定のファイルシステム上のすべてのユーザーの現在のクォータ使用量に関するレポートを生成するには、 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 -- 1696M 0K 0K 75018 0 0
daemon -- 64K 0K 0K 4 0 0
man -- 1048K 0K 0K 81 0 0
nobody -- 7664K 0K 0K 3 0 0
syslog -- 2376K 0K 0K 12 0 0
sammy -- 40K 100M 110M 13 0 0
この例では、次のレポートを生成しています。 /
rootファイルシステム。 The -s
コマンドは指示します repquota
可能な場合は人間が読める番号を使用します。 リストされているシステムユーザーは数人いますが、デフォルトでは割り当てが設定されていない可能性があります。 ユーザーsammyが下部に表示され、使用量とソフトおよびハードの制限が示されています。
また、 Block grace time: 7days
コールアウト、および grace
桁。 ユーザーがソフト制限を超えた場合、 grace
列には、制限を下回るまでに残っている時間が表示されます。
次のステップでは、クォータシステムの猶予期間を更新します。
ステップ7–超過分の猶予期間を設定する
ユーザーがソフト制限を超えてフロートできる期間を構成できます。 を使用します setquota
そうするためのコマンド:
sudo setquota -t 864000 864000 /
上記のコマンドは、ブロックとiノードの両方の猶予時間を864000秒、つまり10日に設定します。 この設定はすべてのユーザーに適用され、両方のタイプのクォータ(ブロックとブロック)を使用しない場合でも、両方の値を指定する必要があります。 iノード)。
値は秒単位で指定する必要があることに注意してください。
走る repquota
変更が有効になったことをもう一度確認します。
sudo repquota -s /
OutputBlock grace time: 10days; Inode grace time: 10days
. . .
変更はすぐにに反映される必要があります repquota
出力。
結論
このチュートリアルでは、 quota
コマンドラインツールを使用して、Linuxカーネルが監視クォータを処理できることを確認し、1人のユーザーにブロックベースのクォータを設定し、ファイルシステムのクォータ使用状況に関するレポートを生成しました。
付録:一般的なクォータ関連のエラーメッセージ
以下は、ファイルシステムクォータを設定および操作するときに表示される可能性のある一般的なエラーです。
quotaon Outputquotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]
これは、クォータをオンにしようとした場合に表示される可能性のあるエラーです( quotaon
)イニシャルを実行する前に quotacheck
指図。 The quotacheck
コマンドは aquota
また quota
クォータシステムをオンにするために必要なファイル。 詳細については、ステップ4を参照してください。
quotaon Outputquotaon: 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.
これ quotaon
エラーは、カーネルがクォータをサポートしていないか、少なくとも正しいバージョンをサポートしていないことを示しています(両方があります quota_v1
と quota_v2
バージョン)。 これは、必要なカーネルモジュールがインストールされていないか、正しくロードされていないことを意味します。 Ubuntuサーバーでは、これの最も可能性の高い原因は、クラウドベースの仮想サーバーで簡素化されたインストールイメージを使用していることです。
この場合、をインストールすることで修正できます linux-image-extra-virtual
とのパッケージ apt
. 詳細については、ステップ2を参照してください。
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のアクセス許可の概要をお読みください。