代码改变世界

[Linux]磁盘未分配空间挂载新分区 - 教程

2025-10-03 21:33  tlnshuju  阅读(25)  评论(0)    收藏  举报

在 Linux 服务器使用过程中,我们常会遇到这样的情况:初始分配的根分区空间有限,而磁盘实际总容量远大于已使用空间。此时,充分利用磁盘的未分配空间扩展存储就成了常见需求。直接扩展根分区存在一定风险(需调整正在使用的分区),更安全的方案是在未分配空间上创建新分区,挂载到指定目录(如/app),既不影响现有系统,又能灵活扩展存储。本文将详细介绍这一过程的完整步骤及原理。

操作前的准备:了解磁盘现状

在开始操作前,我们需要先确认磁盘的分区情况和未分配空间大小,确保有可用空间可供分配。

步骤 1:查看磁盘及分区现状

执行以下命令查看系统中的磁盘和分区信息:

lsblk

输出示例

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0  300G  0 disk
└─vda1 253:1    0   20G  0 part /

关键信息解读

  • vda 是我们要操作的磁盘,总容量为 300G;

  • vda1 是已有的分区(通常是根分区),容量 20G,挂载在/

  • 磁盘剩余未分配空间为 300G - 20G = 280G(即vda下未显示其他分区的部分)。

第一步:在未分配空间上创建新分区

磁盘的未分配空间无法直接使用,需先创建一个新分区(如vda2),我们使用parted工具完成这一操作(支持在线操作,不影响现有分区)。

步骤 1:进入 parted 工具

parted /dev/vda

说明parted是 Linux 下功能强大的分区工具,支持各种磁盘类型,这里指定操作/dev/vda磁盘。

步骤 2:确认未分配空间位置

parted交互模式中,执行以下命令查看磁盘的详细分区和未分配空间:

(parted) print free

输出示例

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 300GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
       Start   End     Size    Type     File system  Flags
       32.3kB  1049kB  1016kB           Free Space
1      1049kB  21.5GB  21.5GB  primary  ext4         boot
       21.5GB  300GB   278.5GB          Free Space  # 未分配空间

关键信息:记录未分配空间的起始位置(如示例中的21.5GB),这是新分区的开始位置,需避开已有的vda1分区。

步骤 3:创建新分区

parted交互模式中执行以下命令:

(parted) mkpart primary 21.5GB 100%

参数解释

  • mkpart:创建新分区的命令;

  • primary:指定分区类型为主分区(可直接格式化使用,适合独立存储需求);

  • 21.5GB:新分区的起始位置(即未分配空间的开始位置,需与上一步记录的值一致);

  • 100%:新分区的结束位置(表示占用从起始位置到磁盘末尾的所有空间)。

交互提示处理

  • 若提示 “Partition type? primary/extended?”,输入primary

  • 若提示 “File system type?”,直接按回车(暂不指定,后续手动格式化);

  • 若提示 “warning: The resulting partition is not properly aligned for best performance”,输入Ignore(不影响功能,仅可能略影响性能)。

步骤 4:确认新分区创建成功

(parted) print

输出示例

Number  Start   End     Size    Type     File system  Flags
1      1049kB  21.5GB  21.5GB  primary  ext4         boot
2      21.5GB  300GB   278.5GB  primary               # 新创建的vda2

确认新分区(通常为vda2)已出现,且大小为预期的未分配空间。

步骤 5:退出 parted 工具

(parted) quit

步骤 6:刷新分区表(让系统识别新分区)

partprobe /dev/vda

说明:新分区创建后,内核可能不会立即识别,partprobe命令用于通知内核重新读取分区表,避免重启系统。

第二步:格式化新分区(创建文件系统)

分区创建后需格式化(创建文件系统)才能存储文件,我们选择 Linux 常用的ext4文件系统(兼容性好、稳定性高)。

步骤 1:格式化 vda2 为 ext4 文件系统

mkfs.ext4 /dev/vda2

说明mkfs.ext4命令会在/dev/vda2分区上创建 ext4 文件系统,过程中会初始化索引节点、数据块等关键结构。

交互提示处理

  • 若提示 “Proceed anyway? (y,N)”,输入y确认格式化(仅针对新分区,无数据风险)。

步骤 2:记录分区 UUID(用于后续挂载)

格式化完成后,执行以下命令获取新分区的 UUID:

blkid /dev/vda2

输出示例

/dev/vda2: UUID="a1b2c3d4-e5f6-7890-abcd-1234567890ab" BLOCK\_SIZE="4096" TYPE="ext4" PARTUUID="e4f5g6h7-02"

说明:UUID 是分区的唯一标识,相比设备名(如/dev/vda2)更可靠,避免因磁盘顺序变动导致挂载失败,需记录此 UUID(如示例中的a1b2c3d4-e5f6-7890-abcd-1234567890ab)。

第三步:挂载新分区到指定目录

新分区需挂载到一个目录才能被系统访问,我们选择/app作为挂载点(可根据实际需求修改)。

步骤 1:创建挂载点目录

mkdir -p /app

说明

  • mkdir -p确保目录创建成功,即使/app已存在也不会报错;

  • 挂载点目录为空目录(若有文件,挂载后会被隐藏,建议先备份目录内文件)。

步骤 2:临时挂载新分区

mount /dev/vda2 /app

说明:此命令将/dev/vda2临时挂载到/app,当前会话中可直接使用,但重启后会失效,需进一步配置开机自动挂载。

步骤 3:验证临时挂载成功

df -h /app

输出示例

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2       276G   61M  261G   1% /app

确认/dev/vda2已挂载到/app,且容量符合预期。

第四步:配置开机自动挂载(永久生效)

为避免重启后挂载失效,需将挂载信息写入/etc/fstab文件(系统启动时自动读取的挂载配置)。

步骤 1:编辑 /etc/fstab 文件

vi /etc/fstab

说明/etc/fstab是系统挂载配置文件,每行记录一个分区的挂载信息,格式为固定的 6 个字段。

步骤 2:添加挂载配置

在文件末尾添加以下内容(使用上一步记录的 UUID):

UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ab /app ext4 defaults 0 2

字段解释(按顺序)

  1. UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ab:分区的唯一标识(从blkid输出获取,实际操作需替换为自己分区的真实 UUID);

  2. /app:挂载点目录;

  3. ext4:文件系统类型(与格式化时一致);

  4. defaults:挂载参数(包含读写权限、自动挂载等默认设置);

  5. 0:是否使用dump工具备份(0 表示不备份);

  6. 2:开机时fsck检查顺序(0 表示不检查,1 为根分区专用,其他分区用 2)。

步骤 3:保存并退出编辑

  • vi编辑器:按Esc后输入:wq回车(保存并退出)。

步骤 4:验证 fstab 配置(关键!)

mount -a

说明mount -a命令会加载/etc/fstab中所有未挂载的分区,若执行后无任何输出,说明配置正确;若提示错误,需检查 UUID、目录路径或格式是否正确(错误配置可能导致系统无法启动)。

最终验证:确认所有配置生效

执行以下命令确认新分区已正确挂载且开机自动挂载配置有效:

\# 查看当前挂载状态
df -h /app
\# 查看fstab配置
cat /etc/fstab | grep /app

输出示例(fstab 查看)

UUID=a1b2c3d4-e5f6-7890-abcd-1234567890ab /app ext4 defaults 0 2

若输出正常,说明操作完成。后续/app目录下的文件会直接存储在vda2分区,不占用根分区空间。

方案优势与注意事项

优势

  1. 安全性高:无需修改正在使用的根分区,避免操作失误导致系统崩溃;

  2. 在线操作:全程无需重启系统(除验证自动挂载外),适合生产环境;

  3. 灵活性强:新分区独立于根分区,后续可单独扩展或调整。

注意事项

  1. 分区起始位置:创建新分区时,起始位置必须避开已有分区,否则会覆盖数据;

  2. UUID 准确性/etc/fstab中 UUID 需与blkid输出完全一致(实际操作时需复制真实 UUID,避免手动输入错误);

  3. fstab 验证mount -a命令必须执行,否则无法发现配置错误,可能导致系统启动失败;

  4. 数据备份:若/app目录原有文件,需先备份再挂载(挂载后原文件会被隐藏)。

通过以上步骤,我们成功将磁盘的未分配空间转化为可用存储,并通过/app目录方便地使用,既扩展了系统存储,又保障了原有系统的稳定性。