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进行磁盘分区详解

相关推荐
legend_jz1 分钟前
【linux】手搓线程池
linux·运维·服务器·c++·笔记·学习·学习方法
Axelioc14 分钟前
conda、pip同时安装包引起混乱问题剖析
linux·python
dntktop1 小时前
拥抱自由,Floorp浏览器让你的网络生活更纯净
运维
petaexpress1 小时前
公网弹性绑定负载均衡收费吗?
运维·网络·负载均衡·公网弹性
妙哉7361 小时前
零基础学安全--shell(8)脚本相互利用
linux·运维·服务器
Curtis09801 小时前
RHCE——SELinux
linux·运维·服务器
csdn_金手指1 小时前
docker-compose文件的简介及使用
运维·docker·容器
团子tuan1 小时前
Ubuntu20.04下安装Matlab2018
linux·matlab
还有醒着的咩2 小时前
SElinux和防火墙
运维·服务器·网络
daizikui2 小时前
内网穿透产品 frp ngrok FastTunnel
linux·运维·网络·nginx