CONFIG_FHANDLE 是 Linux 内核的一个配置选项,用于启用 基于文件句柄 (file handle) 的系统调用。
一、核心作用
启用此选项后,内核将提供两个关键系统调用:
name_to_handle_at(2): 将文件路径 转换为一个稳定的文件句柄 (f_handle)。open_by_handle_at(2): 通过文件句柄直接打开文件,无需路径。
二、主要特性与用途
- 文件稳定标识 文件句柄与文件的 inode 关联,不受文件名修改、移动或路径变化影响。即使文件被重命名或移动,只要文件系统未卸载,句柄始终有效。
- 用户态文件服务器 专为 NFS 等用户态文件服务器设计。服务器可通过句柄追踪文件,避免因路径变更导致的引用失效。
- 系统依赖 systemd 和 udev 强依赖此选项 。未启用 (
=n) 时,systemd 虽能启动,但会无法启动终端 (getty) 及基础服务。
三、配置说明
- 位置 :
General setup -> open by fhandle syscalls - 类型: 布尔值 (Y/n)
- 依赖 :
CONFIG_EXPERT - 内核版本 : 自 Linux 2.6.39 起引入
- 推荐设置 : Y (现代发行版默认开启)
四、总结
CONFIG_FHANDLE 提供了不依赖路径、稳定追踪文件 的能力,是现代 Linux 系统(尤其使用 systemd )的必选核心功能。