挂载新硬盘到 Linux 系统
以下步骤以挂载一个新的硬盘分区(例如
/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 列为空,表示未挂载。
注意:如果新硬盘是整块未分区的磁盘,需要先进行分区(例如使用 fdisk 或 parted)。分区后才能格式化并挂载。本指南假设已经有一个准备好的分区(如 /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
作用:使用文本编辑器(如 nano、vim)打开系统文件系统表配置文件。
在文件末尾添加以下内容(将 你的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)或修改目录权限。
评论