前言
基本概念
磁盘、分区、文件系统、物理卷、卷组、逻辑卷关系:
- 磁盘 → 分区 → 文件系统:磁盘被划分为分区,分区上建立文件系统以管理文件。
- 磁盘/分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统:使用LVM时,磁盘或分区转换为物理卷,加入卷组,从中创建逻辑卷,最后在逻辑卷上建立文件系统。
注意
这两种体系可以共存,但是建议只使用其中的一种。
物理卷(PV)、卷组(VG)、逻辑卷(LV)的关系:
- 物理卷 → 卷组:多个物理卷可以组合成一个卷组,形成一个统一的存储池。
- 卷组 → 逻辑卷:卷组中的存储资源被划分为逻辑扩展,供逻辑卷使用,逻辑卷可以动态管理这些资源。
扩容
磁盘 → 分区 → 文件系统
磁盘扩容 => 分区扩容 => 文件系统扩容
磁盘/分区 → 物理卷 → 卷组 → 逻辑卷 → 文件系统
磁盘扩容 => 分区扩容 => 物理卷扩容 => 逻辑卷扩容 => 文件系统扩容
卷组在物理卷扩容后容量是自动变化的。
硬盘与分区查看
分区类型和挂载点
lsblk
lsblk
命令以树形结构列出所有可用块设备的信息,包括磁盘、分区、挂载点等,输出信息更加简洁直观。
查看所有的磁盘和分区以及是否挂载
1 | lsblk |
其中
rom
:只读存储设备,如 CD-ROM。disk
:完整的磁盘设备,如 HDD 或 SSD。part
:磁盘上的分区,独立的存储单元。lvm
:通过逻辑卷管理的存储空间,提供灵活的动态管理。
fdisk
分区工具查看分区信息
1 | fdisk -l |
挂载点空间占用
查看挂载点空间占用
1 | df -Th |
其中
-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 | pvs |
创建逻辑卷
1 | # 按剩余空间比例创建 |
查看
1 | lvs |
文件系统
若要格式化为 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 | # 查看卷组剩余空间 |
如果想扩容逻辑卷指定空间
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
路径,因为它更直接地反映了底层设备映射关系,相对更加稳定。