1. 先搞清楚“挂载”到底在干什么为什么Linux不像Windows那样直接显示所有硬盘分区很多人第一次从Windows转到Linux或者给老电脑装了双系统之后都会产生一个相同的困惑Windows系统盘明明插在机器上Linux也启动得好好的为什么打开文件管理器就是看不到Windows那个盘里的内容有人甚至会怀疑是不是硬盘坏了或者Linux根本不支持NTFS。其实这跟硬件、文件系统都没多大关系核心问题在于Linux的“挂载”机制和Windows默认的“分配盘符”机制的设计思路完全不同。Windows的逻辑是“所见即所得”——只要是能被识别到的硬盘分区系统会直接给每个分区分配一个盘符C盘、D盘之类用户打开“我的电脑”就能一览无余。而Linux的逻辑是“一棵树”——整个文件系统从根目录/开始所有存储设备都只是这棵树上临时“挂”上来的一个节点。硬盘分区不会自动出现在某个固定位置你需要主动告诉系统“我要把这块分区放到哪个目录下访问”这个动作就叫“挂载mount”。换句话说在Linux里看到的/home、/data这些目录仅仅是一个“入口”或者说“挂载点”分区的数据要通过这个入口才能访问。所以当你把另一个系统盘不管是另一个Linux系统盘、Windows系统盘还是移动硬盘里的系统备份接到当前Linux机器上时系统其实已经识别到了这块盘只是没有给你分配一个“可见的入口”。你只需要找到合适的分区把它挂载到某个目录下就能像操作普通文件夹一样读取里面的文件了。这篇文章我就围绕“挂载其他系统盘”这件事把从识别磁盘到安全卸载的完整流程、常见坑和我的实战经验都梳理一遍希望对刚接触Linux或者被双系统折腾过的朋友有帮助。2. 挂载前的侦察工作用lsblk和blkid把每块盘的身份彻底摸清2.1 用lsblk快速看清磁盘分区拓扑拿到一块不确定来历的系统盘我建议第一步永远是执行lsblk而不是直接fdisk -l更不是闭着眼mount。lsblk的全称是“list block devices”输出结果是一棵非常直观的树状结构能让你一眼看出当前的磁盘型号、分区大小、挂载点等信息。比如我曾在虚拟机里挂载了一块从旧电脑拆下来的Linux系统盘执行结果大概是这样的$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 120G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 100G 0 part / └─sda3 8:3 0 19.5G 0 part [SWAP] sdb 8:16 0 240G 0 disk ├─sdb1 8:17 0 100M 0 part ├─sdb2 8:18 0 16G 0 part └─sdb3 8:19 0 223.8G 0 part注意看sdb这一块——MOUNTPOINT列是空的说明它还没挂载。这块盘就是我们要处理的目标。从分区大小和顺序来看sdb1很可能是EFI引导分区sdb2可能是一个系统保留分区或者Windows的恢复分区sdb3则是数据分区。但lsblk不会告诉你文件系统类型所以还需要blkid出场。2.2 用blkid识别文件系统类型的两个场景blkid的作用是读取分区的UUID和文件系统类型标识。对于挂载来说知道UUID比知道设备名重要得多因为设备名sda、sdb有可能因为启动顺序变化而改变而UUID是一块分区在格式化时就写死的唯一标识。我执行sudo blkid后前面的输出会补充成类似这样的信息$ sudo blkid /dev/sdb1: UUID5A3C-9F21 TYPEvfat PARTUUIDc1d2a3b4-01 /dev/sdb2: UUID9E8E7F8E-7F8E-4A2B-9B7C-1D2E3F4A5B6C TYPEext4 PARTUUIDc1d2a3b4-02 /dev/sdb3: UUID1A2B3C4D5E6F7E8F TYPEntfs PARTUUIDc1d2a3b4-03看到没有一块盘上可以同时存在vfat、ext4、ntfs三种文件系统。如果是Linux系统盘/分区大概率是ext4或者xfs如果是Windows系统盘C盘基本是NTFS如果是U盘或EFI分区则是vfat。文件系统类型直接决定了后面挂载命令要加什么参数这一步千万不能省略。2.3 怎么判断哪个分区才是“系统盘里的正主”有时候一块系统盘里有好几个大分区光看大小也不一定能立刻确定哪个才是系统根分区。我的经验是结合lsblk -f来看这个命令会显示每个分区里的文件系统标签和UUID还能看到分区是否已经被格式化。比如有一块盘的分区标签是LINUX_ROOT那基本就是原来的根分区了。另外还有一个办法就是用df -hT查看当前系统已经挂载了哪些分区。通过对比挂载点你可以排除掉当前系统正在使用的盘剩下的就是待挂载的那块盘。这一步相当于“案前调查”多花30秒观察后面少踩两个坑。3. 手动挂载实操mount命令的完整玩法与参数选择3.1 最基础的挂载命令格式侦察完成之后就可以动手挂载了。mount命令的基本格式是mount [参数] 设备文件 挂载点目录举一个最常用的例子比如我要把/dev/sdb3这个NTFS分区挂载到/mnt/win目录下sudo mkdir -p /mnt/win sudo mount /dev/sdb3 /mnt/win先创建挂载点目录然后挂载。挂载点可以是任意空目录但建议不要挂在/、/home这些已经被占用的系统目录上否则会把原有目录里的内容暂时“遮住”。最常用的挂载点是/mnt和/media下面新建的子目录。挂载成功后用df -hT或者ls /mnt/win就能看到里面的文件了。不过这种最基础的写法只适用于和当前Linux文件系统兼容的情况比如挂载一个ext4格式的Linux根分区。如果目标分区的文件系统不是Linux原生支持的mount会报错或者挂载成功了但文件乱码、权限混乱。所以挂载前最好明确文件系统类型显式指定-t参数比如sudo mount -t ext4 /dev/sdb2 /mnt/linux-root。3.2 为什么单独强调NTFS挂载ntfs-3g的来龙去脉如果你要挂载的是Windows系统盘那大概率会遇到NTFS分区。Linux内核虽然自带了NTFS的只读驱动旧版的ntfs模块但性能差、写功能不全稍微大一点的文件就容易出错。真正的解决方案是ntfs-3g这是一个用户态驱动通过FUSEFilesystem in Userspace机制实现对NTFS分区的完整读写支持。在Debian/Ubuntu系机器上安装它只需要一条命令sudo apt install ntfs-3g在CentOS/RHEL系机器上是sudo yum install ntfs-3g装完之后直接挂载即可sudo mount -t ntfs-3g /dev/sdb3 /mnt/win多数发行版甚至能自动识别你直接sudo mount /dev/sdb3 /mnt/win也会默认调用ntfs-3g。我建议显式写-t ntfs-3g因为这样输出信息更清晰而且能保证用的是正确的驱动。3.3 让挂载行为更可控的实用参数组合如果你的目标分区里是大量图片、视频、文档我建议挂载时带上一些特定参数能显著减少实际使用时的麻烦。比如下面这一组sudo mount -t ntfs-3g -o uid1000,gid1000,dmask022,fmask133 /dev/sdb3 /mnt/winuid和gid将分区内所有文件的属主强制指定为当前用户。否则NTFS分区上的文件默认可能显示为root或某个未知用户导致普通用户只有读权限没法写。dmask022目录权限设为755即用户可读写执行组和其他人可读执行。fmask133文件权限设为644即用户可读写组和其他人只读。这样可以避免一个非常经典的坑挂载Windows系统盘后想在里面对文件做修改结果提示“只读文件系统”实际上不是文件系统只读而是文件的所有者不对普通用户根本没写权限。如果是ext4的Linux系统盘分区参数通常更简单sudo mount -o ro /dev/sdb2 /mnt/old-linux加一个ro表示只读挂载。早些年我修复别人坏掉的Linux系统时习惯只读挂载原系统盘这样即使原系统里有什么异常也不会因为误操作把数据改坏。只读挂载是排查系统故障时的安全底线操作。4. 挂载Windows系统盘的四个常见坑快速启动、休眠文件、大小写和编码4.1 快速启动和休眠残留导致的“假只读”很多人在Debian下挂载Windows系统盘时明明有写权限却无法写入任何文件。如果执行mount -o remount,rw也没有作用那大概率是被Windows的“快速启动”功能坑了。Windows 8以后的系统默认开启了“快速启动”关机并不是真正关机而是把内核状态写入hiberfil.sys休眠文件。这块分区的状态在Windows看来是“休眠中”NTFS的元数据可能处于不一致状态。Linux的ntfs-3g驱动检测到这种情况后出于数据安全考虑会强制以只读模式挂载甚至拒绝挂载。解决办法有两个最彻底的是进入Windows在控制面板里关掉“快速启动”或者直接用命令powercfg /h off关闭休眠功能如果你不方便回Windows也可以尝试强制挂载但我不建议——因为强行忽略休眠标志确实可能产生数据不一致写坏文件的风险真实存在。我自己为了图省事踩过一次后来某个重要目录里的文件出现损坏只能靠备份恢复教训相当深刻。4.2 文件名大小写与编码带来的查找困难Windows的NTFS文件系统对大小写不敏感默认保持原始大小写但Linux下的ext4是严格区分大小写的。挂载NTFS分区后你可能会遇到一个奇怪的现象在Windows里看到的Photo.jpg在Linux里输入photo.jpg是找不到的。这一点习惯了Windows的玩家很容易懵。另外一个是中文文件名显示乱码。这通常不是挂载本身的问题而是当前系统缺少中文字体或者locale设置不对。建议挂载后用ls -l看看如果中文显示成?或者一堆数字就检查/etc/locale.gen里是否已经生成了zh_CN.UTF-8执行sudo locale-gen后重新登录shell即可。4.3 分区表大小超过2T带来的GPT问题如果你手里的“其他系统盘”是一块大容量硬盘比如4T、8T而且是从UEFI电脑上拆下来的那它大概率是GPT分区表。老旧的MBR分区表最大只能管理2TGPT则没有这个限制。如果你挂载的是一个GPT分区表的大盘但主板设置或当前系统内核比较老可能会在识别时出现invalid signature detected check secure boot policy之类的提示。这通常不是分区表损坏而是Secure Boot策略拦截了某些分区签名导致内核无法正确读取。碰到这种报错我的建议是先确认当前系统是否开启了Secure Boot然后试试去BIOS里暂时关闭Secure Boot再启动或者在挂载时确认partition table被正确识别。更常见的情况是内核版本太老不认识GPT升级到较新的发行版基本能解决。如果只是临时读盘也可以尝试parted重新读取分区表但绝对不要轻易写操作否则分区数据有丢失风险。4.4 挂载Windows系统盘后文件权限的“一刀切”问题NTFS文件系统本身不存储Unix风格的权限信息所以挂载NTFS时所有文件在Linux眼里都只有“读”或“读写”两种状态具体取决于挂载参数。这也是很多人觉得“挂载Windows盘之后权限乱糟糟”的原因。你没法像Linux原生文件系统那样对单个文件做chmod因为这些权限信息在NTFS里根本不存在。如果你确实需要在Windows系统盘和Linux之间频繁交换文件我个人的建议是要么在Windows那边专门划出一个exFAT格式的数据分区而不是直接把整个系统盘拿来挂载要么就固定使用同一组uid/gid挂载参数并且在Windows端也按相同用户管理文件。千万不要指望NTFS上的权限能像ext4那样精细管理。5. 开机自动挂载的正确姿势fstab配置文件详解与安全卸载5.1 手动挂载与自动挂载的本质区别手动挂载的缺点是“一关机就失效”。服务器重启之后你原来挂载好的目录又变成空目录了所有数据看起来“消失”了其实只是没挂上。对于需要长期使用的场景我们必须把挂载信息写进/etc/fstab让系统在启动时自动挂载。/etc/fstab的每一行代表一个挂载配置格式是设备标识 挂载点 文件系统类型 挂载参数 是否dump 是否fsck举个例子# 设备 挂载点 类型 选项 dump pass UUID1A2B3C4D5E6F7E8F /mnt/win ntfs-3g defaults,uid1000,gid1000,dmask022,fmask133 0 0 UUID9E8E7F8E-7F8E-4A2B-9B7C-1D2E3F4A5B6C /mnt/old-linux ext4 defaults,noexec,ro 0 2这里有三个容易出错的点设备标识最好用UUID不要用/dev/sdb3。因为系统启动时磁盘设备名顺序不确定今天是sdb明天可能就变成sdc了。dump和pass这两列对于普通挂载都可以填0但根分区一般是0 1表示启动时做文件系统检查。挂载Windows分区建议0 0避免开机时报错。一旦/etc/fstab写错系统有可能无法正常启动。所以修改fstab前最好备份一份甚至建议先用mount -a测试配置是否正确而不是直接重启验证。5.2 写错fstab导致开不了机的自救方法这是所有折腾挂载的人都要面对的一个“终极考题”。当fstab配置有误系统启动时挂载失败可能会卡在“emergency mode”或者直接进入维护模式。这时候不要慌用root密码登录然后执行cat /etc/fstab检查最后修改的部分删掉或注释掉有问题的行再执行mount -a验证。如果连root密码都忘了就刚才挂载的那块盘拆下来插到别的Linux机器上直接把fstab改好再插回去。为了防止这种尴尬我在生产环境服务器上是绝对不会让人随便改fstab的。在个人电脑上折腾双系统盘我建议先在命令行里反复用mount -a和mount验证参数没问题再写进fstab。并且每次修改fstab后保留一个fstab.bak这算是运维层面的基本功。5.3 卸载操作先退出目录再umount挂载是一个动作卸载也是一个动作。卸载命令是umount注意拼写是umount不是unmount。执行方式cd / sudo umount /mnt/win为什么先强调cd /因为如果你当前终端正处于/mnt/win目录里卸载时会提示“target is busy”因为进程还占用着这个挂载点。退出目录后就能顺利卸载。另外一个快速定位谁占用了挂载点的方法是lsof f -- /mnt/win或者用fuser -v /mnt/win查看占用进程再kill掉相关进程后卸载。卸载成功后你会发现挂载点目录还在但里面是空的——这就对了原本的文件并没有消失它们还在那个分区里只是没有了“入口”而已。很多人第一次遇到这个情况会以为数据丢了跑到群里问“挂载后卸载文件丢了怎么办”多数时候只是虚惊一场。6. 从实践中总结的几条挂载经验6.1 不要拿生产环境机器做实验我见过有人直接在公司的数据库服务器上挂载一块来历不明的系统盘结果因为文件系统类型识别错误把整个数据目录的挂载点覆盖了差点导致数据库服务无法启动。挂载其他系统盘这件事本身不危险但一旦把“挂载点”选错就会遮住原有目录。比如你把一块新的系统盘挂载到/var/lib/mysql而这个目录原本是数据库的数据目录那么挂载成功后原目录里的数据在挂载期间是不可见的如果应用还在读写就可能出大问题。所以所有挂载实验都在虚拟机、或者专门新建的/mnt测试目录里做别图省事直接挂在系统目录上。6.2 先备份分区表再动手针对你要挂载的这块盘特别是那种带着重要数据的系统盘在挂载前建议先备份一次分区表。使用fdisk交互模式里的p打印分区表之后再用dd备份GPT分区表头部的几个扇区或者直接用sfdisk -d /dev/sdb sdb-partition-backup.txt导出文本格式的分区表备份。这样即使后续不小心对那块盘执行了错误的分区操作也能用备份恢复。6.3 挂载的速度和安全性依赖文件系统驱动如果你经常需要挂载别人的系统盘建议保持系统自带的文件系统驱动是最新版本。在Ubuntu上ntfs-3g可以通过apt upgrade更新在CentOS上要关注内核模块的更新。另外挂载前用fsck检测文件系统状态是一个好习惯特别是对于非正常关机过的系统盘。执行sudo fsck /dev/sdb2时如果输出一堆错误说明文件系统可能不干净这种情况下优先考虑数据恢复而不是强行挂载写入。6.4 专治“怎么也挂载不上”的排查顺序最后分享一个我常用的排查顺序省得你在网上乱搜。先执行dmesg | tail -n 50查看内核日志很多挂载失败的原因会直接写在这里比如“unknown filesystem type”、“wrong fs type”、“input/output error”等。然后执行blkid确认文件系统标识是否正常如果没有显示任何UUID那有可能是没有对应驱动模块执行modprobe ntfs3或者modprobe fuse补上。接着检查分区是否被其他进程占用尤其是swap分区不能直接当作普通分区挂载否则会报“busy”或“already mounted”。按这个顺序走下来90%的挂载问题都能定位到具体环节剩下的10%多数是硬件层面的硬盘损坏或接口供电不足换根SATA线或换个USB转接盒再试就有答案了。对我来说挂载其他系统盘早就不只是应急修电脑的操作更是理解Linux文件系统设计哲学的一扇门。理解了“挂载点”这个概念之后再去接触LVM、软阵列、容器存储卷都会顺很多。希望这篇分享能帮你把这块硬骨头啃下来下次在虚拟机里插上一块旧系统盘从容地执行mount命令看到数据列出来的时候那种成就感值得你折腾这一趟。
企业数字化 ERP 产品动态
相关推荐
PHP双框架+uniapp小程序实战:瑜伽馆预约系统从架构到防超卖 1. 项目背景:瑜伽馆的约课难题,为什么值得自研一套系统我接手这个项目的时候,客户的瑜伽馆已经开了五年,会员将近两千人,但约课方式还停留在最原始的阶段——微信群接龙加前台手写登记。每天上午十点准时开始接龙&… · 2026/9/26 4:52:58
西南交大数据库实验:从SQL能跑到稳准可维护的工程化实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 4:52:58
ax:面向智能体的可编排执行底座与K8s调度契约 1. 项目概述:从“ax”这个极简标题看Agentic系统调度的底层逻辑你点开这个标题,第一反应可能是——“ax?就这俩字母?”没错,就是它。不是缩写、不是拼写错误、也不是漏字,而是当前整个Agentic(智… · 2026/9/26 4:52:52
PriorityQueue源码深度解析:堆排序、动态调整与实战陷阱 PriorityQueue这个类,几乎每个Java工程师都在代码里用过,但真能把它讲透的人不多。面试里问"堆排序",问"Top K",问"定时任务调度",绕来绕去都能落到PriorityQueue的源码上。我之前面试候… · 2026/9/26 6:34:30
SSM电商平台个性化推荐实战:协同过滤ItemCF项目全解析 Java Web 课设选了个“电商购物平台”不算新鲜,但加上“个性化推荐”这五个字,含金量立刻不一样。我最近完整过了一遍这个基于 SSM 的商城项目源码,从 IDEA 导入到推荐逻辑落地,再到前后台联调,算是把整条链路都跑通了… · 2026/9/26 6:34:30
华硕破晓×腾讯WorkBuddy:AI Agent办公本实战指南 1. 为什么“AI办公”这次真的不一样了过去两年,我身边不少做企业IT和办公数字化的朋友都有一个共同感受:AI工具装了一堆,真正每天用的没几个。原因不复杂——大部分所谓的AI办公,本质上还是“你问它答”的聊天框,你得主… · 2026/9/26 6:34:30
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46