日记配额和普通配额之间的区别

日记配额和普通配额之间的区别

我正在尝试在文件系统上设置配额,并且收到了著名的消息:

配额检查:您的内核可能支持日志配额,但您没有使用它。考虑切换到日志配额以避免在非正常关闭后运行配额检查。

我试图找到一个描述日记配额和非日记配额之间差异的链接/来源,但我无法找到。

它们有什么区别以及什么时候应该使用哪一种?

此外,创建日志配额时应使用的安装选项(我找不到相关文档)是qfmt=vfsv1.

这个选项是什么?

答案1

从这个老讨论话题:

启动时,内核会在运行时(例如,从)读取文件系统使用情况并限制来自相应文件系统的信息aquota.user以及aquota.group存储在相应文件系统上的文件。当系统启动时:quotaoninit.d

  • 的情况下普通配额当新的文件系统存储被分配给文件或被释放时,配额信息由内核连续跟踪,但aquota.*仅在运行quotaoffquotasync命令(即(系统Q_SYNC调用的子命令quotactl)时写入文件(通常作为关闭脚本的一部分)。
  • 日记配额,区别在于aquota.*文件中的使用信息作为执行空间分配的文件系统事务的一部分进行更新。

如果在引导期间检测到不干净的文件系统关闭(例如,如果/var/lib/quota/off由于未运行而在 Debian 系统上找不到quotaoff),则很可能在关闭之前无法将内核内存中的文件系统使用情况和限制信息正确刷新到aquota.*文件中。

  • 所以如果是普通配额 quotacheck运行它使用aquota.*通过读取文件系统上的块分配结构收集的实际使用信息来更新文件。
  • 虽然在情况下日记配额当系统崩溃后运行日志并重播日志时,文件中的空间使用信息aquota.*会自动更新。fsck但是,如果(除了日志重放之外)发现某些文件系统损坏(例如超级块中记录的元数据不一致)并且需要通过修改文件系统来修复它,则quotacheck必须运行。fsck

请注意,在这两种情况下,如果系统在禁用配额的情况下启动(或在启动系统后禁用),则内核维护的使用信息将变得与实际使用信息不同步,除非quotacheck运行 - 手动或由于不干净的关闭。cron作业和init.d脚本通常被编写为quotacheck在系统正常工作期间或干净关闭后不执行(请参阅quotacheck.mode内核命令行参数)。

此外,创建日志配额时应使用的安装选项(我找不到相关文档)是qfmt=vfsv1.

这是文件的格式aquota.*。从内核配置:

config QFMT_V2
...
此配置选项启用内核对vfsv0vfsv1配额格式的支持。这两种格式都支持 32 位 UID/GID,vfsv1 格式还支持 64 位 inode 和块配额限制。

并从配额(2):

目前支持三种配额格式:

  • QFMT_VFS_OLD原来的配额格式。
  • QFMT_VFS_V0 标准VFS v0配额格式,可以处理32位UID和GID,配额限制最多为2^42字节和2^32 inode。
  • QFMT_VFS_V1 一种配额格式,可以处理 32 位 UID 和 GID,配额限制为 2^64 字节和 2^64 inode。

版本 1 配额文件(格式QFMT_VFS_OLD或安装选项jqfmt=vfsold、内核配置QFMT_V1)被命名为quota.*.版本 2 配额文件(格式QFMT_VFS_V0QFMT_VFS_V1/或安装选项jqfmt=vfsv0jqfmt=vfsv1)支持日志配额。

相关内容