Linux挂载NTFS分区指南

作者:依赖倒不置日期:2025/10/12

在使用Windows和Linux双系统的电脑上,通常我们可能也需要在Linux上访问NTFS分区。虽然Linux用户一般来说不一定会有分区的习惯,但是在双系统情况下,两个系统复用NTFS分区也是很常见的。

今天,就来讨论双系统复用分区的场景下,如何正确地在Linux挂载NTFS分区。

1,Linux的NTFS驱动

事实上,老版本的Linux内核并不原生支持读取NTFS分区,尤其是NTFS是Windows系统专有的文件系统,而不是开放的。因此很长一段时间,都是使用ntfs-3g这个开源驱动实现在Linux挂载并读取NTFS分区。

然而,ntfs-3g是基于FUSE的用户态文件系统驱动,读写性能非常低(可能只有硬盘实际性能的40 - 50%),每次文件操作都需要在内核和用户空间之间切换,带来许多额外开销,这一点在大量小文件或随机读写场景下尤为显著。

因此,在Linux 5.15版本合并了由Paragon公司提供的ntfs3内核驱动,该驱动为内核态驱动,直接在内核中处理I/O,性能显著优于ntfs-3g,支持更高效的缓存和更好的并发处理。

ntfs3刚引入的时候,也存在非常多的缺陷,包括但不限于:

  • 元数据写入不一致
  • 稀疏文件支持存在问题
  • 权限映射异常
  • ...

不过,该驱动也一直在积极开发维护,这些缺陷也几乎全部被解决,在Linux 6.x版本中,ntfs3驱动已经相当成熟。大家若感兴趣也可以在Linux内核官网跟踪ntfs3驱动的提交信息:传送门

因此,只要你使用的Linux发行版内核版本大于6.0,则建议使用ntfs3驱动以获取更高的性能,否则就使用ntfs-3g保证最大的兼容性。下面也将以ntfs3驱动挂载分区为主讲解。

2,加载ntfs3模块

要挂载NTFS分区,则需要确保系统已加载ntfs3模块,可使用下列命令检查:

1lsmod | grep ntfs3
2

如果有输出,则说明已加载该模块。若输出为空,则表示没有加载该模块,可手动加载:

1sudo modprobe ntfs3
2

然而,手动加载的模块在重启系统后,并不会自动加载。要想自动加载该模块,则需要编辑/etc/initramfs-tools/modules文件,添加一行下列内容:

1ntfs3
2

如图:

image-20251011214703903

然后执行下列命令确保 ntfs3 模块写入initramfs模块加载列表:

1sudo update-initramfs -u -k all
2

重启电脑再执行lsmod就可以发现ntfs3驱动已经加载。

3,挂载NTFS分区

手动挂载分区很简单,只需在-t参数指定ntfs3即可:

1mount -t ntfs3 /dev/sdxN /mnt
2

上述/dev/sdxN替换为实际的NTFS分区设备,/mnt则是挂载点目录,可使用lsblk命令查看分区。

此外,如果想要开机自动挂载,则需要编辑/etc/fstab文件,添加下列行:

1# 分区UUID 挂载点 挂载类型 挂载选项 启用备份 启用检查
2UUID=xxx... /mnt ntfs3 defaults,discard,prealloc,umask=000 0 0
3

我们可以使用下列命令查看分区的UUID:

1lsblk -o NAME,FSTYPE,SIZE,TYPE,MOUNTPOINTS,UUID
2

如图:

image-20251011215348272

这里着重看一下在/etc/fstab中的挂载选项:

  • defaults 加入默认的挂载参数,包括:rw, suid, dev, exec, auto, nouser, async, relatime
  • discard 支持TRIM命令以提高删除操作的性能,对于固态硬盘通常强烈建议加上该选项,而对于机械硬盘不需要加上该选项
  • prealloc 为文件过度预分配空间,减少对不同文件执行并行写入操作时的碎片
  • umask=000 文件权限掩码,这里设为000表示该分区挂载后所有用户均可读写

对于权限问题,我们需要根据实际情况权衡。首先我们需要知道umask的机制,这个配置表示权限掩码,主要用于FAT、NTFS、exFAT等不支持Unix权限模型的文件系统(对ext4、xfs等原生支持权限的文件系统无效)。对于实际的文件权限,通常就是由默认权限 - 权限掩码得到,默认权限为:

  • 文件:666
  • 文件夹:777

假设我们想要挂载的分区中,仅有root用户可读写,其余用户仅能读取,则可设定umask=022,这样实际的权限:

  • 文件:666 - 022 = 644
  • 文件夹:777 - 022 = 755

此外,我们上述没有指定挂载后分区所属用户和组,因此默认所属都是root,若要指定则可加入uid=xxx,gid=xxx选项,即指定挂载后文件所属的用户和组的id,可分别使用id -uid -g命令查看当前用户的uidgid,对于系统安装时创建的第一个用户,通常其uidgid均为1000

配置完成后,重启系统即可。

4,挂载失败或无法启动

若挂载失败,或配置/etc/fstab后导致自动挂载失败无法启动,在确认配置完全正确的情况下,则可能是下列原因导致。

(1) ntfs3驱动被屏蔽

若已经根据上述步骤,配置了自动加载ntfs3模块,但是启动后发现实际并未加载,通常说明ntfs3被屏蔽了(在Linux Mint系统会默认屏蔽),我们可以执行下列命令检查是否包含黑名单配置:

1lsinitramfs /boot/initrd.img-$(uname -r) | grep ntfs3
2

结果:

image-20251011221804678

可见有一个conf文件,编辑该文件:

1sudo vim /usr/lib/modprobe.d/mint-blacklist-ntfs3.conf
2

blacklist nfts3一行注释掉,如下图:

image-20251011222009562

执行下列命令更新内核即可:

1sudo update-initramfs -u -k all
2

(2) NTFS分区存在错误

如果ntfs3模块已正确加载,但仍然无法挂载,则大概率是NTFS分区存在错误,为dirty状态。可手动挂载分区,若输出下列报错:

1[  245.852880] ntfs3(nvme0n1p4): It is recommened to use chkdsk.
2[  245.855540] ntfs3(nvme0n1p4): volume is dirty and "force" flag is not set!
3[  268.550293] ntfs3(nvme0n1p4): It is recommened to use chkdsk.
4[  268.551428] ntfs3(nvme0n1p4): volume is dirty and "force" flag is not set!
5[  282.502211] ntfs3(nvme0n1p4): It is recommened to use chkdsk.
6[  282.503173] ntfs3(nvme0n1p4): volume is dirty and "force" flag is not set!
7[  313.629987] ntfs3(nvme0n1p4): It is recommened to use chkdsk.
8[  313.630935] ntfs3(nvme0n1p4): volume is dirty and "force" flag is not set!
9[  427.959717] ntfs3(nvme0n1p4): It is recommened to use chkdsk.
10[  427.960755] ntfs3(nvme0n1p4): volume is dirty and "force" flag is not set!
11

这种就是NTFS分区存在错误,导致这个问题的原因通常是:

  • Windows开启了快速启动,关机后分区仍然是未关闭状态
  • Windows操作该分区后,未正确保存文件和数据
  • 在Windows系统中,是重启后直接进入Linux,而不是关机后再开机进入Linux,因为重启时不会完整关闭NTFS分区

对于该情况,可以先进入Windows系统,然后使用chkdsk命令修复:

1# chkdsk 盘符 /f /r
2chkdsk D: /f /r
3

修复完成后,一般能解决该问题。

可见,ntfs3虽然性能较好,但是对脏分区非常敏感,因此在使用ntfs3驱动时,我们则需要关闭Windows快速启动,并正常关机后再开机进入Linux。


Linux挂载NTFS分区指南》 是转载文章,点击查看原文


相关推荐


老题新解|十进制转二进制
程序员莫小特2025/10/10

《信息学奥赛一本通》第160题:十进制转二进制 题目描述 给定一个十进制整数 n n n,请将其转换为对应的二进制表示,并输出。 输入格式 输入包含一行,一个整数 n


单机已达上限?PerfTest 分布式压测登场,轻松模拟百万用户洪峰
Go有引力2025/10/9

前言 在前一篇文章中,我们详细介绍了 perftest 的单机压测能力,展示了它如何通过极简的命令行实现对 HTTP/1.1、HTTP/2、HTTP/3 与 WebSocket 的高性能测试。然而,当业务系统庞大、服务部署分布式、网络链路复杂时,单机的压测能力显然无法满足真实生产环境的模拟需求。 幸运的是,perftest 不止于单机。它同样支持 分布式集群压测,通过 Collector + Agent 的架构,让你轻松在多台机器上同时发起测试,实现百万乃至千万级并发的性能评估。 为什么选择分


Webpack实战笔记:从自动构建到本地服务器搭建的完整流程
XiangCoder2025/10/7

作为前端开发者,Webpack 是绕不开的构建工具。最近系统学习了 Webpack 的自动构建和服务器搭建,整理了一套从基础到实战的操作笔记,包含具体案例和踩坑经验,适合新手跟着实操。 前言:为什么需要 Webpack 构建工具? 刚开始写前端项目时,我们习惯在 index.html 里手动引入各种 js、css 文件。但随着项目变大,会遇到两个核心问题: 资源越来越多,手动管理引入路径容易出错(尤其是加哈希值优化缓存时); 开发时需要频繁刷新页面看效果,效率太低。 Web


Android系统模块编译调试与Ninja使用指南
龙之叶2025/10/6

模块编译调试方法 (此处举例framework、installd、SystemUI等模块的编译调试,其他类似) 1. Framework模块编译 Android系统代码的framework目录内,一共有3个模块单独编译:framework、services、framework-res.apk。 注意:偶尔会有改了代码但没检测到,编译结束后产物并未更新的情况,所以可以考虑先剪切掉原先的产物或者检查产物更新时间确保已经重新编译。 步骤: 完成根目录下 source build/envsetup.sh


精选 4 款开源免费、美观实用的 MAUI UI 组件库,助力轻松构建美观且功能丰富的应用程序!
追逐时光者2025/10/5

前言 一套优秀的 UI 组件库不仅能大幅提升开发效率,还能显著增强应用的视觉体验与交互质感。今天大姚给大家分享 4 款开源免费、美观实用的 MAUI UI 组件库,助你轻松打造专业级的跨平台应用程序。 .NET MAUI介绍 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET开源免费的跨平


医院病人信息管理系统 Web 版开发实战(一)
FPGA+护理+人工智能2025/10/3

医院病人信息管理系统Web版开发实战 文章目录 医院病人信息管理系统Web版开发实战一、概述二、项目结构搭建2.1 Flask 项目结构原理2.2 创建项目文件夹2.3 初始化 Flask 应用 三、路由设计3.1 Flask 路由机制原理3.2 定义核心路由3.3 数据存储函数 四、模板开发4.1 Jinja2 模板引擎原理4.2 基础模板设计4.3 首页模板(index.html)4.4 添加病人模板(add.html)4.5 详情和编辑模板 未完待续


Java-Spring入门指南(十一)代理模式与Spring AOP实战
珹洺2025/10/2

Java-Spring入门指南(十一)代理模式与Spring AOP实战 前言一、代理模式1.1 静态代理步骤1:定义租房接口(抽象行为)步骤2:实现房东类(真实对象)步骤3:编写中介类(代理对象)步骤4:测试静态代理静态代理的优缺点 1.2 动态代理 二、AOP是什么?2.1 AOP是什么?2.2 AOP有什么用?2.3 AOP的使用场景是什么?2.4 AOP的核心特点是什么? 三、AOP在Spring中的应用3.1 准备依赖3.2 配置Spring的AOP命名空间3.3 定义


(14)ASP.NET Core2.2 中的日志记录
老葱头蒸鸡2025/10/2

1.前言 ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API。本文介绍了如何将日志记录API与内置提供应用程序一起使用。 2.添加日志提供程序 日志记录提供应用程序显示或存储日志。例如,控制台提供应用程序在控制台上显示日志,Azure Application Insights提供应用程序将这些日志存储在Azure Application Insights中。要添加提供应用程序,请在Program.cs中调用提供程序的Add{provider name}扩


Python 的内置函数 abs
IMPYLH2025/10/2

Python 内建函数列表 > Python 的内置函数 abs 无论是在数学计算、数据分析,还是日常编程中,我们经常需要获取一个数的绝对值。Python 提供的 abs() 函数,可以让我们轻松地计算数字的绝对值,而无需手动判断正负。 abs 函数的参数和返回值如下: def abs(x): ''' 计算参数的绝对值 :param x: 要计算的值 :return: x 的绝对值 ''' 示例 在线运行 print(abs(-50)) p


[论文阅读] 人工智能 + 软件工程 | 从“人工扒日志”到“AI自动诊断”:LogCoT框架的3大核心创新
张较瘦_10/1/2025

随着软件服务系统日益庞大、复杂,基于日志的故障诊断对保证软件服务的可靠性至关重要。已有的日志故障诊断方法虽能确定故障类型,但无法为推理过程提供解释,导致难以在生产环境部署。为此,本文提出LogCoT框架,通过Auto-FSC算法利用超大规模闭源LLM提取日志语义,生成可解释根因分析报告;结合无类别标注指令优化与有类别标注参数微调,优化Mistral基座模型;再用LLMf-IPO算法纠正错误结果,对齐用户意图。在两大生产日志数据集上的实验表明,LogCoT在Accuracy、Macro-F1、Weighted

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0