跨目录配额创建硬链接

默认情况下,ext4文件系统中存在约束,不允许跨目录配额创建硬链接。但在实际中,某些特定场景有创建硬链接的需求,因此Alibaba Cloud Linux 2和Alibaba Cloud Linux 3提供定制接口,该接口能够绕过ext4文件系统中的约束,实现跨目录配额创建硬链接。本文主要介绍实现该功能的接口及接口示例。

背景信息

Linux系统支持三种模式的磁盘配额,分别为:user quota、group quota以及project quota。前两种是针对用户和组的,最后的project quota提供一种更细粒度的磁盘配额,细化到文件系统的目录和文件,使用project id将不同的目录和文件进行标记并限制。本文介绍的功能便是指在ext4文件系统中跨不同的project id目录创建硬链接。

接口说明

/proc/sys/fs/hardlink_cross_projid该接口默认值为0,该情况下不允许跨目录配额创建硬链接。当设置值为1时,则可以绕过ext4文件系统的约束,实现跨目录配额创建硬链接。

您可以参考内核文档Documentation/sysctl/fs.txt中对该接口的相关说明。内核文档通过Alibaba Cloud Linux 2的Debuginfo包和源码包获取,如何获取请参见Alibaba Cloud Linux 2使用说明

示例

您可以查看默认情况下接口/proc/sys/fs/hardlink_cross_projid的值。

cat /proc/sys/fs/hardlink_cross_projid

返回结果为0,表明当前不允许跨目录配额创建硬链接。

您可以通过以下命令将默认值0修改为1,实现跨目录配额创建硬链接。

echo 1 > /proc/sys/fs/hardlink_cross_projid