我正在尝试在文件系统上设置配额,并且收到了著名的消息:
配额检查:您的内核可能支持日志配额,但您没有使用它。考虑切换到日志配额以避免在非正常关闭后运行配额检查。
我试图找到一个描述日记配额和非日记配额之间差异的链接/来源,但我无法找到。
它们有什么区别以及什么时候应该使用哪一种?
此外,创建日志配额时应使用的安装选项(我找不到相关文档)是qfmt=vfsv1
.
这个选项是什么?
答案1
从这个老讨论话题:
启动时,内核会在运行时(例如,从)读取文件系统使用情况并限制来自相应文件系统的信息aquota.user
以及aquota.group
存储在相应文件系统上的文件。当系统启动时:quotaon
init.d
- 的情况下普通配额当新的文件系统存储被分配给文件或被释放时,配额信息由内核连续跟踪,但
aquota.*
仅在运行quotaoff
或quotasync
命令(即(系统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
...
此配置选项启用内核对vfsv0
和vfsv1
配额格式的支持。这两种格式都支持 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_V0
和QFMT_VFS_V1
/或安装选项jqfmt=vfsv0
和jqfmt=vfsv1
)支持日志配额。