linux 挂载硬盘(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

在 Linux 系统中,"挂载硬盘" 是一个基础但至关重要的操作。无论是为系统扩容、备份数据,还是管理外部存储设备,理解如何正确挂载硬盘都能显著提升工作效率。对于编程初学者和中级开发者而言,掌握这一技能不仅能解决实际问题,还能深化对 Linux 文件系统的理解。本文将通过循序渐进的讲解、实际案例和形象比喻,帮助读者轻松掌握 Linux 硬盘挂载的核心知识。


什么是硬盘挂载?

硬盘挂载(Mounting a Disk)可以理解为将物理硬盘或逻辑分区与操作系统文件系统“连接”的过程。这类似于将一个抽屉(硬盘)插入到房间(系统)的某个指定位置(挂载点),使得抽屉内的物品(数据)能够被系统访问和管理。

在 Linux 中,所有硬件设备和文件系统都以文件形式呈现。硬盘挂载的本质是将硬盘的文件系统(如 ext4、NTFS 等)加载到系统目录树中的某个路径(挂载点),从而实现数据的读写操作。


Linux 硬盘挂载的必备知识

1. 硬盘识别与分区表

在挂载硬盘前,需先通过命令行工具识别系统中的硬盘设备。常用命令包括:

  • lsblk:列出所有块设备(硬盘、分区等)及其挂载状态。
  • fdisk -l:显示详细硬盘分区表信息,包括设备名称(如 /dev/sdb)、分区类型(如 /dev/sdb1)和容量。

示例输出:

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 931.5G  0 disk 
├─sda1        8:1    0   512M  0 part /boot/efi
└─sda2        8:2    0 931G   0 part /
sdb           8:16   0  298G   0 disk 

在此示例中,/dev/sdb 是未挂载的 298GB 硬盘。

2. 文件系统类型

硬盘分区需格式化为特定文件系统才能被挂载。常见的 Linux 文件系统包括:
| 文件系统类型 | 适用场景 | 特点 | |--------------|---------------------------|--------------------------------| | ext4 | 主系统分区、数据存储 | 稳定、支持大容量、广泛兼容 | | NTFS | 与 Windows 互操作 | 支持文件权限和大文件 | | FAT32 | USB 设备、跨平台共享 | 兼容性强,但单文件最大 4GB | | XFS | 高性能数据库、日志存储 | 高写入速度,适合大文件系统 |

3. 挂载点(Mount Point)

挂载点是系统中已存在的目录路径(如 /mnt/data),用于指向硬盘的访问入口。挂载后,该目录下的文件即为硬盘中的数据。


硬盘挂载的步骤详解

以下是挂载硬盘的完整流程,结合代码示例逐步说明:

1. 查看磁盘信息

使用 lsblkfdisk 命令确认硬盘设备名称。例如:

$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 298 GiB, 320072933376 bytes, 625133568 sectors
Disk model: USB Flash Drive    
Disk identifier: 0x00000000

2. 分区(可选)

若硬盘未分区,需使用 fdiskparted 工具创建分区。以 fdisk 为例:

$ sudo fdisk /dev/sdb  

3. 格式化分区

使用 mkfs 命令为分区指定文件系统。例如,格式化为 ext4:

$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.46.2 (28-Feb-2021)
Creating filesystem with 78140800 4k blocks and 19535360 inodes...

4. 创建挂载点目录

$ sudo mkdir /mnt/mydisk

5. 临时挂载硬盘

使用 mount 命令将硬盘挂载到指定路径:

$ sudo mount /dev/sdb1 /mnt/mydisk

6. 永久挂载(通过 /etc/fstab

若需开机自动挂载,需编辑 /etc/fstab 文件,添加如下行:

UUID=your-disk-uuid /mnt/mydisk ext4 defaults 0 2

其中 UUID 可通过 blkid 命令获取:

$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="your-disk-uuid" TYPE="ext4"

实际案例:挂载新硬盘作为媒体库

场景:将一块未分区的 2TB 硬盘挂载为家庭媒体库,路径为 /media/tv_shows

步骤

  1. 识别硬盘

    $ sudo lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sdc           8:32   0   2TB  0 disk 
    

    确认目标设备为 /dev/sdc

  2. 分区与格式化

    $ sudo fdisk /dev/sdc  # 创建一个主分区并保存
    $ sudo mkfs.ext4 /dev/sdc1
    
  3. 创建挂载点并挂载

    $ sudo mkdir -p /media/tv_shows
    $ sudo mount /dev/sdc1 /media/tv_shows
    
  4. 验证挂载

    $ df -h | grep sdc1
    /dev/sdc1       2.0T   32G  1.9T   2% /media/tv_shows
    

高级技巧与注意事项

1. 只读挂载

若需保护数据,可挂载为只读模式:

$ sudo mount -o ro /dev/sdb1 /mnt/readonly

2. 绑定挂载(Bind Mount)

将现有目录内容“复制”到另一路径,且不影响原目录:

$ sudo mount --bind /var/log /mnt/log_backup

3. 自动卸载与强制卸载

  • 安全卸载
    $ sudo umount /mnt/mydisk
    
  • 强制卸载(谨慎使用):
    $ sudo umount -lf /mnt/mydisk  # 解除挂载但保留缓存
    

4. 常见问题解决

  • 权限问题:通过 chmodchown 调整目录权限。
  • 重复挂载:使用 mount | grep sdb 检查已挂载路径。
  • 设备冲突:确保 /etc/fstab 中 UUID 或设备名无误。

结论

掌握 Linux 硬盘挂载技术,不仅能提升系统管理效率,还能为开发、测试和运维场景提供灵活的数据管理方案。通过本文的步骤解析、案例演示和技巧分享,读者应能轻松应对从基础挂载到高级配置的各类需求。建议读者在虚拟机或测试环境中实践操作,逐步加深理解。记住,硬盘挂载如同搭建数据的桥梁——正确配置后,数据流动将变得高效而可靠。

(全文约 1800 字)

最新发布