CentOS磁盘挂载与分区(磁盘、分区、文件系统、物理卷、卷组、逻辑卷)

前言

基本概念

磁盘、分区、文件系统、物理卷、卷组、逻辑卷关系:

  • 磁盘 → 分区 → 文件系统:磁盘被划分为分区,分区上建立文件系统以管理文件。
  • 磁盘/分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统:使用LVM时,磁盘或分区转换为物理卷,加入卷组,从中创建逻辑卷,最后在逻辑卷上建立文件系统。

物理卷(PV)、卷组(VG)、逻辑卷(LV)的关系:

  • 物理卷 → 卷组:多个物理卷可以组合成一个卷组,形成一个统一的存储池。
  • 卷组 → 逻辑卷:卷组中的存储资源被划分为逻辑扩展,供逻辑卷使用,逻辑卷可以动态管理这些资源。

扩容

磁盘 → 分区 → 文件系统

磁盘扩容 => 分区扩容 => 文件系统扩容

磁盘/分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统

磁盘扩容 => 分区扩容 => 物理卷扩容 => 逻辑卷扩容 => 文件系统扩容

卷组在物理卷扩容后容量是自动变化的。

硬盘与分区查看

查看硬盘和分区

parted

功能parted 是一个功能强大的磁盘分区管理工具,主要查看磁盘信息,-l 选项用于列出所有磁盘的分区信息。

用法示例

1
sudo parted -l

主要信息

image-20250304160925356

可以结合下面的命令进行分区处理

1
cfdisk /dev/vdb

lsblk

lsblk 命令以树形结构列出所有可用块设备的信息,包括磁盘、分区、挂载点等,输出信息更加简洁直观。

查看所有的磁盘和分区以及是否挂载

1
lsblk

image-20200805130602702

其中

  • rom:只读存储设备,如 CD-ROM。
  • disk:完整的磁盘设备,如 HDD 或 SSD。
  • part:磁盘上的分区,独立的存储单元。
  • lvm:通过逻辑卷管理的存储空间,提供灵活的动态管理。

图形化查看操作分区

这个可以方便的查看指定磁盘下的分区,以及分区扩容删除等操作。

1
2
cfdisk /dev/vda
cfdisk /dev/vdb

结果

挂载点空间占用

查看挂载点空间占用

1
df -Th

image-20200805130656254

其中

  • -T:显示文件系统类型。
  • -h:更友好显示空间大小。

分区工具查看分区信息

1
fdisk -l

查看硬盘label(别名)

1
blkid

结果

/dev/sda1: UUID=”402367d8-2b76-4080-ba33-a6f3ac1f612a” TYPE=”xfs”
/dev/sda2: UUID=”ffawvU-whvv-lrfg-Qe6R-lsCM-JVtQ-4ThqKB” TYPE=”LVM2_member”
/dev/sda3: UUID=”NiKQ5r-oXD1-eyLM-qcZp-LBQ2-bs9U-3HdmAs” TYPE=”LVM2_member”
/dev/mapper/hnjyt-root: UUID=”b9093cd3-f68b-42d5-8bcc-949f5a728f68” TYPE=”xfs”
/dev/mapper/hnjyt-swap: UUID=”d0162e04-041f-48aa-8a1e-a4ff9792e6e4” TYPE=”swap”

文件夹大小

1
du -sh ./*

硬盘分区

图形化操作

查看分区信息及是否挂载

1
lsblk

分区操作

1
cfdisk /dev/vdb

创建分区/更改尺寸后需要写入才会生效。

查看硬盘和分区

1
lsblk

运行以下命令,为/dev/vdb1分区创建一个文件系统。

创建xfs文件系统:

1
mkfs -t xfs /dev/vdb1

创建ext4文件系统:

1
mkfs -t ext4 /dev/vdb1

查看所有的文件系统

1
blkid

命令行操作

大于2T

全盘分1个区

(分区格式化大于2 TiB数据盘 - 云服务器 ECS - 阿里云 (aliyun.com))

查看数据盘

1
fdisk -l

用parted命令

按百分比分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
parted /dev/vdb

# 用gpt格式
mklabel gpt

# 设置为一个主分区,大小为整个磁盘
# 注意输入的大小不能超过硬盘的大小
mkpart primary 1 100%

# 运行以下命令,检查分区是否对齐
align-check optimal 1

# 显示设置的分区大小
print

# 退出parted程序
quit

如图

parted分区

重新读取分区表

1
partprobe

查看硬盘和分区

1
lsblk

运行以下命令,为/dev/vdb1分区创建一个文件系统。

创建一个ext4文件系统。

1
mkfs -t ext4 /dev/vdb1

查看新分区信息

1
fdisk -lu /dev/vdb

按指定大小分多个区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
parted /dev/vdb

# 用gpt格式
mklabel gpt

# 设置单位为GB
unit GB

# 设置为一个主分区,大小为537GB,开始是0,结束是537
# 注意输入的大小不能超过硬盘的大小
mkpart primary 0 537

# 运行以下命令,检查分区是否对齐
align-check optimal 1

# 显示设置的分区大小
print

# 退出parted程序
quit

假如要分两个盘

1
2
mkpart primary 0 500
mkpart primary 500 537

小于2T

查看数据盘信息

1
fdisk -l

创建分区

1
fdisk -u /dev/vdb

步骤

  1. 输入p查看数据盘的分区情况。

    本示例中,数据盘没有分区。

  2. 输入n创建一个新分区。

  3. 输入p选择分区类型为主分区

  4. 输入分区编号,按回车键。

    本示例中,仅创建一个分区,直接按回车键,采用默认值1。

  5. 输入第一个可用的扇区编号,按回车键。

    本示例中,直接按回车键,采用默认值2048。

  6. 输入最后一个扇区编号,按回车键。

    本示例中,仅创建一个分区,直接按回车键,采用默认值。

  7. 输入p查看该数据盘的规划分区情况。

  8. 输入w开始分区,并在完成分区后退出。

查看新分区信息

1
fdisk -lu /dev/vdb

新分区创建文件系统

1
mkfs -t ext4 /dev/vdb1

分区挂载

挂载的分区必须有文件系统

创建文件夹

1
mkdir /data

挂载

1
mount /dev/vdb1 /data

查看硬盘的剩余空间

1
df -hl

取消挂载

1
umount /data

配置/etc/fstab文件

备份etc/fstab文件:

1
cp /etc/fstab /etc/fstab.bak

ROOT用户

root用户可以运行以下命令直接修改/etc/fstab文件。

1
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /data ext4 defaults 0 0 >> /etc/fstab

普通用户

普通用户可以手动修改/etc/fstab文件。

运行以下命令查看新分区的UUID。

1
sudo blkid /dev/vdb1

运行结果如下所示。

/dev/vdb1: UUID=”ca540a2c-b05e-4d8d-9a2a-e0dff3654823” TYPE=”ext4”

运行以下命令编辑/etc/fstab文件。

1
sudo vi /etc/fstab

输入i进入编辑模式。

/etc/fstab文件中写入新分区信息,UUID值请修改为前面步骤中的查询结果。

1
UUID=ca540a2c-b05e-4d8d-9a2a-e0dff3654823 /data ext4 defaults 0 0

按Esc键,输入:wq,按回车键保存并退出。

查看新分区信息

运行以下命令:

1
cat /etc/fstab

转换分区格式

使用免交互加上 -s

1
2
3
4
5
# 转换成mbr格式
parted /dev/vdb mklabel msdos -s

# 转化成gpt格式
parted /dev/vdb mklabel gpt -s

硬盘扩容

物理磁盘的容量是固定的,无法通过任何软件手段直接增加其存储容量。如果需要更大的存储空间,通常需要更换为容量更大的物理磁盘。

逻辑磁盘是通过存储虚拟化技术,如 RAID(磁盘冗余阵列)、逻辑卷管理(LVM)等,可以将多个物理磁盘组合成一个逻辑磁盘。这种是可以扩容的。

磁盘扩容 => 分区扩容 => 文件系统扩容 经过这三个步骤才算扩容成功。

大多数现代文件系统,如 ext4、XFS、Btrfs 等,都支持在线扩容。这意味着可以在不卸载文件系统的情况下,增加其容量。

例如,使用 resize2fs 工具可以扩展 ext4 文件系统的大小,而 xfs_growfs 则用于扩展 XFS 文件系统。

阿里云官方文档:在线扩容云盘(Linux系统) - 云服务器 ECS - 阿里云 (aliyun.com)

注意

购买磁盘扩容后,要通过阿里ECS实例列表中重启才能生效。

查看分区信息

运行以下命令查看实例的云盘情况。

1
fdisk -lu

示例以系统盘(/dev/vda1)和数据盘(/dev/vdb1、/dev/vdc1)的三个分区为例,执行结果如下所示。查看云盘分区情况

序号 分区 说明
1 /dev/vda1 系统盘,System取值Linux表示为MBR分区。
2 /dev/vdb1 数据盘,System取值Linux表示为MBR分区。
3 /dev/vdc1 数据盘,System取值GPT表示为GPT分区。

说明 如果您的查询结果中云盘容量还是40 GiB(Disk /dev/vda: 42.9 GB),表示扩容不成功,建议您在控制台重启下本实例。

image-20220108085717759

上图没有System也是GPT分区

扩容分区

通过查看云盘分区情况,在ECS实例内分区和文件系统并未扩容。此步骤介绍如何在ECS实例内部扩容云盘分区。

在ECS实例内部,安装gdisk工具。

如果您的分区为GPT格式,必须执行此步骤;如果您的分区为MBR格式,请跳过此步骤。

1
yum install gdisk -y

安装growpart工具。

  • CentOS 7及以上版本运行以下命令。

    1
    yum install -y cloud-utils-growpart
  • Debian 9及以上版本、Ubuntu14及以上版本运行以下命令。

    更新软件源。

    1
    apt-get update

    安装cloud-guest-utils。

    1
    apt-get install -y cloud-guest-utils

运行以下命令扩容分区。

1
growpart /dev/vdb 1

此示例以扩容系统盘为例,/dev/vda1之间需要空格分隔。如果需要扩容其他分区,请根据实际情况修改命令。

成功会显示新旧size,如下:

image-20210603190647466

扩容文件系统

此步骤介绍如何ECS实例内部扩容分区的文件系统。

在ECS实例内部,根据查询的文件系统类型,扩容文件系统。

运行以下命令确认已有分区的文件系统类型。

1
df -Th

执行结果如下所示。

扩容ext*(例如ext4)文件系统:

运行以下命令扩容文件系统。

扩容数据盘/dev/vdb1的文件系统

1
resize2fs /dev/vdb1

说明/dev/vdb1都是分区名称,您需要根据实际情况修改。

扩容xfs文件系统:

运行以下命令扩容文件系统。

1
xfs_growfs /media/vdc

说明 /media/vdc/dev/vdc1的挂载点,您需要根据实际情况修改。

运行以下命令检查扩容后结果。

1
df -Th

Tips

MBR和GPT

MBR,主引导记录(Master Boot Record) ,也就是现有的硬盘分区模式。 MBR分区的标准决定了MBR只支持在2TB以下的硬盘,超过2TB的硬盘只能管理2TB ! 为解决这个大问题,微软和英特尔在EFI方案中开发了GPT分区模式。

GPT,全局唯一标识分区表(GUID Partition Table) , GUID,全局唯一标识符 (Globally Unique Identifier) 。 GPT是EFI方案的一部分,但并不依赖于EFI主板,在BIOS主板的PC中也可使用GPT分区。与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB 。

注意

MBR 分区模式最大只能支持 2TB 硬盘, 超过2T的硬盘必须使用 GPT 分区模式!

xfs和ext4

xfs文件系统

  • 优点:高性能,处理大文件和目录表现佳;扩展性强,支持超大文件系统和文件;日志强大,快速恢复一致性;元数据管理高效。
  • 缺点:损坏后修复难度大;空间分配保守,小文件场景磁盘利用率低;旧内核兼容性欠佳。

ext4 文件系统

  • 优点:广泛支持,主流 Linux 发行版都适配;稳定性高;具备多种实用特性;小文件场景磁盘空间利用率高。
  • 缺点:大文件及高并发场景性能不如 XFS;文件系统和文件大小理论上限相对小;元数据更新速度较慢。