文章首发于个人博客
背景
由于是win
和debian
双系统,并且需要在两个系统间共享使用资料分区,因此数据分区采用的是ntfs
格式。虽说xfce
桌面环境挂载ntfs
分区不算麻烦(点下鼠标,再输个密码),但还是希望开机时就能自动挂载。
解决方案
以需要把win
下的D:
盘挂载到/mnt/d
下为例进行说明。
准备工作
- 安装
ntfs-3g
驱动,已安装则忽略(桌面环境可挂载则证明已有驱动)
sh
sudo apt update && sudo apt install ntfs-3g
- 查看待挂载的
ntfs
分区的设备名称
和UUID
sh
lsblk -f # 假设设备名为 /dev/sda3,UUID 为 ABCDFE
- 手动创建挂载点
sh
sudo mkdir /mnt/d
- 查看当前用户的
uid
和gid
sh
id # 一般第一个非root的用户的 uid 和 gid 均为 1000
修改配置
- 编辑
/etc/fstab
sh
sudo vi /etc/fstab
- 添加如下内容并保存
ini
UUID=ABCDFE /mnt/d ntfs-3g defaults,uid=1000,gid=1000,dmask=022,fmask=133,noatime,windows_names 0 0
- 重启
配置详解
xml
<file system> <mount point> <type> <options> <dump> <pass>
<file system>
要挂载的设备,常见格式如下:
格式 | 示例 | 说明 |
---|---|---|
设备路径 | /dev/sda1 | 直接指定分区(不推荐,设备名可能变化) |
UUID | UUID=1234-5678 | 唯一标识符(推荐,通过 blkid 或 lsblk -f 查看) |
卷标 | LABEL=Data | 文件系统卷标(需提前用 e2label 等工具设置) |
网络路径 | nas:/share | NFS/Samba 等网络共享路径 |
-
<mount point>
挂载点,必须是已存在的空目录 ,一般在/mnt
下 -
<type>
文件系统类型,必须与分区实际类型一致,常见类型如下:
类型 | 说明 |
---|---|
ext4 | Linux 原生文件系统 |
ntfs / ntfs-3g | Windows NTFS 分区(需安装 ntfs-3g) |
vfat | FAT32/exFAT 分区 |
swap | 交换分区 |
nfs / cifs | 网络文件系统 |
-
<options>
挂载选项,控制挂载后的权限、性能和行为,详见<options>
详解 -
<dump>
备份标志,已废弃
值 | 说明 |
---|---|
0 | 不备份(默认) |
1 | 需要备份(极少使用) |
<pass>
文件系统检查顺序,控制fsck
在启动时的检查顺序
值 | 说明 | 适用场景 |
---|---|---|
0 | 不检查 | NTFS/FAT/swap 等非 Linux 分区 |
1 | 优先检查 | 根分区 / |
2 | 次级检查 | 其他 Linux 分区(如 /home) |
<options>
详解
是一个以逗号分隔的列表(两个及以上时)。
挂载行为
选项 | 作用 | 示例 | 说明 |
---|---|---|---|
defaults | 启用默认选项 | defaults | 等价于 rw,suid,dev,exec,auto,nouser,async |
rw / ro | 读写 / 只读 | ro | 只读挂载(保护数据) |
exec / noexec | 允许 / 禁止执行文件 | noexec | 增强安全性(如数据分区) |
suid / nosuid | 允许 / 禁用 SUID/SGID | nosuid | 防止提权攻击 |
dev / nodev | 是否允许挂载设备文件 | nodev | 防止访问设备(如 /dev/sda1) |
auto / noauto | 是否开机自动挂载 | noauto | 手动挂载(如临时分区) |
user / nouser | 是否允许普通用户挂载 | user | 允许非 root 用户挂载 |
权限控制
选项 | 作用 | 示例 | 说明 |
---|---|---|---|
uid | 设置文件所有者 | uid=1000 | 指定用户 ID(id -u 查看) |
gid | 设置文件所属组 | gid=1000 | 指定组 ID(id -g 查看) |
dmask | 目录权限掩码 | dmask=022 | 目录权限 = 777 - dmask(如 755) |
fmask | 文件权限掩码 | fmask=133 | 文件权限 = 666 - fmask(如 644) |
umask | 统一权限掩码 | umask=000 | 同时控制文件和目录权限(不推荐) |
性能与可靠性
选项 | 作用 | 示例 | 说明 |
---|---|---|---|
async / sync | 异步/同步写入 | sync | 同步写入更安全,但性能差 |
atime / noatime | 更新访问时间 | noatime | 减少磁盘写入(推荐) |
relatime | 相对访问时间 | relatime | 平衡性能与兼容性 |
errors=remount-ro | 错误时只读挂载 | errors=remount-ro | 防止数据损坏 |
文件系统特定选项
NTFS/FAT 专用
选项 | 作用 | 示例 | 说明 |
---|---|---|---|
windows_names | 禁止非法文件名 | windows_names | 避免创建 *?<> 等 Windows 非法字符 |
utf8 | 强制 UTF-8 编码 | utf8 | 正确显示非 ASCII 文件名 |
shortname=mixed | 处理短文件名 | shortname=mixed | 兼容旧版 Windows 系统 |
ext4 专用
选项 | 作用 | 示例 | 说明 |
---|---|---|---|
journal / nojournal | 启用/禁用日志 | nojournal | 禁用日志(提升性能,但风险高) |
discard | 启用 TRIM | discard | 优化 SSD 性能 |
data=writeback | 日志模式 | data=writeback | 性能优先(默认 data=ordered) |
swap 分区
选项 | 系统 | 说明 |
---|---|---|
sw | OpenBSD等BSD | 必要的,用于标记交换分区 |
sw | Linux | 只是一个占位符 |