Ubuntu 硬盘分区并挂载

一、什么是挂载

1.挂载的定义

在 Ubuntu(或其他 Linux 系统)中,挂载(Mount) 是将一个存储设备或分区连接到系统的文件系统层次结构中的过程。挂载后,你可以通过某个目录(挂载点)访问该设备上的文件和数据。


2.挂载的作用

Linux 中所有设备(如硬盘、U盘、光盘等)都必须挂载后才能被访问。

  • 逻辑上的统一文件系统

    挂载后的设备成为 Linux 文件系统的一部分,用户可以通过挂载点访问设备上的内容。

  • 操作透明

    挂载的设备就像本地目录,文件操作(如复制、移动、删除)无需关心底层硬件设备。

  • 动态扩展存储

    可以随时将新设备挂载到系统中,扩展存储空间。


3.挂载点

挂载点是一个目录,挂载后该目录会显示设备的内容。常见挂载点:

  • /mnt:临时挂载的设备。
  • /media/username/device_name:自动挂载的设备(如U盘)。
  • /home:用户的主目录。
  • /(根目录):主文件系统挂载点。

4.挂载的过程

挂载通常分为两种:手动挂载自动挂载

  • 手动挂载

你需要指定设备和挂载点进行挂载。常见命令:

复制代码
sudo mount <设备名> <挂载点>

# 示例
# /dev/sdb1:要挂载的设备
# /mnt:挂载点
sudo mount /dev/sdb1 /mnt
  • 自动挂载

某些设备(如 U 盘)插入后,系统会自动挂载到 /media 下。也可以通过配置 /etc/fstab 文件,实现开机自动挂载。

  • 卸载挂载

如果设备不再需要,可以卸载(unmount)。卸载后,设备不再连接到文件系统,数据不会丢失。

复制代码
sudo umount <挂载点或设备名>

# 示例
# /mnt:临时挂载的设备
sudo umount /mnt

# 如果卸载时显示 busy,可以尝试强制卸载
sudo umount -l  <挂载点或设备名>
  • -l(lazy umount):延迟卸载,立即取消挂载点的关联,剩余任务后台完成。

5.查看挂载信息

5.1 使用 lsbik
复制代码
lsblk -f
  • lsblk 是一个列出系统中所有块设备(block devices,如硬盘、分区、光驱等)信息的命令。
  • -f 参数专门显示每个设备的文件系统信息,包括类型、标签、UUID 等。
python 复制代码
# 通过 -o 参数显示指定列,可以比较 lsblk 额外添加 SIZE 列,更方便
lsblk -o NAME,SIZE,FSTYPE,LABEL,UUID,FSAVAIL,FSUSE%,MOUNTPOINT

NAME:设备名称。

  • 表示设备的路径,通常位于 /dev 目录下。
  • sda 是主硬盘设备,sda1 是其第一个分区,sda2 是第二个分区,依次类推。
  • sdanvme0n1:分别表示传统硬盘(SATA)和 NVMe 固态硬盘

FSTYPE:文件系统类型。

  • 表示每个分区的文件系统类型,例如:
    • ext4:Linux 常用文件系统。
    • swap:交换分区,用于虚拟内存。
    • ntfs:Windows 常用文件系统。
    • vfat:兼容性高的 FAT 文件系统。
  • 如果没有文件系统(如原始设备),此列会为空。

LABEL:分区标签。

  • 可由用户为分区命名,方便识别。
  • rootfshome 是自定义标签,常用于挂载点说明。

UUID:分区的唯一标识符(Universally Unique Identifier)。

  • 每个分区都有唯一的 UUID,方便在配置文件(如 /etc/fstab)中引用。
  • UUID 比设备名更稳定,不会因设备插拔顺序变化而改变。

FSAVAIL:可用空间(文件系统级别)。

  • 显示分区中剩余可用的空间。
  • 单位通常为 G(GB)。

FSUSE%:已用空间的百分比。

  • 显示分区的使用率。
  • 40% 表示此分区使用了 40% 的空间。

MOUNTPOINT:挂载点。

  • 表示分区挂载到文件系统中的路径,例如 /(根目录)、/home/mnt/data
  • 如果分区未挂载,此列为空。
5.2 使用 df
python 复制代码
df -h
  • df(disk free)是一个命令,用于查看文件系统的总空间、已用空间、可用空间和挂载点等信息。
  • 默认情况下,输出以字节为单位,但不易阅读。使用 -h 参数,可以以更直观的单位(如 GB、MB)显示。

6.查看磁盘分布

6.1 使用 baobab

安装 Disk Usage Analyzer,该工具会生成磁盘使用情况的可视化图表,方便分析。

python 复制代码
# 安装 baobab
sudo apt-get install baobab
# 启动 baobab
baobab
6.2 使用 fdisk
python 复制代码
sudo fdisk -l

二、 将非空硬盘分区并挂载到 ubuntu

1. 检查当前硬盘和分区状态

使用 lsblkfdisk 检查硬盘的现有分区布局:

python 复制代码
lsblk -o NAME,SIZE,FSTYPE,TYPE,LABEL,UUID,FSAVAIL,FSUSE%,MOUNTPOINT

输出如下,我们发现有一块 477G 的固态硬盘,但是已经分区了,而且只划分了一个区域就占据了所有空间,我们想把这个分区删除然后再创建一个空间为 150G 的分区 nvme0n1p1 ,然后将其挂载到 /home 下。

  • 未分区空间 :显示为 Free Space
  • 已分区区域 :显示为挂载点或者 TYPEpart

2. 重新分区

使用 fdisk 创建新分区:

①使用硬盘管理工具打开 /dev/nvme0n1 硬盘:

②输入 m 获取帮助

③输入 p 查看现有分区。

④输入 n 创建一个新分区。

I.选择主分区或扩展分区类型(通常选择默认)。

II.设置起始和结束位置(例如,分配剩余的空闲空间)。

⑤输入 w 保存更改并退出。

使用 lsblk 命令检查,一个 150G 的新分区已经划分好了。

格式化新分区:

新分区需要格式化为合适的文件系统,例如 ext4:

python 复制代码
sudo mkfs.ext4 /dev/nvme0n1p1
  • mkfs.ext4mkfs 的一个具体实现,专门用于创建 ext4 文件系统。
  • /dev/nvme0n1p1是目标分区(第四个主机硬盘的分区)。
  • 这条命令将 /dev/ nvme0n1p1 分区格式化为 ext4 文件系统,所有数据会被清除。

3. 挂载分区到 /home

临时挂载(测试):

①创建挂载点:

python 复制代码
sudo mkdir -p /mnt/newhome

②挂载新分区:

python 复制代码
sudo mount /dev/nvme0n1p1 /mnt/newhome

③检查是否挂载成功:

python 复制代码
lsblk -o NAME,SIZE,FSTYPE,TYPE,LABEL,UUID,FSAVAIL,FSUSE%,MOUNTPOINT
将新分区挂载到 /home

①复制现有 /home 数据到新分区,耐心等待复制结束:

python 复制代码
sudo rsync -aXS /home/ /mnt/newhome/
  • rsync:同步工具。
  • -a:归档模式,保持文件的权限、时间戳、符号链接等属性。
  • -X :保留扩展属性(例如 setfacl 设置的文件 ACL 权限)。
  • -S:处理稀疏文件(节省磁盘空间)。
  • /home/ :源目录,表示 /home 目录的内容(注意 / 表示只复制内容,不包括目录本身)。
  • /mnt/newhome/:目标目录,表示数据会被复制到这个目录中。

②验证数据是否已完整复制:

复制代码
diff -r /home/ /mnt/newhome/
  • -r:递归比较目录内所有文件和子目录。
  • /home//mnt/newhome/:源目录和目标目录
  • 如果两个目录一致,没有任何输出。

③将当前的 /home 目录重命名为 /home.bak

复制代码
sudo mv /home /home.bak
  • 暂时备份 /home 目录,为挂载新分区到 /home 做准备。
  • 重命名后,系统不再直接使用旧的 /home,可以安全测试新挂载点。

④创建新的 /home 挂载点:

复制代码
sudo mkdir /home

⑤挂载新分区到 /home

python 复制代码
sudo mount /dev/nvme0n1p1 /home

⑥修改 /etc/fstab 以永久挂载 : 编辑 /etc/fstab 文件,添加以下内容,保存并退出。

python 复制代码
/dev/nvme0n1p1 /home ext4 defaults 0 2

⑦测试挂载:

python 复制代码
sudo mount -a
  • -a :自动挂载 /etc/fstab 文件中配置的所有文件系统。

4. 验证挂载

确保分区正确挂载到 /home,并且所有用户数据正常:

python 复制代码
lsblk -o NAME,SIZE,FSTYPE,TYPE,LABEL,UUID,FSAVAIL,FSUSE%,MOUNTPOINT
python 复制代码
df -h /home

确认数据迁移无误后,可以删除旧的 /home.bak 备份

python 复制代码
sudo rm -rf /home.bak

参考

Ubuntu新硬盘分区并挂载

Linux命令-自动挂载文件/etc/fstab功能详解[转]

linux下使用fdisk进行磁盘分区详解

相关推荐
子琦啊19 分钟前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
AOwhisky1 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
小龙在慢慢变强..2 小时前
目录结构(FHS 标准)
linux·运维·服务器
2035去旅行2 小时前
嵌入式开发,如何选择C标准库
linux·arm开发
刘延林.2 小时前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
星恒讯工业路由器2 小时前
星恒讯工业生产自动化解决方案
运维·物联网·自动化·智能路由器·信息与通信
a8a3022 小时前
Laravel9.x新特性全解析
运维·spring boot·nginx
beyond阿亮2 小时前
IEC104 Client Simulator - IEC104 主站/客户端模拟器 仿真器免费使用教程
运维·服务器·网络
Agent产品评测局3 小时前
生产排期与MES/ERP系统打通,实操方法详解:2026企业级智能体与超自动化集成实战指南
运维·人工智能·ai·chatgpt·自动化