CentOS 8 扩展磁盘 基于 LVM逻辑盘卷管理
一、LVM原理(可跳过)
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。
LVM是 Logical Volume Manager(逻辑卷管理)的简写
- PV 物理的磁盘分区
- VG LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库统一管理了几个大的硬盘,形成了一个统一虚拟的存储资源池。
- LV 也就是从VG中划分的逻辑分区
模型如下
二、开始扩展空间
1 初始状态
以CentOS 8 为例,先创建一个虚拟机,磁盘容量分配20G
在VMWare中的状态
系统中磁盘的初始状态:
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 884M 0 884M 0% /dev
tmpfs 901M 0 901M 0% /dev/shm
tmpfs 901M 8.8M 892M 1% /run
tmpfs 901M 0 901M 0% /sys/fs/cgroup
/dev/mapper/cl-root 17G 2.6G 15G 15% /
/dev/sda1 976M 202M 708M 23% /boot
tmpfs 181M 0 181M 0% /run/user/0
2 在VMWare中给磁盘扩容
3 在CentOS 中扩容
fdisk -l
,查看磁盘分区表,可以看到sda已经扩展到了30GB
[root@localhost ~]# fdisk -l
Disk /dev/sda:30 GiB,32212254720 字节,62914560 个扇区 <---这里可以看到,已经扩容到了30GB
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9d5b1858
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
Disk /dev/mapper/cl-root:17 GiB,18249416704 字节,35643392 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cl-swap:2 GiB,2147483648 字节,4194304 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
fdisk /dev/sda
; 输入m
回车可获取帮助
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):m
帮助:
DOS (MBR)
a 开关 可启动 标志
b 编辑嵌套的 BSD 磁盘标签
c 开关 dos 兼容性标志
常规
d 删除分区
F 列出未分区的空闲区
l 列出已知分区类型
n 添加新分区
p 打印分区表
t 更改分区类型
v 检查分区表
i 打印某个分区的相关信息
杂项
m 打印此菜单
u 更改 显示/记录 单位
x 更多功能(仅限专业人员)
脚本
I 从 sfdisk 脚本文件加载磁盘布局
O 将磁盘布局转储为 sfdisk 脚本文件
保存并退出
w 将分区表写入磁盘并退出
q 退出而不保存更改
新建空磁盘标签
g 新建一份 GPT 分区表
G 新建一份空 GPT (IRIX) 分区表
o 新建一份的空 DOS 分区表
s 新建一份空 Sun 分区表
紧接着输入F
回车,列出未分区的空闲区,可以看到我们新添加的10GB空闲空间
命令(输入 m 获取帮助):F
未分区的空间 /dev/sda:10 GiB,10737418240 个字节,20971520 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
起点 末尾 扇区 大小
41943040 62914559 20971520 10G
n
回车添加新分区, p
回车选择主分区,3
回车选择分区号,
输入启始扇区,我这里是41943040,回车
输入结束扇区,我这里是62914559, 回车
w 回车保存并退出
命令(输入 m 获取帮助):n
分区类型
p 主分区 (2个主分区,0个扩展分区,2空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (3,4, 默认 3): 3
第一个扇区 (41943040-62914559, 默认 41943040):
上个扇区,+sectors 或 +size{K,M,G,T,P} (41943040-62914559, 默认 62914559):
创建了一个新分区 3,类型为“Linux”,大小为 10 GiB。
命令(输入 m 获取帮助):w
分区表已调整。
正在同步磁盘。
fdisk -l
再次查看磁盘分区表,发现多出一个10GB的/dev/sda3
[root@localhost ~]# fdisk -l
Disk /dev/sda:30 GiB,32212254720 字节,62914560 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9d5b1858
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 41943039 39843840 19G 8e Linux LVM
/dev/sda3 41943040 62914559 20971520 10G 83 Linux <---扩展出的空间
Disk /dev/mapper/cl-root:17 GiB,18249416704 字节,35643392 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cl-swap:2 GiB,2147483648 字节,4194304 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
mkfs.xfs /dev/sda3
格式化新建的分区sda3
[root@localhost ~]# mkfs.xfs /dev/sda3
meta-data=/dev/sda3 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
vgdisplay
查询卷组
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name cl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID MM3bE0-DveY-SNNC-BTId-XUdX-bkFt-c8m4FJ
依次执行以下命令
pvcreate /dev/sda3 初始化分区sda3
vgextend cl /dev/sda3 将分区sda3加入到虚拟卷组cl
lvextend -l +100%FREE /dev/mapper/cl-root 扩展文件系统容量
pvdisplay 查看卷组
xfs_growfs / 同步文件系统
pvcreate /dev/sda3
初始化分区sda3
[root@localhost ~]# pvcreate /dev/sda3
WARNING: xfs signature detected on /dev/sda3 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sda3.
Physical volume "/dev/sda3" successfully created.
vgextend cl /dev/sda3
将分区sda3加入到虚拟卷组cl
[root@localhost ~]# vgextend cl /dev/sda3
Volume group "cl" successfully extended
lvextend -l +100%FREE /dev/mapper/cl-root
扩展文件系统容量
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/cl-root
Size of logical volume cl/root changed from <17.00 GiB (4351 extents) to 26.99 GiB (6910 extents).
Logical volume cl/root successfully resized.
pvdisplay
再次查看卷组,可以看到有2个Physical volume,第二个就是我们新添加的10GB空间
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID 0JK9LK-WYUF-PtaE-kLKu-5iWx-0y1C-aWbQsT
--- Physical volume ---
PV Name /dev/sda3
VG Name cl
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 2559
Free PE 0
Allocated PE 2559
PV UUID 7Woxj3-fsCX-1K17-B4Hr-Ybru-99hY-i6xfU1
xfs_growfs /
同步文件系统,“/”代表挂载点,我们需要将空间挂载到根目录下。
[root@localhost ~]# xfs_growfs /
meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=4455424, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4455424 to 7075840
df -h
查看扩容结果,根目录“/”,从开始的15G可用,变成了25G可用,说明扩展成功。
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 884M 0 884M 0% /dev
tmpfs 901M 0 901M 0% /dev/shm
tmpfs 901M 8.8M 892M 1% /run
tmpfs 901M 0 901M 0% /sys/fs/cgroup
/dev/mapper/cl-root 27G 2.6G 25G 10% /
/dev/sda1 976M 202M 708M 23% /boot
tmpfs 181M 0 181M 0% /run/user/0