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

前言

基本概念

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

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

注意

这两种体系可以共存,但是建议只使用其中的一种。

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

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

扩容

磁盘 → 分区 → 文件系统

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

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

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

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

硬盘与分区查看

分区类型和挂载点

lsblk

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

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

1
lsblk

image-20250306125114673

其中

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

fdisk

分区工具查看分区信息

1
fdisk -l

挂载点空间占用

查看挂载点空间占用

1
df -Th

image-20200805130656254

其中

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

查看卷信息

查看所有卷组的物理卷数量

1
sudo vgs

查看所有物理卷及其所属的卷组

1
sudo pvs

查看所有逻辑卷及其所属的卷组

1
sudo lvs

查看文件系统

blkid

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
df -Th

文件夹大小

1
du -sh ./*

LVM创建

这里从磁盘分区到创建lvm整个过程

分区

查看分区信息及是否挂载

1
lsblk

分区操作

1
cfdisk /dev/vdb

标签选择gpt

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

创建分区后新分区的路径为/dev/vdb1

查看

1
lsblk

分卷

初始化为物理卷

初始化的物理卷不能有文件系统,如果有的化会提示擦除。

1
pvcreate /dev/vdb1

查看物理卷

1
pvs

创建卷组并添加物理卷

1
vgcreate datavg /dev/vdb1

查看

1
2
pvs
vgs

创建逻辑卷

1
2
3
4
5
# 按剩余空间比例创建
lvcreate -l +100%free -n data01 datavg

# 按指定大小创建
lvcreate -L 100G -n data01 datavg

查看

1
2
lvs
lsblk

文件系统

若要格式化为 xfs 文件系统,则执行:

1
mkfs.xfs /dev/datavg/data01

若要格式化为 ext4 文件系统,执行:

1
mkfs.ext4 /dev/datavg/data01

查看文件系统

1
blkid

挂载

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

挂载

创建文件夹

1
mkdir /data

挂载

1
mount /dev/datavg/data01 /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/datavg/data01 | awk '{print $2}' | sed 's/\"//g'` /data xfs defaults 0 0 >> /etc/fstab

查看新分区信息

运行以下命令:

1
cat /etc/fstab

普通用户

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

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

1
sudo blkid /dev/datavg/data01

运行结果如下所示。

/dev/datavg/data01: UUID=”dd5bad77-971d-4153-921c-a1ec0d6eafc4” BLOCK_SIZE=”512” TYPE=”xfs”

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

1
sudo vi /etc/fstab

输入i进入编辑模式。

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

1
UUID=dd5bad77-971d-4153-921c-a1ec0d6eafc4 /data xfs defaults 0 0

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

LVM扩容

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

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

物理卷对应的分区扩容了但是物理卷没扩容

查看磁盘

1
lsblk

扩容分区

1
cfdisk /dev/vda

扩容物理卷

1
sudo pvresize /dev/vda3

扩容逻辑卷

1
2
3
4
5
6
# 查看卷组剩余空间
vgs
# 查看逻辑卷
lvs
# 扩容逻辑卷占用所有剩余空间
lvextend -l +100%FREE /dev/klas/root

如果想扩容逻辑卷指定空间

1
lvextend -L +10G /dev/klas/root

其中

  • klas 是 卷组名
  • root 是 逻辑卷名

扩容文件系统

根据文件系统的类型,调整其大小。

查看文件系统的类型和容量

1
df -Th

对于 XFS 文件系统:

1
xfs_growfs /dev/klas/root

对于 ext4 文件系统:

1
resize2fs /dev/klas/root

再次查看容量判断是否扩容成功

1
df -Th

卷路径

/dev/mapper/datavg-data01/dev/datavg/data01是等效的吗?

我们使用blkid获取到的路径是/dev/mapper/datavg-data01,但是我们用/dev/datavg/data01也是没问题的,那他们是等效的吗?

/dev/mapper/datavg-data01 是通过设备映射器(Device Mapper)机制创建的设备文件路径,而 /dev/datavg/data01 是 LVM 为逻辑卷提供的一个便捷的符号链接路径。

实际上,/dev/datavg/data01 最终会指向 /dev/mapper/datavg-data01

一些自动化脚本或者工具可能会倾向于使用 /dev/mapper 路径,因为它更直接地反映了底层设备映射关系,相对更加稳定。