Ubuntu 26 + Windows 10 双系统 NTFS 共享盘笔记

Ubuntu 26 + Windows 10 双系统 NTFS 共享盘笔记

一、问题背景

  • 环境:Windows 10 + Ubuntu 26.04 双系统
  • 共享盘:NVMe 上的 NTFS 分区(/dev/nvme
  • 现象:频繁出现挂载冲突,Ubuntu 端无法挂载该分区

二、跨系统速度对比(基准:Windows NTFS = 100)

系统 / 驱动 NTFS 连续读写 NTFS 随机读写 exFAT 连续读写 exFAT 随机读写
Windows 10 100(原生,速度最好) 100(原生,速度最好) ~95--100(顺序接近 NTFS) ~60--80(无日志,小文件随机偏慢)
Ubuntu26 (ntfs3) ~80--95(内核原生) ~80--90(内核原生) ~90--110(内核原生,顺序甚至超过 NTFS) ~70--90(结构简单,随机表现中等)
Ubuntu 26 (ntfs-3g) ~50--70(FUSE 瓶颈,顺序损耗明显) ~30--50(用户态切换,随机性能最差) ~90--110(同上) ~70--90(同上)

笔记本有电池,exFAT 是否更好?

说明

  • 基准:Windows 10 下的 NTFS 连续读写与随机读写均定为 100。
  • Ubuntu 26 (ntfs3):内核态驱动,连续与随机性能都较接近 Windows 原生,但对"脏"分区极其敏感,容易挂载失败。
  • Ubuntu 26 (ntfs-3g):用户态 FUSE 驱动,连续读写因数据搬运损耗明显,随机读写因频繁的用户态/内核态切换进一步下降,是四种方案中随机性能最差的。
  • exFAT :结构简单、无日志,连续读写效率高,Ubuntu 下甚至可能超过 NTFS;但随机读写(尤其小文件)因缺乏元数据优化而弱于 NTFS。exFAT 走独立内核模块,与 NTFS 驱动选择无关,因此 ntfs3ntfs-3g 两行中 exFAT 数据相同。

三、NTFS 驱动对比(Ubuntu 端)

驱动 类型 相对速度(NTFS=100) 脏分区容忍度 特点
ntfs3 内核态 ~80--95 极低 Ubuntu 26.04 默认,快但挑剔;NVMe 大量写入时可能内存耗尽
ntfs-3g 用户态 FUSE ~30--70 慢但稳定,NVMe 上损耗更明显

NVMe 场景下,ntfs-3g 的 FUSE 瓶颈被放大,速度可能只有 ntfs3 的一半甚至更低。

怎么选择

随机读写性能主要影响"海量小文件"场景;连续读写性能主要影响大文件传输。

  • 首选 NTFS + ntfs3 结合方式。 原因:Nvme4.0损失 30% 的速度,仍然比 SATA-SSD 快 6倍以上。
    • 备注小坑: 该模式的兼容性问题,需要在windows 解决。
  • 次选 exFAT 。原因:两个系统都是原生没有兼容问题,速度都很秀、笔记本 有电池没有突然断电问题。
    • 备注小坑:不关机合笔记本,放置几个月馈电,别选该模式。我没测试过会遇到什么问题不知道。
  • 最后 NTFS + ntfs-3g 兼容好、使用丝滑。Nvme4.0 损失 70% 的速度,仍然 1000MB/s 的速度,比SATA-SSD 快 2倍。

四、根本原因

Windows 的"快速启动"导致 NTFS 分区被标记为"脏"(dirty)。

  • Windows 快速启动本质是混合休眠:关机时并未真正完全关闭,而是把内核状态写入休眠文件。
  • 此时 NTFS 分区处于"未安全卸载"状态。
  • Ubuntu 的 ntfs3 内核驱动对脏分区极其严格 ,会直接拒绝挂载,报出:
    • wrong fs type, bad option, bad superblock
    • error mounting /dev/nvme
  • ntfs-3g(FUSE 驱动)容忍度高,通常能正常挂载。

本质:Windows 的"省电技巧"与 Linux 的"数据保护机制"不兼容。

修复

  1. 在 windows 下执行命令(D是需要修复的磁盘)

    chkdsk D: /f

  2. 回到 ubuntu 下重新挂载磁盘


五、解决方案

方案一:Windows 端关闭快速启动(治本)

  1. 控制面板 → 电源选项 → 选择电源按钮的功能
  2. 点击"更改当前不可用的设置"
  3. 取消勾选"启用快速启动(推荐)"
  4. 保存后正常关机(不要重启)

可选:管理员 CMD 执行,彻底关闭休眠:

cmd 复制代码
powercfg /h off

方案二:Ubuntu 端修复脏分区

bash 复制代码
# 查找分区
lsblk -f

# 清除脏标志
sudo ntfsfix /dev/nvme

# 更彻底
sudo ntfsfix -b -d /dev/nvme

方案三:回到 Windows 用 chkdsk 彻底修复

管理员 CMD:

cmd 复制代码
chkdsk D: /f

完成后彻底关机

方案四:屏蔽 ntfs3,强制使用 ntfs-3g

bash 复制代码
echo 'blacklist ntfs3' | sudo tee /etc/modprobe.d/blacklist-ntfs3.conf

重启后生效。若要恢复默认:

bash 复制代码
sudo rm /etc/modprobe.d/blacklist-ntfs3.conf

六、创建永久挂载点

1. 创建固定目录

bash 复制代码
sudo mkdir -p /mnt/data

2. 查 UUID

bash 复制代码
lsblk -f

3. 编辑 fstab

bash 复制代码
sudo nano /etc/fstab

添加:

fstab 复制代码
UUID=你的UUID  /mnt/data  ntfs-3g  defaults,uid=1000,gid=1000,umask=022,nofail,x-systemd.device-timeout=10  0  0

参数说明:

参数 作用
ntfs-3g 用兼容性好的 FUSE 驱动,避开脏分区问题
uid=1000,gid=1000 普通用户拥有读写权限
umask=022 权限 755/644,安全可读写
nofail 关键:挂载失败不阻塞启动
x-systemd.device-timeout=10 设备未就绪最多等 10 秒

用户 UID 用 id -u 确认。

4. 测试

bash 复制代码
sudo umount /dev/nvme 2>/dev/null
sudo mount -a
df -h /mnt/data

5. 验证开机自动挂载

重启后:

bash 复制代码
ls /mnt/data

七、常见报错速查

报错 原因 解决
wrong fs type, bad option, bad superblock ntfs3 拒绝脏分区 关快速启动 / 用 ntfs-3g / ntfsfix
error mounting /dev/nvme 分区被标记为脏 同上
failed to access mountpoint ... No such file or directory 挂载点目录不存在 sudo mkdir -p 创建,或改用 /mnt/data

/run/media/... 属于 tmpfs,重启即清空,不适合做永久挂载点。


八、最终建议

诉求 推荐方案
省心稳定(小白) fstab 用 ntfs-3g + nofail,接受速度折损
速度优先 保留 ntfs3,严格保证 Windows 彻底关机
彻底告别脏分区冲突 共享盘格式化为 exFAT(无日志,断电有风险)

核心一句话:Windows 端关掉快速启动和休眠,Ubuntu 端用 ntfs-3g + nofail,双系统 NTFS 共享盘基本可以稳定使用。

相关推荐
pilifeng15 小时前
Ubuntu Linux 目录结构详解
linux·ubuntu
daemon.qiang19 小时前
国内虚拟机对接 Freedesktop:Fork xserver、自建 Runner 与提交 MR 实战
linux·ubuntu·centos·gitlab·开源软件
orange....1 天前
VMware 双网卡配置:宿主机切换网络时 Ubuntu 固定 IP 访问方案
网络·ubuntu·网络安全
园长的牧歌1 天前
Ubuntu 打开应用在导航栏没有图标是个齿轮
linux·ubuntu
牢姐与蒯1 天前
Linux进程间通信(一).进程间通信概念&&环境切换(着重强调vscode)
linux·运维·服务器·ubuntu
指尖的爷2 天前
【地狱级难度】ubuntu系统GOCV编译安装
linux·运维·ubuntu
j7~2 天前
【C++微服务项目开发脚手架】(环境篇)虚拟机 + Docker + MySQL/Redis/RabbitMQ/ES/etcd/FastDFS 全套配齐
linux·c++·ubuntu·docker·vmware·项目开发·微服务脚手架
可涵不会debug2 天前
公司外怎么连接管家婆?从 SQL Server 安装到 cpolar 固定 TCP 远程登录
linux·运维·ubuntu
云泽8082 天前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2