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 驱动选择无关,因此 ntfs3 和 ntfs-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 共享盘基本可以稳定使用。

相关推荐
人生百态,人生如梦7 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
坐看风云变幻9 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
远牧10 小时前
Ubuntu 26 升级踩坑实录:hermes-agent venv 重建全过程
linux·ubuntu·ai·agent
眼不痛请看我10 小时前
Ubuntu_22.04_LTS虚拟机安装指南
linux·数据库·ubuntu
缘友一世11 小时前
校园网有线网络排查(NetworkManager与netplan的坑)
ubuntu·校园网
大鹏的NLP博客1 天前
WSL Ubuntu 26.04 升级与环境整理记录
linux·ubuntu·wsl
忆挽篱笙歌1 天前
gdb/cgdb
linux·ubuntu
成为你的宁宁1 天前
【Ubuntu 18.04安装Gitlab】
ubuntu·gitlab
MicrosoftCloud1 天前
性能排查 02|vmstat、iostat、mpstat、sar 怎么读?性能四件套的分工与判读阈值
linux·ubuntu·vmstat·性能监控·iostat·sysstat
承渊政道1 天前
Linux网络学习【UDP Socket编程实战:网络命令与客户端访问Linux验证】
linux·网络·学习·ubuntu·编程实战·udp socket