FreeBSD如何挂载存储?,挂载存储步骤是什么?
- 云服务器
- 2026-07-24
- 11
识别存储设备
在挂载存储前,首先需要确定设备名称,FreeBSD 中常见的设备类型如下:
| 设备类型 | 常见名称 | 说明 |
|---|---|---|
| SATA/IDE 硬盘 | ada0, ada1, … | 主硬盘或第二硬盘 |
| USB 存储 | da0, da1, … | U盘、移动硬盘 |
| NVMe 存储 | nvd0, nvme0ns1 | NVMe 固态硬盘 |
| 虚拟磁盘 | vtbd0, vtbd1 | 用于虚拟机或 bhyve |
使用 dmesg 或 geom disk list 查看所有可用磁盘:
# dmesg | grep -E "da[0-9]|ada[0-9]|nvd[0-9]" # geom disk list
查看分区信息
使用 gpart show 查看设备上的分区表:
# gpart show ada0 # gpart show da0
若分区表未建立,需先创建分区(例如对整个磁盘创建 GPT 分区和一个文件系统分区):

创建文件系统
新分区需要格式化,常见的文件系统类型有 UFS(默认)、ZFS、FAT32、NTFS 等。
- UFS(FreeBSD 原生): # newfs -U /dev/ada0p1
- ZFS(需先加载 zfs 模块): # zpool create mypool /dev/ada0p1
- FAT32(用于兼容 Windows/Mac): # newfs_msdos -F32 /dev/da0p1
- NTFS(需安装 fusefs-ntfs 包): # pkg install fusefs-ntfs # ntfs-3g /dev/da0p1 /mnt/ntfs
创建挂载点
挂载点是一个空目录,用于访问存储设备内容:
# mkdir -p /mnt/mystorage
手动挂载
使用 mount 命令挂载指定文件系统:

对于 ZFS 存储池,通常会自动挂载,也可手动挂载:
# zfs mount mypool/dataset
自动挂载(/etc/fstab)
编辑 /etc/fstab 添加一行,使系统启动时自动挂载:
# Device Mountpoint FStype Options Dump Pass /dev/ada0p1 /mnt/mystorage ufs rw 2 2
常用选项:
- rw:读写
- ro:只读
- noauto:启动时不自动挂载,但可用 mount -a 挂载
- late:在网络和某些服务启动后挂载(适用于远程存储)
卸载设备
手动卸载前,确保没有进程正在使用挂载点:

# umount /mnt/mystorage
若设备繁忙可使用 fuser 或 lsof 查找占用进程:
# fuser -c /mnt/mystorage # umount -f /mnt/mystorage # 强制卸载(谨慎使用)
特殊类型存储的挂载
挂载 ISO 镜像
# mdconfig -a -t vnode -f /path/to/image.iso # mount -t cd9660 /dev/md0 /mnt/iso # umount /mnt/iso && mdconfig -d -u md0
挂载网络存储(NFS)
确保已启用 NFS 客户端(nfs_client_enable="YES" 在 /etc/rc.conf),
# mount -t nfs 192.168.1.100:/export /mnt/nfs
挂载 tmpfs 内存文件系统
# mount -t tmpfs tmpfs /mnt/ramdisk
查看已挂载设备
# mount # df -h
相关问题与解答
问题1:如何挂载一个NTFS格式的USB移动硬盘?
解答:
FreeBSD 内核本身不支持 NTFS 写入,读取也只支持部分,建议安装 fusefs-ntfs 包来获得完整读写支持:
- 安装软件:pkg install fusefs-ntfs
- 加载内核模块:kldload fuse(或启用 fuse_load="YES" 在 /boot/loader.conf)
- 识别设备,da0,并确认分区(gpart show da0 通常为 da0p1)
- 创建挂载点:mkdir /mnt/usbntfs
- 挂载:ntfs-3g /dev/da0p1 /mnt/usbntfs
- 如果需要自动挂载,可在 /etc/fstab 中添加:
/dev/da0p1 /mnt/usbntfs fusefs.ntfs-3g rw,late 0 0
问题2:为什么我执行 umount 时提示“设备正忙”?
解答:
“设备正忙”表示有进程正在使用该挂载点下的文件或目录,例如终端当前工作目录就在该分区内,或某个程序正打开其中的文件,解决方法:
- 检查是否有 shell 依然在挂载点目录:cd / 离开该目录。
- 使用 fuser -c /mnt/mystorage 列出占用进程的 PID,然后用 kill 结束相关进程。
- 使用 lsof +f -/mnt/mystorage 查看具体打开的文件。
- 若无法找到占用进程,可使用 umount -f 强制卸载(可能造成数据丢失,需谨慎)。
- 建议养成先 cd 到其他目录再执行 umount 的习惯。