以下步骤以挂载一个新的硬盘分区(例如 /dev/sdb1)到 /data 目录为例,并实现开机自动挂载。请根据实际情况调整设备名称和挂载点。

博主博客

1. 查看未挂载的硬盘

使用以下命令之一查看系统中的所有磁盘及分区信息,确认新硬盘的设备名称(如 /dev/sdb/dev/sdb1)。

sudo fdisk -l

作用:列出所有磁盘的分区表信息,包括设备名称、大小、文件系统类型等。新硬盘如果没有分区,会显示为一个未分区的磁盘。

示例输出(部分内容):

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048   1126399   1124352   549M  7 HPFS/NTFS/exFAT
/dev/sda2         1126400 500117503 498991104 237.9G  7 HPFS/NTFS/exFAT

Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Device     Boot Start       End   Sectors Size Id Type
/dev/sdb1        2048 209715199 209713152 100G 83 Linux

从输出中可以看到新硬盘 /dev/sdb 及其分区 /dev/sdb1

sudo lsblk -f

作用:以树状形式显示所有块设备(硬盘、分区等),并显示文件系统类型、UUID 和挂载点。未挂载的分区没有挂载点。

示例输出

NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                           
├─sda1 ntfs         A1B2C3D4E5F6G7H8                     
├─sda2 ntfs         I1J2K3L4M5N6O7P8                     
sdb                                                           
└─sdb1 ext4         a1b2c3d4-...                         

这里 /dev/sdb1 显示文件系统为 ext4(如果已格式化)或为空(如果未格式化),且 MOUNTPOINT 列为空,表示未挂载。

注意:如果新硬盘是整块未分区的磁盘,需要先进行分区(例如使用 fdiskparted)。分区后才能格式化并挂载。本指南假设已经有一个准备好的分区(如 /dev/sdb1)。


2. 格式化分区

将分区格式化为需要的文件系统(本例使用 ext4)。

sudo mkfs.ext4 /dev/sdb1

作用:在 /dev/sdb1 分区上创建 ext4 文件系统。这会清除分区上的所有数据,请确保分区无误且数据已备份。

示例输出

mke2fs 1.46.5 (30-Dec-2021)
/dev/sdb1 contains a ext4 file system
Proceed anyway? (y,N) y
Creating filesystem with 26214400 4k blocks and 6553600 inodes
Filesystem UUID: a1b2c3d4-...
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done

系统会提示是否继续,输入 y 确认。

⚠️ 注意:请仔细核对设备名,避免误格式化系统盘。例如,不要将 /dev/sda1 误认为新硬盘。


3. 创建挂载点

挂载点是一个目录,用于访问硬盘中的数据。例如创建 /data 目录:

sudo mkdir /data

作用:在根目录下创建名为 data 的文件夹,作为挂载点。

示例输出:通常无输出,目录创建成功。可通过 ls -ld /data 查看。


4. 获取分区的 UUID

使用 blkid 命令查看分区的 UUID(通用唯一标识符)。UUID 是分区的唯一标识,在 /etc/fstab 中使用比设备名(如 /dev/sdb1)更可靠,因为设备名可能随硬件顺序变化。

sudo blkid /dev/sdb1

作用:显示指定分区的属性,包括 UUID、文件系统类型等。

示例输出

/dev/sdb1: UUID="a1b2c3d4-5678-90ab-cdef-123456789abc" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="12345678-01"

复制 UUID 的值(去掉引号),例如 a1b2c3d4-5678-90ab-cdef-123456789abc


5. 配置开机自动挂载(修改 /etc/fstab

编辑 /etc/fstab 文件,添加一行以实现永久挂载。

sudo nano /etc/fstab

作用:使用文本编辑器(如 nanovim)打开系统文件系统表配置文件。

在文件末尾添加以下内容(将 你的UUID 替换为实际值):

UUID=a1b2c3d4-5678-90ab-cdef-123456789abc  /data  ext4  defaults  0  0

字段说明

  • UUID=你的UUID:分区的 UUID。
  • /data:挂载点目录。
  • ext4:文件系统类型,应与格式化时一致。
  • defaults:挂载选项,使用默认值(包括读写、允许执行等)。
  • 0:是否使用 dump 备份,0 表示不备份。
  • 0:是否使用 fsck 检查文件系统,0 表示不检查(根分区应为 1,其他分区通常为 2 或不检查 0)。

作用:系统启动时会根据 /etc/fstab 自动挂载所有定义的分区。

保存文件并退出(在 nano 中按 Ctrl+O 保存,Ctrl+X 退出)。


6. 挂载并验证

执行以下命令重新加载 /etc/fstab 配置,挂载所有条目:

sudo mount -a

作用:读取 /etc/fstab 并挂载其中所有未挂载的设备。如果没有错误提示,说明配置正确。

示例输出:通常无输出,表示成功。如果有错误,会显示错误信息。

检查挂载是否成功:

df -h

作用:显示已挂载分区的磁盘使用情况。

示例输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       234G  120G  114G  52% /
/dev/sda1       549M  200M  349M  37% /boot/efi
/dev/sdb1        98G   61M   93G   1% /data

在输出中应能看到 /dev/sdb1 挂载到 /data,并显示容量和使用率。

也可以使用 lsblk -f 再次检查:

lsblk -f

示例输出

NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                           
├─sda1 ntfs         A1B2C3D4E5F6G7H8                     
├─sda2 ext4         xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /
sdb                                                           
└─sdb1 ext4         a1b2c3d4-5678-90ab-cdef-123456789abc /data

可以看到 /dev/sdb1 的 MOUNTPOINT 已显示为 /data


常见问题与注意事项

  • 确保分区已格式化:新硬盘必须格式化后才能挂载,否则会报错。
  • 设备名可能变化:使用 UUID 替代设备名可避免因设备顺序改变导致的挂载失败。
  • 修改 /etc/fstab 前备份:若配置错误可能导致系统无法启动。可以事先备份:sudo cp /etc/fstab /etc/fstab.bak
  • 如果 mount -a 报错:仔细检查 /etc/fstab 中的 UUID 和挂载点是否正确,分区是否存在。
  • 权限问题:默认挂载后,普通用户可能无法写入,可调整挂载选项(如 defaults,uid=1000,gid=1000)或修改目录权限。