ライブ CD なしのライブ ルート EXT4 ファイルシステム上のプロジェクト クォータ

ライブ CD なしのライブ ルート EXT4 ファイルシステム上のプロジェクト クォータ

Ubuntu 18.04 で ext4 のライブ ルート フォルダーのプロジェクト クォータを設定するにはどうすればよいですか?

ext4 ファイルシステム上のプロジェクト クォータに関するドキュメントは基本的に存在しないため、次のことを試しました。

  1. インストールされたクォータapt install quota -y
  2. ルート/に置き、再起動すると、ファイルシステムは読み取り専用で起動され、プロジェクトクォータはなくなりましprjquotaた(/etc/fstabここユーザーおよびグループのクォータの代わりにprjquotaのみを使用)
  3. また、find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'実行され、両方のカーネルモジュール/lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v2.koとが/lib/modules/4.15.0-96-generic/kernel/fs/quota/quota_v1.ko見つかりました(これチュートリアル)
  4. GRUB_CMDLINE_LINUX_DEFAULT="rootflags=prjquota"に入れて実行し/etc/default/grubupdate-grub再起動しましたが、マシンは起動しなくなりました。
  5. rootflags=quota実行GRUB_CMDLINE_LINUX="... rootflags=quota"して再起動すると、ルートで有効になっていることがupdate-grub示されましたが、またはルートフラグとして設定されている場合は機能しません。quotausrquotaprjquotapquotaproject

DIRストレージバックエンドにこれが必要です翻訳コンテナのストレージサイズを制限できるようにします。他に何を試すことができますか?

答え1

デバイスで Project Quota を有効にするには、実行が絶対に必要だと言われましたtune2fs -O project -Q prjquota /dev/sdaX。そのため、電源を切ったりライブ CD を使用したりする必要のないソリューションを探しました。これは時間がかかりすぎるうえ、VPS プロバイダーの経験上、必ずしもうまく機能するとは限りません。また、手順をスクリプトに変換できることを期待していましたが、これまでのところうまくいきませんでした。

別の質問のおかげで、Ubuntu 18.04 で動作するソリューションをまとめることができました。これを実行するには、約 4 GB の RAM (およびもちろんバージョン 4.4 以降のカーネル) が必要です。

出典:

1. RAMディスクファイルシステムを作成する

mkdir /tmp/tmproot
mount none /tmp/tmproot -t tmpfs -o rw
mkdir /tmp/tmproot/{proc,oldroot,sys}
cp -a /dev /tmp/tmproot/dev
cp -ax /{bin,etc,opt,run,usr,home,mnt,sbin,lib,lib64,var,root,srv} /tmp/tmproot/

2. ルートを新しいRAMディスクファイルシステムに切り替える

cd /tmp/tmproot
unshare -m
pivot_root /tmp/tmproot/ /tmp/tmproot/oldroot
mount none /proc -t proc
mount none /sys -t sysfs
mount none /dev/pts -t devpts

3. 22番以外のポートでSSHを再起動し、別のセッションで再接続します。

nano /etc/ssh/sshd_config
  • ポートを2211に変更します

  • SSHを再起動します/usr/sbin/sshd -D &

  • 2211から再度接続

4. /oldroot または /dev/sdaX を使用してプロセスを強制終了します。

fuser -km /oldroot
fuser -km /dev/sdaX

5. /dev/sdaXをアンマウントし、プロジェクトクォータ機能を適用する

umount -l /dev/sdaX
tune2fs -O project -Q prjquota /dev/sdaX

6. プロジェクトクォータでマウントする

mount /dev/sda2 -o prjquota /oldroot

7. 物を元に戻す

pivot_root /oldroot /oldroot/tmp/tmproot
umount /tmp/tmproot/proc
mount none /proc -t proc
cp -ax /tmp/tmproot/dev/* /dev/
mount /dev/sda1 /boot  ### This might be different for you
reboot -f

8. 再起動後にクォータをオンにする

apt install quota -y
quotaon -Pv -F vfsv1 /

9. ルートでクォータがオンになっているか確認する

repquota -Ps /

10. 持続させる

  • prjquotaルートのオプションに入れる/etc/fstab

楽しむ!

関連情報