Linux 文件系统
Table of Contents
FreeBSD 对 ext2/ext3/ext4、XFS、Btrfs 等 Linux 原生文件系统提供只读或读写挂载支持 但内核模块需单独加载,且不同文件系统的兼容程度差异较大
为便于演示挂载操作,本节预设一个包含多种 Linux 文件系统分区的示例环境,用于验证各挂载方法的正确性
$ gpart show -p nda1 # 显示设备 nda1 的分区信息 => 34 41942973 nda1 GPT (20G) 34 2014 - free - (1.0M) 2048 1339392 nda1p5 linux-data (654M) # ext2 1341440 19630080 nda1p1 linux-data (9.4G) # ext4 20971520 8388608 nda1p2 linux-data (4.0G) # btrfs 29360128 4194304 nda1p3 ms-basic-data (2.0G) # fat32 33554432 8386560 nda1p4 linux-data (4.0G) # xfs 41940992 2015 - free - (1.0M)
-p 参数用于显示完整设备路径。示例分区中预先配置了一些文件和目录,用于后续验证挂载操作的正确性
/
├── usr
│ └── ports
│ └── filesystems
│ ├── ext2 # fusefs-ext2 Ports 目录
│ └── lkl # fusefs-lkl Ports 目录
├── home
│ └── ykla
│ ├── test # EXT2/3/4 挂载点
│ ├── btrfs # Btrfs 挂载点
│ └── xfs # XFS 挂载点
└── etc
└── fstab # 持久化挂载配置文件
EXT 系列文件系统
fusefs-ext2 是一款基于 FUSE 的文件系统实现
尽管名称为 ext2,但该模块通过兼容 ext3/ext4 的磁盘格式,同样支持对 ext3 和 ext4 文件系统的访问
安装 fusefs-ext2
使用 pkg 安装:
$ pkg install fusefs-ext2
使用 Ports 安装:
$ cd /usr/ports/filesystems/ext2/ $ make install clean
加载内核模块
首先,确保已加载 FUSE 内核模块,该模块为所有基于 FUSE 的文件系统提供底层支持。将 ext2fs 和 fusefs 内核模块添加至开机加载列表:
$ sysrc kld_list+="fusefs" $ sysrc kld_list+="ext2fs"
测试挂载 Ext 分区
创建挂载目录 /home/ykla/test:
$ mkdir -p /home/ykla/test # 创建示例挂载目录,请根据实际路径调整,下同
将 nda1p1 分区挂载至 /home/ykla/test:
$ fuse-ext2 /dev/nda1p1 /home/ykla/test # 挂载分区,默认只读 Mounting /dev/nda1p1 Read-Only. Use 'force' or 'rw+' options to enable Read-Write mode $ ls /home/ykla/test/ # 列出挂载目录内容 lost+found test test.pdf
fusefs-ext2 默认以只读模式挂载,这是为了避免写入操作可能引发的文件系统损坏风险
将 nda1p1 分区以读写模式挂载至 /home/ykla/test:
$ fuse-ext2 -o rw+ /dev/nda1p1 /home/ykla/test # 挂载磁盘分区为可写 $ ls /home/ykla/test/ # 查看挂载目录内容 lost+found test test.pdf $ cd /home/ykla/test/ # 切换到挂载路径 root@ykla:/home/ykla/test # touch my.txt # 创建测试文件以验证写入操作 root@ykla:/home/ykla/test # ls # 列出挂载目录内容 lost+found my.txt test test.pdf
Btrfs、XFS 和 ext4 文件系统
fusefs-lkl 是基于 Linux 内核库(LKL,Linux Kernel Library)的 FUSE 实现,通过在用户空间运行 Linux 内核代码,提供对 Btrfs、XFS 等更多 Linux 文件系统的完整支持
与 fusefs-ext2 相比,fusefs-lkl 支持的文件系统类型更广泛,但性能可能略低
安装 fusefs-lkl
使用 pkg 安装:
$ pkg install fusefs-lkl
使用 Ports 安装:
$ cd /usr/ports/filesystems/lkl/ $ make install clean
加载 FUSE 内核模块
fusefs 是 FreeBSD 的 FUSE 框架内核模块,为所有基于 FUSE 的文件系统提供底层支持。在安装 fusefs-ext2 时已加载该模块,如果尚未加载,可执行以下命令:
$ sysrc kld_list="fusefs"
测试挂载 Btrfs 分区
使用 lklfuse 将 Btrfs 分区 nda1p2 挂载至 /home/ykla/btrfs:
$ mkdir -p /home/ykla/btrfs # 创建挂载目录 $ lklfuse -o type=btrfs /dev/nda1p2 /home/ykla/btrfs # 挂载磁盘分区 $ ls /home/ykla/btrfs # 查看挂载目录内容 test1 test2 test3 test4
测试挂载 Xfs 分区
使用 lklfuse 将 XFS 分区 nda1p4 挂载至 /home/ykla/xfs:
$ mkdir -p /home/ykla/xfs # 创建挂载目录 $ lklfuse -o type=xfs /dev/nda1p4 /home/ykla/xfs # 挂载磁盘分区 $ ls /home/ykla/xfs # 查看挂载目录内容 cfc test1 test2
故障排除与未竟事宜
文件系统的卸载方法
文件系统卸载操作可通过 umount 命令完成,卸载前应确保没有进程正在访问挂载点,否则卸载将失败。其基本语法为:
$ umount /home/ykla/test # 卸载指定挂载点的文件系统
持久化的挂载配置
持久化挂载可通过将挂载配置写入 /etc/fstab 文件实现
- 对于 FUSE 文件系统,需特别注意挂载参数与延迟挂载选项 late 的使用
| Next: Windows 文件系统 | Previous: 自动挂载 | Home: 存储管理 |