【Linux知识】Linux磁盘开机挂载

Linux磁盘开机挂载

    • [一、🔧 一、基本概念](#一、🔧 一、基本概念)
    • [二、📌 二、实现步骤](#二、📌 二、实现步骤)
      • [步骤 1:确认磁盘设备名和文件系统类型](#步骤 1:确认磁盘设备名和文件系统类型)
        • [1.1 查看当前系统中的磁盘和分区](#1.1 查看当前系统中的磁盘和分区)
        • [1.2 查看该分区的文件系统类型](#1.2 查看该分区的文件系统类型)
      • [步骤 2:创建挂载目标目录](#步骤 2:创建挂载目标目录)
      • [步骤 3:编辑 `/etc/fstab` 文件,添加自动挂载配置](#步骤 3:编辑 /etc/fstab 文件,添加自动挂载配置)
      • 参数解释:
      • 其他常见例子:
      • [步骤 4:测试 fstab 配置是否正确(重要!)](#步骤 4:测试 fstab 配置是否正确(重要!))
      • [步骤 5:重启系统,验证自动挂载](#步骤 5:重启系统,验证自动挂载)
    • [三、🔐 补充说明](#三、🔐 补充说明)
      • [1. 为什么推荐使用 UUID,而不是 /dev/sdX?](#1. 为什么推荐使用 UUID,而不是 /dev/sdX?)
      • [2. 如何找到磁盘的 UUID 和 文件系统类型?](#2. 如何找到磁盘的 UUID 和 文件系统类型?)
      • [3. 如果磁盘是新的/未格式化的,需要先格式化!](#3. 如果磁盘是新的/未格式化的,需要先格式化!)
    • [四、✅ 总结:Linux 开机自动挂载磁盘的完整流程](#四、✅ 总结:Linux 开机自动挂载磁盘的完整流程)

在 Linux 系统中,如果你希望将某块磁盘(或分区) 开机自动挂载 到指定的目录(比如 /mnt/data),你需要修改系统的 /etc/fstab 文件 ,这是控制开机自动挂载的核心配置文件。

一、🔧 一、基本概念

什么是挂载(mount)?

  • Linux 中,所有的硬件设备(比如硬盘、U盘、分区)都是以文件的形式 存在于 /dev/ 目录下,如 /dev/sda1/dev/nvme0n1p2
  • 要使用这些存储设备上的文件系统,必须将其挂载(mount)到一个目录(称为挂载点,如 /mnt/mydisk),之后你才能通过该目录访问磁盘内容。

什么是开机自动挂载?

  • 手动挂载:每次重启后,你需要重新运行 mount 命令来挂载磁盘。
  • 自动挂载 :通过在 /etc/fstab 文件中添加一行配置,系统在启动时会自动挂载你指定的磁盘到指定目录。

二、📌 二、实现步骤

步骤 1:确认磁盘设备名和文件系统类型

1.1 查看当前系统中的磁盘和分区
bash 复制代码
lsblk

bash 复制代码
sudo fdisk -l

输出示例:

复制代码
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  512M  0 part /boot
└─sda2   8:2    0 99.5G  0 part /
sdb      8:16   0   50G  0 disk 
└─sdb1   8:17   0   50G  0 part 
  • 假设你想挂载的是 /dev/sdb1 ,它是一个 50G 的分区,目前没有挂载(没有 MOUNTPOINT)
1.2 查看该分区的文件系统类型
bash 复制代码
sudo blkid /dev/sdb1

输出示例:

复制代码
/dev/sdb1: UUID="1234abcd-5678-efgh-9012-ijklmnopqrstuv" TYPE="ext4"
  • 重点关注:
    • UUID (推荐使用,比设备名更稳定,比如 /dev/sdb1 可能因硬件变动而改变)
    • TYPE :比如 ext4xfsntfsvfat

推荐使用 UUID 来标识磁盘,而不是 /dev/sdX 名称,因为设备名可能在重启后发生变化。


步骤 2:创建挂载目标目录

比如你想把 /dev/sdb1 挂载到 /mnt/mydata,先创建这个目录:

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

你可以自定义这个路径,比如 /data/media/disk1 等。


步骤 3:编辑 /etc/fstab 文件,添加自动挂载配置

使用你喜欢的编辑器(如 nanovi)编辑 fstab 文件:

bash 复制代码
sudo nano /etc/fstab

在文件末尾添加一行,格式如下:

bash 复制代码
UUID=<你的分区UUID>  <挂载点目录>  <文件系统类型>  <挂载选项>  <dump>  <fsck顺序>
举个例子:

假设:

  • UUID 是 1234abcd-5678-efgh-9012-ijklmnopqrstuv
  • 挂载到 /mnt/mydata
  • 文件系统是 ext4
  • 挂载选项用默认的 defaults
  • dump 和 fsck 都设为 0

那么添加的一行是:

bash 复制代码
UUID=1234abcd-5678-efgh-9012-ijklmnopqrstuv  /mnt/mydata  ext4  defaults  0  2

参数解释:

字段 含义 示例/推荐值
UUID=... 磁盘分区的唯一标识符(推荐) 使用 blkid 命令查看
/mnt/mydata 本地挂载目标目录 你自己创建的目录
ext4 文件系统类型,如 ext4, xfs, ntfs, vfat blkid 查看 TYPE
defaults 挂载选项:读写、可执行、suid等 常用:defaults,也可用 noatime,nodiratime 等优化选项
0 是否使用 dump 备份(一般填 0) 0 表示禁用
2 是否在启动时检查文件系统(ext*系列一般非根分区填 2,根分区为 1) 根分区为 1,其他一般为 2,swap 为 0

如果你不确定文件系统类型,填 auto 也可以(但不够严谨,建议明确类型)。


其他常见例子:

挂载 NTFS 格式磁盘(如移动硬盘):
bash 复制代码
UUID=ABCD1234EF567890  /mnt/usb  ntfs-3g  defaults,uid=1000,gid=1000  0  0

需要安装 ntfs-3g 软件包(Ubuntu/Debian: sudo apt install ntfs-3g

挂载为只读:
bash 复制代码
UUID=...  /mnt/readonly_disk  ext4  ro  0  2
挂载时不自动挂载(比如用于手动挂载):

如果某行不想开机挂载,可以暂时注释掉(行首加 #)。


步骤 4:测试 fstab 配置是否正确(重要!)

在重启之前,强烈建议先测试 fstab 配置是否有误:

bash 复制代码
sudo mount -a
  • 如果配置正确,此命令会按照 /etc/fstab 的内容挂载所有未挂载的磁盘 ,且不会报错
  • 如果有错误(比如 UUID 错了、目录不存在、文件系统类型不对),系统会提示你哪一行有问题。

🔍 你可以通过以下命令检查是否挂载成功:

bash 复制代码
df -h

bash 复制代码
lsblk

你应该能看到 /dev/sdb1 已经挂载到了 /mnt/mydata


步骤 5:重启系统,验证自动挂载

bash 复制代码
sudo reboot

重启后,运行:

bash 复制代码
df -h

检查你的目标挂载点(如 /mnt/mydata)是否已经成功挂载,且来自正确的磁盘分区。


三、🔐 补充说明

1. 为什么推荐使用 UUID,而不是 /dev/sdX?

  • /dev/sda1/dev/sdb1 这类名称可能因硬件插拔顺序、BIOS、磁盘热插拔等因素发生变化,导致系统启动时挂载错设备。
  • UUID 是分区/磁盘的全球唯一标识符,不会变化,更加可靠。

你可以通过以下命令获取磁盘的 UUID:

bash 复制代码
sudo blkid

输出示例:

复制代码
/dev/sda1: UUID="abcd1234..." TYPE="ext4"
/dev/sdb1: UUID="1234abcd-5678..." TYPE="ext4"

2. 如何找到磁盘的 UUID 和 文件系统类型?

bash 复制代码
sudo blkid

或者针对某个分区:

bash 复制代码
sudo blkid /dev/sdb1

3. 如果磁盘是新的/未格式化的,需要先格式化!

如果你要挂载的磁盘是新磁盘或未格式化的,你需要先:

  1. 确认磁盘没有被使用/挂载
  2. 格式化磁盘(谨慎操作,会清空数据!)

例如,格式化为 ext4:

bash 复制代码
sudo mkfs.ext4 /dev/sdb1

或者格式化为 xfs:

bash 复制代码
sudo mkfs.xfs /dev/sdb1

⚠️ 格式化会清空该分区上所有数据,请确保你选择了正确的设备!


四、✅ 总结:Linux 开机自动挂载磁盘的完整流程

步骤 操作内容
1️⃣ 使用 lsblkfdisk -l 找到你想要挂载的磁盘分区(如 /dev/sdb1
2️⃣ 使用 sudo blkid /dev/sdb1 获取该分区的 UUID文件系统类型(如 ext4)
3️⃣ 创建本地挂载目录,如 sudo mkdir -p /mnt/mydata
4️⃣ 编辑 /etc/fstab 文件,添加一行类似: UUID=xxxxxx /mnt/mydata ext4 defaults 0 2
5️⃣ 测试 fstab 是否正确:sudo mount -a,然后用 df -h 检查
6️⃣ 重启系统,验证是否自动挂载成功
相关推荐
试试勇气3 小时前
Linux学习笔记(八)--环境变量与进程地址空间
linux·笔记·学习
做运维的阿瑞3 小时前
Docker 通信核心:docker.sock 完全指南
运维·docker·容器
紧固视界3 小时前
机械臂装配自动化推动紧固件设计革新
运维·自动化
小猪写代码4 小时前
服务器:常用文件夹介绍
运维·服务器
jiunian_cn4 小时前
【Linux】高级IO
java·linux·服务器
程曦曦4 小时前
宝塔服务器磁盘爆满:占用50G磁盘空间的.forever日志文件处理导致服务崩溃的教训
运维·服务器·vim
☆璇4 小时前
【Linux】网络基础概念
linux·网络
ICT系统集成阿祥4 小时前
服务器厂商领先的品牌名单
运维·服务器
zz-zjx4 小时前
Tomcat核心架构与生产部署指南
java·运维·tomcat