☰
Ubuntu下硬盘挂载全攻略:从分区到fstab自动挂载
2026/10/19 7:16:30 网站建设 项目流程

挂载硬盘这件事,说难不难,说简单也翻过车。明明硬盘插上去了,系统里却看不到,或者看到了但重启后又消失,甚至不小心把系统盘给格式化了,这些坑我都踩过。这篇就围绕 Ubuntu 下的硬盘挂载,从识别设备、分区格式化、手动挂载,到开机自动挂载和常见问题排查,完整捋一遍,给你一套能直接照着操作、也能帮你避开雷区的方案。

1. 挂载到底在做什么:搞清三个关键概念

想彻底搞懂挂载,先得把“分区”“文件系统”“挂载点”这三个词拆开。很多人一开始就是被这三个词绕晕的。

1.1 分区不是格式化,两者千万别混淆

硬盘买回来是块“白盘”,上面什么都没有,没法直接存数据。第一步是分区,相当于给硬盘划定使用区块。比如把一块 4TB 的盘分成一个整区,或者分两个 2TB 的区,这取决于你的规划。分区本身不产生任何数据读写能力,它只是定义了硬盘的“空间布局”。

分区之后才是格式化,也就是创建文件系统。文件系统决定数据以什么结构存放在分区里,比如 ext4、XFS、Btrfs 这些。可以这么理解:分区是建房子时划分房间,格式化是给每个房间装上储物架、贴上标签,之后才能往里放东西。

在 Ubuntu 下,分区工具是fdisk或parted,格式化工具是mkfs。新手最容易犯的错误就是把分区和格式化混为一谈,以为分完区就能挂载使用了,实际上没格式化就挂载,系统会直接报错“wrong fs type”。

1.2 挂载点就是个“接入口”

Linux 里没有 C 盘 D 盘的说法,所有文件和硬盘都是通过目录来访问的。挂载,就是把某个分区“接”到某一个目录下,之后往这个目录里写东西,实际就是往那个分区里写。

挂载点本身可以是任意空目录,比如/mnt/data、/srv/storage,甚至/home。选择挂载点时有个原则——建议用专门的空目录,不要随便挂到已有内容的目录上。如果挂载点目录里原本有文件,挂载后这些文件会被“遮住”,访问不到了,但数据还在,只是暂时隐藏。等卸载之后又会重新看到。

规划挂载点时,通常建议:

  • 临时挂载:用/mnt下的子目录
  • 长期数据盘:建议/data、/srv/data这类自己创建的目录
  • 家目录或特定用途:挂到/home的某个子目录

我一般会在根目录下建一个/data,把机械硬盘、SSD 都按作用挂进去,比如/data/media、/data/backup,这样所有数据路径清晰,后续备份、迁移也方便。

2. 上手实操:分区、格式化、挂载的完整流程

下面这段是核心操作,按步骤走就行。演示环境是 Ubuntu 22.04 LTS,硬盘是新增的一块 4TB 机械硬盘,设备名可能是/dev/sdb,以你的实际输出为准。

2.1 找到你的硬盘:用 lsblk 识别设备名

操作开始前千万要搞清楚哪块盘是哪块。打开终端,执行:

lsblk

这个命令的结果非常直观,类似:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 238.5G 0 part / sdb 8:16 0 3.7T 0 disk

lsblk按树状结构展示块设备,sda是你的系统盘,sdb就是刚插上去的新硬盘。在没有分区之前,sdb下面不会显示任何子项。也可以用sudo fdisk -l看更详细的信息,包括磁盘型号、扇区大小,用来交叉确认硬盘身份。

注意:sda、sdb这种设备名不是永久固定的。如果新插一块硬盘,系统可能把设备名重新排列。所以确认身份时要结合容量大小来判断,避免把系统盘当成新盘操作。

确认好哪块盘是新盘之后,后续所有操作都以它为目标。

2.2 创建分区:使用 fdisk 还是 parted?

新硬盘分区有两种常用工具:fdisk适合 2TB 以下的盘和 MBR 分区表,parted或gdisk适合 2TB 以上的大容量盘使用 GPT 分区表。

MBR 分区表最大只能支持 2TB 的容量,超过 2TB 的硬盘必须用 GPT。现在的新硬盘,建议统一使用 GPT 分区表,这也是 UEFI 时代的主流标准。所以即便是小容量盘,我一般也用parted或gdisk。

用parted创建一个 GPT 分区表和一个整盘分区:

sudo parted /dev/sdb

进入 parted 交互界面后:

(parted) mklabel gpt (parted) mkpart primary 0% 100% (parted) print (parted) quit

这段命令的意思是:先把磁盘分区表设为 GPT,然后建一个从 0% 到 100% 空间的主分区。如果之后想拆成多个分区,把 100% 改成具体的百分比就行,比如 0% 50% 和 50% 100%,分两个区。

如果更习惯传统方法,用fdisk也完全可以,但和 parted 有个明显差异:fdisk 创建的 MBR 分区表遇到大容量盘会有问题,所以只要盘大于 2TB,直接选 parted 或 gdisk 就没这么多事。

分区完成后,再用lsblk检查,能看到sdb1这个分区出现了。

2.3 格式化:ext4、XFS 还是 Btrfs?

分区好了,下面要创建文件系统。选什么文件系统,影响性能和后续维护,目前最常见的三种:

文件系统适合场景优势劣势
ext4通用数据盘、系统盘稳定成熟,兼容性好,几乎任何 Linux 发行版都支持大目录性能一般,不支持数据校验
XFS大文件、多媒体存储高吞吐量,处理大文件性能出色不能缩小分区,遇到断电需要修复
Btrfs快照、压缩、高级功能支持快照、子卷、压缩、数据校验复杂性高,一些时候性能波动

个人建议,如果你只是挂个盘存文件、放视频照片这些,用 ext4 最省心;如果是跑数据库、存虚拟机镜像这类对读写性能有要求的场景,XFS 表现更好;如果你喜欢折腾快照和备份,Btrfs 值得尝试,但需要提前熟悉它的管理命令。

格式化命令:

sudo mkfs.ext4 /dev/sdb1

如果是格式化成 XFS:

sudo mkfs.xfs /dev/sdb1

格式化中途不要断电、不要强制中断,否则文件系统结构会损坏,虽然 mkfs 会检测出大部分问题,但还是要尽量避免意外中断。

重要:格式化会把整个分区的数据全部清空。操作前务必确认/dev/sdb1这串字符没有写错。我见过有人因为设备名看走眼,sdb和sdc混了,结果把存满资料的分区格式化了。确认方法很简单:打开另一个终端,执行lsblk -o NAME,SIZE,MODEL,对照硬盘品牌和容量,再执行格式化。

2.4 创建挂载点并挂载

格式化完成后,创建挂载目录并手动挂载验证:

sudo mkdir -p /data sudo mount /dev/sdb1 /data

挂载后检查是否成功,看输出结果:

df -h /data
Filesystem Size Used Avail Use% Mounted on /dev/sdb1 3.7T 24K 3.5T 1% /data

看到这个结果就说明挂载成功了。还可以使用findmnt /data,输出的信息会更详细,包括文件系统类型和挂载参数。

但这里有个大坑,重启之后挂载就会消失,系统不会自动帮你挂载。这是 Linux 的默认行为,想要开机自动挂载,必须要往/etc/fstab里写配置。

3. 开机自动挂载:fstab 配置的正确姿势

3.1 为什么用 UUID 而不是设备名

/dev/sdb1这个设备名不是稳定的。同一块硬盘,开机顺序变了,内核发现了先后顺序变了,设备名就可能变成/dev/sdc。等你重启完发现挂载失败,就很折腾。

Linux 给每个文件系统分配了一个全局唯一标识符,叫 UUID。这个值在格式化时生成,只要不重新格式化,它永远不变。所以 fstab 里应该用 UUID 来引用分区。

查看 UUID:

sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-1234-5678-abcd-1234567890ab" TYPE="ext4" PARTUUID="..."

拿这里UUID=后面引号里的内容,就是你要在 fstab 里用的标识。

3.2 手把手配置 /etc/fstab

打开 fstab:

sudo nano /etc/fstab

每行一个挂载配置,六个字段,分别代表:

<设备> <挂载点> <文件系统类型> <挂载选项> <dump> <fsck>

我的推荐配置:

UUID=a1b2c3d4-1234-5678-abcd-1234567890ab /data ext4 defaults,noatime 0 2

逐个字段解释:

  • 第一个字段:设备,这里填 UUID
  • 第二个字段:挂载点目录
  • 第三个字段:文件系统类型 ext4,用 XFS 就填 xfs
  • 第四个字段:挂载选项,defaults是标准组合。noatime表示不更新文件访问时间,可以减少写盘次数,对 SSD 和机械盘都有一定性能提升
  • 第五个字段:是否备份,通常填 0
  • 第六个字段:开机时文件系统检查顺序。根分区/填 1,其他数据盘填 2,不需要检查就填 0

保存退出后,用下面命令验证配置有没有写错:

sudo mount -a

mount -a会依据 fstab 自动挂载所有尚未挂载的条目。如果执行后没有报错,再用df -h确认/data已经挂载上。只要mount -a报错,先别急着重启,仔细看错误提示,fstab 写错可能导致系统开机无法进入桌面。

挂载选项里还有一个常见的坑,就是添加nofail选项:

UUID=xxx /data ext4 defaults,noatime,nofail 0 2

nofail的含义是,如果系统启动时这个设备不存在或挂载失败,不报错、不卡住,继续正常启动。对于外接移动硬盘、USB 硬盘、有时会断开的设备,这是一个非常实用的选项。固定内置硬盘可以不加,但加了也没什么坏处。

3.3 一个值得注意的顺序问题

如果你是给服务器、NAS 这类 7x24 小时运行的机器配置新硬盘,建议把数据盘挂载在独立的目录下,比如/data、/srv/data。如果直接挂到/home或/var这类系统关键目录,万一盘挂了,系统服务也会跟着连带出问题。

4. 挂载后的权限设置与常规维护

4.1 普通用户如何读写挂载盘

用 root 挂载的 ext4 分区,默认挂载后只有 root 能写入。普通用户访问时经常会遇到Permission denied。解决方式有两种。

临时简单的方式是直接给挂载点目录授权:

sudo chown -R $USER:$USER /data

把/data的属主改成当前用户。要注意chown修改的是目录和现有文件的权限,新盘上还没有文件所以这个方式很直接。

但要注意:如果 fstab 里配置了noatime等选项,或者以后新增其它用户,这个目录的属主就是固定写死在盘上的,所有文件都以这个属主身份存取。多用户场景可以考虑用更细粒度的权限方案,但家用场景chown已经足够。

4.2 检测硬盘健康状态

挂载不是终点,Linux 下机械硬盘需要定期关注健康状态,否则等你发现数据丢失的时候就晚了。

看 S.M.A.R.T. 信息:

sudo smartctl -a /dev/sdb

重点关注这几项:

  • Reallocated_Sector_Ct:重映射扇区数,数值持续增加意味着盘片出现坏道
  • Current_Pending_Sector:待重映射扇区,如果这个数字不为 0,赶紧备份数据
  • UDMA_CRC_Error_Count:这个数字一般和不当关机、接口松动相关,如果持续增长要考虑换线

如果系统没装 smartctl,先安装:

sudo apt install smartmontools

使用-a参数之前先确认硬盘支持 S.M.A.R.T.,一般硬盘都会支持,输出里能看到相关信息。

4.3 卸载硬盘的正确做法

不要直接拔掉活动硬盘,建议先卸载再断电:

sudo umount /data

如果提示target is busy,说明有进程正在使用这个目录。用lsof +D /data查看哪个进程占用,确认无误后关掉那个进程再卸载。

提示:umount不是unmount,不要写错。写成unmount会让你直接收到 command not found 的报错。

5. 常见报错和排查思路汇总

挂载硬盘的过程中,有几个报错我反复见过,这里整理成速查表,方便对照处理。

现象可能原因解决方式
mount: wrong fs type, bad option...分区还没格式化,或指定的文件系统类型不对路用blkid确认分区格式,再按实际类型挂载
mount: /data: mount point does not exist挂载目录没创建执行sudo mkdir -p /data
mount: /data: mount point is not empty挂载点目录里已有文件,挂载后会隐藏原内容换一个空目录,或者把原目录里文件先移走
mount: /dev/sdb1 already mounted or /data busy设备和挂载点已被占用了用findmnt查看当前挂载情况,确认是否正确
重启后挂载消失没写进 fstab按第 3 节配置好 fstab
开机后提示Failed to mount /data卡住fstab 配置有问题检查 UUID 是否输入错误,或加上nofail选项
Permission denied无法写入权限不够参考 4.1 节用 chown 调整属主
fsck.ext4: unable to resolve 'UUID=...'fstab 里 UUID 和实际不符用lsblk -f或blkid核对 UUID

还有一个很多人问过的场景:新加的硬盘在lsblk里能看到,但系统里就是找不到对应的设备路径。一般是挂载点创建在非标准目录导致的错觉,lsblk的 NAME 列和挂载点是两个概念。比如/dev/sdb1存在并不代表访问/dev/sdb1就等于访问/data,必须先 mount。

6. 额外的一些实测心得

最后分享几个我自己实际使用中得出的经验。

第一,fstab 配置变更后,一定先用mount -a验证再重启。有几次我改完 fstab,自信满满直接重启,结果卡在挂载失败界面,还得手动进入系统修复模式改回来。验证这个动作只要几秒钟,比事后修复省事太多。

第二,长时间运行的数据盘,建议开启日志型文件系统的定期检查。ext4 有e2fsck工具,默认每 30 次挂载或 180 天会自动检查一次。不要把自动检查的周期改得过于频繁,否则会影响正常使用时的体验。如果发现访问速度莫名变慢,可以手动执行一次:

sudo e2fsck -f /dev/sdb1

注意,这个命令必须在分区未挂载的情况下运行,不然会报错,还可能损坏文件系统。

第三,机械硬盘挂载后如果出现咔嗒异响、读写速度断崖式下跌,马上备份。这类症状十有八九是盘体或磁头出现问题,趁数据还没彻底丢失前及时抢救,不要心存侥幸。我有块硬盘就是开始时只是偶尔咔嗒声,觉得还能用,直到系统彻底认不出盘才后悔。定期跑一次smartctl,重要数据再额外做一份备份,配合定时任务,长期来看能少很多麻烦。

第四,如果以后要把硬盘从一台机器移到另一台机器,迁移前用umount安全卸载,重新插到新机器后直接改 fstab 里的 UUID 即可,数据都在,不需要重新格式化。这一点看起来简单,但真到迁移的时候能省不少事。

这块新硬盘装好之后,我那台旧机器上原本紧张的空间问题直接解了,大文件、虚拟机镜像、备份存档都有了去处,读写速度也比想象中稳定。Linux 下挂载硬盘就是这么一套流程,把握住分区、格式化、挂载、自动挂载这几个关键步骤,基本就能畅通无阻。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询