AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 117787
Accepted
CarpeNoctem
CarpeNoctem
Asked: 2010-03-02 02:14:29 +0800 CST2010-03-02 02:14:29 +0800 CST 2010-03-02 02:14:29 +0800 CST

试图了解 Linux 配额,数据存储在哪里?

  • 772

因此,Linux 配额系统的所有教程和文档都让我感到困惑。对于每个启用/启用配额的文件系统,实际配额信息存储在哪里?它是文件系统元数据还是在文件中?

假设用户 foo 在 /home 上创建了一个新文件。内核如何确定用户 foo 是否低于其硬限制?内核是否必须每次都统计该文件系统上的配额信息,或者它是在超级块中还是在其他地方?

据我了解,内核会查阅 aquota.user 文件以获取实际规则,但是当前配额使用数据存储在哪里?这可以使用 repquota 等以外的任何工具查看吗?蒂亚!!

更新:

谢谢您的帮助。我已经读过那个迷你HOWTO。我很清楚用户空间工具的使用。我不清楚的是使用数据是否也存在于存储每个用户限制的文件中,而您的回答是肯定的。

据我所知,rc.sysinit 在启动时运行 quotacheck 和 quotaon。quotacheck 程序分析文件系统,更新 aquota.* 文件。然后它使用 quota.h 和 quotactl() 系统调用来通知内核配额信息。

从这一点开始,内核散列该信息并随着更改发生而增加/减少配额统计信息。关机后,init.d/halt 脚本会在卸载文件系统之前运行 quotaoff 命令。quotaoff 命令似乎不会使用内核在内存中的信息来更新 aquota.* 文件。我这样说是因为 aquota.user 文件的 {a,c,m} 次仅在系统重新启动或手动运行 quotacheck 命令时更新。看来 - 据我所知 - 内核只是在关机时将其最新的使用数据放在地板上。此信息永远不会用于更新 aquota.* 文件。它们在启动期间由 quotacheck(rc.sysinit) 更新。对我来说似乎很愚蠢,因为内核已经收集了更新的信息。所以... 总之,我对这些方法仍然不完全清楚。;)

linux disk-space-utilization ext3 quota
  • 2 2 个回答
  • 1372 Views

2 个回答

  • Voted
  1. Best Answer
    sleske
    2010-03-02T02:36:20+08:002010-03-02T02:36:20+08:00

    对于每个启用/启用配额的文件系统,实际配额信息存储在哪里?

    参见quotaon 联机帮助页。在文件系统根目录中会有名为 .quota* 的文件,其中包含必要的信息(.quota.user、.quota.group、.quota.ops.user、.quota.ops.group)。

    假设用户 foo 在 /home 上创建了一个新文件。内核如何确定用户 foo 是否低于其硬限制?内核是否必须每次都统计该文件系统上的配额信息,或者它是在超级块中还是在其他地方?

    不,内核会持续跟踪 fs 的使用情况,因此它不需要在每次分配时重新计算(这将非常昂贵)。启用配额后,它将执行一次计算,然后更新。初始计算由quotacheck执行。

    据我了解,内核会查阅 aquota.user 文件以获取实际规则,但是当前配额使用数据存储在哪里?这可以使用 repquota 等以外的任何工具查看吗?蒂亚!!

    配额信息存储在 .quota* 中(见上文)。除了repquota,我不知道有任何工具可以生成配额使用报告。但是您应该能够使用/脚本 repquota 生成大多数报告。或者你将不得不破解源代码......

    顺便提一句:

    Quota mini-HOWTO很好地概述了 Linux 配额系统。它有点过时了,但基本面没有太大变化。

    • 3
  2. Ali Chehab
    2010-05-05T01:38:38+08:002010-05-05T01:38:38+08:00

    通过阅读您的更新,您似乎想知道为什么当机器关闭而不是写入 aquota.* 文件时,内核所拥有的所有配额信息都会被丢弃。

    好吧,内核不会即时更新文件,因为这在时间上会很昂贵。基本上,一旦启用配额,内核就会跟踪使用情况,以防达到软/硬限制并且它必须做一些事情,这意味着它每次必须为系统上的任何用户/组分配任何 fs 块时都会跟踪它。如果它在尝试分配 fs 块时必须更新 aquota.* 文件,您可以看到这最终会导致即使在中等繁忙的系统上出现问题,并且不需要这样做,因为内核正在为您监视并记录任何违规行为为你,所以你知道来运行quotacheck。甚至配额计算也可能导致问题,这就是为什么你有可调 sysctl - dquot-max - 和报告 sysctl - dquot-nr - 更多信息可以在这里看到:

    http://www.mjmwired.net/kernel/Documentation/sysctl/fs.txt

    至于在 init 过程中而不是在停止过程中放置​​ quotacheck,这完全是关于时间和你对事情的看法。通常,当您停止服务器时,您希望它快速关闭。不要花很多时间来计算配额,我们更习惯于 init 需要更长的时间。此外,将此过程视为 init 在系统启动时设置初始配额计数,而不是在系统关闭时进行清理。如果 FS 在没有启用配额的情况下安装在另一个系统上然后正常重新启动,您会想知道每次从哪里开始,并且因为您将在每次停止后进行初始化,这就是它的设置位置。

    希望有帮助。

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve