Ubuntu 配额格式不受内核支持

Ubuntu 配额格式不受内核支持

我曾尝试使用 Ubuntu 16.04 LTS 在 Google Compute Engine 上实现磁盘用户和组配额,但到现在还没有成功。

配额允许您指定磁盘存储的两个方面的限制:一个用户或一组用户可以拥有的 inode 数量;以及可以分配给一个用户或一组用户的磁盘块数量。

配额背后的想法是,强制用户保持其磁盘消耗限制以下,从而剥夺他们在系统上使用无限磁盘空间的能力。

sudo -s
apt-get -y install quota quotatool
nano /etc/fstab

然后我用

LABEL=cloudimg-rootfs   /    ext4   defaults,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 0

然后我尝试激活配额:

mount -o remount /
quotacheck -avugm
quotaon -avug
quotaon: using //quota.user on /dev/sda1 [/]: No such process
quotaon: Quota format not supported in kernel

配额模块不在内核中,我创建了用户和组配额。

touch /aquota.user /aquota.group
chmod 600 /aquota.*
mount -o remount /
quotacheck -avugm
quotaon -avug
quotaon: using //quota.user on /dev/sda1 [/]: No such process
quotaon: Quota format not supported in kernel

没有用。

我记得在AWS EC2中使用过一种方法:

apt-get -y install linux-image-extra-virtual

echo quota_v1 >> /etc/modules
echo quota_v2 >> /etc/modules

reboot

sudo -s
cat /proc/modules | grep -i quota

没什么,也不起作用。

modprobe quota_v1
modprobe: FATAL: Module quota_v1 not found in directory /lib/modules/4.8.0-46-generic

quotaon -pa
group quota on / (/dev/sda1) is off
user quota on / (/dev/sda1) is off

我在 EC2 上完成了这项工作,但在 Google Compute Engine 上却没有成功。有什么想法我可以尝试更多吗?

答案1

我在 AWS 实例上运行 Ubuntu 18.04 时遇到同样的问题

删除 aws 内核并安装通用内核似乎可以解决问题

这是我做的:

# Remove Aws Kernel | find your own kernel version
apt-get remove linux-image-4.15.0-*-aws

# Install Generic Kernel
apt-get -y install linux-image-generic
apt-get -y install linux-headers-generic

# Makesure everything is ok
reboot

modprobe quota_v2
modprobe quota_v2

# if no error on modprobe then add it to modules
echo quota_v1 >> /etc/modules
echo quota_v2 >> /etc/modules

# after that you can add quota options on fstab

答案2

好的,找到了解决方案。我不需要在 EC2 上安装 linux-generic,但似乎需要在 Google Compute Engine 上执行一个程序。获得配额的所有程序都有效:

sudo -s
apt-get -y install quota quotatool

nano /etc/fstab

编辑 fstab:

LABEL=cloudimg-rootfs   /    ext4   defaults,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 0

检查是否有丢失的包裹。

dpkg -s linux-generic
dpkg-query: package 'linux-generic' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.

我们可以安装完整缺失的 linux-generic 包:

apt-get -y install linux-generic

或者只有附加包(我更喜欢这个):

apt-get -y install linux-image-generic
apt-get -y install linux-headers-generic
apt-get -y install linux-image-extra-`uname -r`

我们需要添加配额模块以随开机启动:

echo quota_v1 >> /etc/modules
echo quota_v2 >> /etc/modules

reboot

检查它是否正常工作:

sudo -s
cat /proc/modules | grep -i quota

quota_v1 16384 0 - Live 0xffffffffc037c000
quota_v2 16384 2 - Live 0xffffffffc0377000
quota_tree 20480 1 quota_v2, Live 0xffffffffc0250000

quotaon -pa

group quota on / (/dev/sda1) is on
user quota on / (/dev/sda1) is on

两个配额均已激活。

答案3

好的,Fran,试试这个:

cat /proc/modules | grep -i quota

[...]

配额_v1 16384 0 - 直播 0xffffffffc037c000

配额_v2 16384 2 - 直播 0xffffffffc0377000

配额树 20480 1 配额_v2,实时 0xffffffffc0250000

[...]

quotaon -pa

[...]

/(/dev/sda1)上的组配额已关闭

/(/dev/sda1)上的用户配额已关闭

[...]

quotacheck -avugm

[...]

配额检查:无法统计旧用户配额文件 //quota.user:没有该文件或目录。使用量不会被扣除。

配额检查:无法统计旧组配额文件 //quota.group:没有该文件或目录。使用量不会被扣除。

[...]

quotaon -avug

[...]

/dev/sda1 [/]: 已启用组配额

/dev/sda1 [/]: 用户配额已启用

[...]

答案4

Amazon EC2 上的磁盘配额

适用于 AWS EC2 的 Linux AMI 可能没有激活磁盘配额所需的软件包。

本文基于Ubuntu 20.04。

互联网上有很多文章和建议。最后找到了一个看起来最合法、最简单并且最完美的解决方案。

  1. 它需要安装“linux-modules-extra-aws”包

    apt-get 安装 linux-modules-extra-aws apt-get -y 安装配额配额工具

  2. mount -o remount 例如 - mount -o remount /

  3. 配额检查-avugm

  4. 配额

  5. 编辑 fstab 文件并添加必要的 nano /etc/fstab 在现有参数末尾添加以下内容 ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 保存文件

相关内容