1 根分区扩容
给根分区/dev/mapper/cl-root扩容20G空间
1、先创建一个分区,并把其调整为8e LVM存储卷格式
# 重读分区表或重启服务器
[root@rsq-8-163 ~]# partprobe
# 格式化新分区之前先查看根分区是什么文件系统
[root@rsq-8-163 ~]# mount | grep /dev/mapper/cl-root
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
# 格式化新分区
[root@rsq-8-163 ~]# mkfs.xfs /dev/xvda4
# 接下来的操作都在lvm下操作
[root@rsq-8-163 ~]# lvm
# 创建pv
lvm> pvcreate /dev/xvda4
WARNING: xfs signature detected on /dev/xvda4 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/xvda4.
Physical volume "/dev/xvda4" successfully created.
# 查看VG Name
lvm> vgdisplay
--- Volume group ---
VG Name cl
# 将新的pv加入到此vg中
lvm> vgextend cl /dev/xvda4
Volume group "cl" successfully extended
# 扩展逻辑虚拟卷lv的容量,先查看目前有多少Free空间
lvm> vgdisplay
--- Volume group ---
VG Name cl
......
Free PE / Size 5120 / 20.00 GiB
lvm> lvextend -l +5120 /dev/mapper/cl-root
Size of logical volume cl/root changed from 36.99 GiB (9470 extents) to 56.99 GiB (14590 extents).
Logical volume cl/root successfully resized.
# 退出
lvm> quit
Exiting.
lvextend
指令用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。其后有两个选项:
选项 | 说明 |
---|---|
-L | 指定逻辑卷的大小,单位为kKmMgGtT 字节,也就是Size |
-l | 指定逻辑卷的大小,单位为PE数 |
2、上边的操作只是卷扩容,还需要对文件系统实现真正的扩容
# CentOS 7 下面 由于使用的是 XFS,所以要用
xfs_growfs /dev/mapper/cl-root
# CentOS 6 下面 要用
resize2fs /dev/mapper/cl-root
查看磁盘空间,检查扩容是否成功
2 lvextend之后需要还原
背景:
- 根分区有1.75TB实际可用空间,需要把多余的两块8T的盘加入根分区,在lvextend之后发现原来8T的盘被格式化为ext4,然后根分区是xfs文件系统,这会导致xfs_growfs resizefs的时候报错,所以需要把加入的两个pv,分别是/dev/sda1和/dev/sdb1给删掉。
修复:
需要按照以下步骤严格执行,否则会造成文件系统错误
- 查看现有vg状态,使用命令:
vgdisplay
[root@hadoop111 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 3
Act PV 3
VG Size <15.72 TiB
PE Size 4.00 MiB
Total PE 4120269
Alloc PE / Size 4120269 / <15.72 TiB
Free PE / Size 0 / 0
VG UUID 3Z4pzJ-iXuk-RuhH-UU2w-JCZR-1Khy-ir35yb
- 需要找出之前的状态,查看之前的数据盘大小,翻历史记录发现之前的大小是1.75TB,这时候需要缩小lv的大小为1.7TB,保证有充足的扇区可以还原给
/dev/sda1
和/dev/sdb1
[root@hadoop111 ~]# vgdisplay
--- Volume group ---
VG Name centos
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 <1.75 TiB
PE Size 4.00 MiB
Total PE 457445
Alloc PE / Size 457445 / <1.75 TiB
Free PE / Size 0 / 0
VG UUID xDwaya-VH9C-wqLh-m2I3-j0SB-7Obe-cH53fK
- 缩小根分区lv大小,使用命令:
lvreduce -L 1.7T /dev/mapper/centos-root
执行完命令之后再查看下vg,需要保证Alloc PE / Size
的值小于等于原来的457445
[root@hadoop111 ~]# lvreduce -L 1.7T /dev/mapper/centos-root
Rounding size to boundary between physical extents: 1.70 TiB.
WARNING: Reducing active and open logical volume to 1.70 TiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce centos/root? [y/n]: y
Size of logical volume centos/root changed from <1.75 TiB (457445 extents) to 1.70 TiB (445645 extents).
Logical volume centos/root successfully resized.
[root@hadoop111 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 3
Act PV 3
VG Size <15.72 TiB
PE Size 4.00 MiB
Total PE 4120269
Alloc PE / Size 446669 / 1.70 TiB
Free PE / Size 3673600 / 14.01 TiB
VG UUID 3Z4pzJ-iXuk-RuhH-UU2w-JCZR-1Khy-ir35yb
- 还原
/dev/sda1
和/dev/sdb1
的pv大小为默认的
[root@hadoop111 ~]# pvresize /dev/sda1
Physical volume "/dev/sda1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@hadoop111 ~]# pvresize /dev/sdb1
Physical volume "/dev/sdb1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
- 把原来vgextend的两块盘去掉
[root@hadoop111 ~]# vgreduce centos /dev/sda1
Removed "/dev/sda1" from volume group "centos"
[root@hadoop111 ~]# vgreduce centos /dev/sdb1
Removed "/dev/sdb1" from volume group "centos"
- 删除pv
[root@hadoop111 ~]# pvremove /dev/sda1
Labels on physical volume "/dev/sda1" successfully wiped.
[root@hadoop111 ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
- 扩容根分区为它原本的最大空间
[root@hadoop111 ~]# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from 1.70 TiB (445645 extents) to 1.74 TiB (456421 extents).
Logical volume centos/root successfully resized.
[root@hadoop111 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 18
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 <1.75 TiB
PE Size 4.00 MiB
Total PE 457445
Alloc PE / Size 457445 / <1.75 TiB
Free PE / Size 0 / 0
VG UUID 3Z4pzJ-iXuk-RuhH-UU2w-JCZR-1Khy-ir35yb
# 对文件系统实现真正的扩容
[root@hadoop112 ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=32, agsize=14605504 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=467375104, imaxpct=5
= sunit=64 swidth=64 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=228224, version=2
= sectsz=512 sunit=64 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0