Linux系统当前支持的文件系统指内核已加载或可加载的模块,最直接方式是查看/lib/modules/$(uname -r)/kernel/fs/目录内容;其次可读取/proc/filesystems获取已注册类型,或用findmnt --types列出内核识别的所有挂载类型。

Linux系统当前支持哪些文件系统,不等于“已挂载的”或“磁盘上存在的”,而是指内核已加载或可加载的文件系统模块。查这个,不是看df或lsblk,而是查内核模块目录或运行时接口。
查看 /lib/modules/$(uname -r)/kernel/fs/ 目录内容
这是最直接、最可靠的方式:内核编译时启用的文件系统,只要没被显式禁用,都会以模块形式存在于此目录下。
-
ls /lib/modules/$(uname -r)/kernel/fs/列出所有可用模块子目录,每个子目录名通常就是文件系统类型(如ext4、xfs、btrfs、f2fs) - 注意:
overlayfs、proc、sysfs这类伪文件系统也在此列,但它们不用于块设备存储 - 如果某模块名带
.ko后缀(如vfat.ko),说明它是可加载模块;若无后缀(如ext4目录),可能已编译进内核或为子模块集 - 某些发行版(如 RHEL/CentOS)会把模块放在
/lib/modules/$(uname -r)/kernel/fs/下的子目录中,比如exofs/或nfs/,需递归检查
用 findmnt -t 列出当前已注册并可用的文件系统类型
findmnt 的 -t 选项能列出内核当前“承认”的文件系统类型,但它只显示至少有一个实例被挂载过(或模块已加载)的类型,有滞后性。
-
findmnt -t ""(空字符串)会报错;正确做法是先试一个常见类型:findmnt -t ext4—— 如果返回非空,说明ext4已就绪;如果提示unknown filesystem type,很可能模块未加载 - 更实用的是:
findmnt --types(注意双横线),它会输出内核当前识别的所有挂载类型,包括tmpfs、devtmpfs、proc等,但不包含尚未触发加载的模块(比如你从没挂载过reiserfs,它就不会出现) - 该命令依赖
/proc/filesystems,本质是读取它的内容,所以和下一条等价
读取 /proc/filesystems 获取实时注册列表
/proc/filesystems 是内核维护的“已注册文件系统类型”清单,比模块目录更动态:它只包含当前已加载(或内置)且向 VFS 注册成功的类型。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
cat /proc/filesystems输出两列:首列为nodev表示无设备支撑(如proc、sysfs),空字段表示需要块设备(如ext4、xfs) - 想过滤出“真磁盘文件系统”,可用:
awk '$1 == "" {print $2}' /proc/filesystems - 注意:如果某个模块已存在但未加载(比如
gfs2.ko),它不会出现在这里;只有执行过modprobe gfs2或自动触发加载后才会注册 - 某些容器环境或精简内核可能禁用
nodev类型,此时proc和sysfs也可能不显示
用 modprobe -n + lsmod 验证模块是否可加载且已激活
仅看目录或 /proc/filesystems 不够——你还得确认模块能顺利加载,且没被黑名单屏蔽。
- 测试模块能否被找到:
modprobe -n ext4—— 若静默返回,说明路径和名称正确;若报Module ext4 not found in directory,说明模块缺失或名字不对(如叫ext4dev) - 检查是否已加载:
lsmod | grep ^ext4(注意^防止匹配到其他模块名含ext4的) - 排查黑名单:
grep -r "blacklist ext4" /etc/modprobe.d/—— 若存在,该模块即使存在也不会自动加载 - 临时加载测试:
sudo modprobe ext4 && grep ext4 /proc/filesystems,成功则说明支持且路径正常
真正容易被忽略的是:模块存在 ≠ 内核支持 ≠ 可挂载。比如 zfs 或 btrfs 模块可能装在用户空间(ZFS via DKMS)、或被发行版策略禁用;/proc/filesystems 里没有,不代表磁盘上不能有那种格式——只是内核现在不认。动手前,先确认你要用的类型是否已在 /proc/filesystems 中现身,再决定要不要 modprobe。










