LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM

最近遇到一个生产环境扩容的需求,本来是一件很简单的事情,但做到一半却傻眼了,甲方爸爸原来的硬盘没有做LVM,并且KVM新添加的是整块硬盘而不是原有硬盘扩容,这种情况要做热扩容简直比五彩斑斓的黑还要丧心病狂。


首先说明下,LINUX系统中 ext4 分区可以离线用 resize2fs 扩容,但扇区必须连续。lvm btrfs 都可以在线跨扇区扩容。xfs 也是可以在线扩容的,使用xfs_growfs 不过扇区要连续。
LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
扩容选择 目前使用较多的扩容一个是xfs的growpart,一个是LVM体系(LVM体系都这么多年还没被淘汰确实是非常优秀的体系,不过现在大部分云端开始用新的体系了)
1:LVM下扩容

LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
LVM体系图
命令:
先查容量
[root@localhost ~]# df -h
文件系统容量已用可用 已用% 挂载点
/dev/mapper/centos-root35G5.5G30G16% /
devtmpfs3.9G03.9G0% /dev
tmpfs3.9G03.9G0% /dev/shm
tmpfs3.9G11M3.9G1% /run
tmpfs3.9G03.9G0% /sys/fs/cgroup
/dev/sda11014M275M740M28% /boot
tmpfs783M52K783M1% /run/user/0
[root@localhost ~]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
fd02:014K0 disk
sda8:00500G0 disk
├─sda18:101G0 part /boot
└─sda28:2039G0 part
├─centos-root 253:0035G0 lvm/
└─centos-swap 253:104G0 lvm[SWAP]
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
pprimary (2 primary, 0 extended, 2 free)
eextended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (83886080-1048575999,默认为 83886080):
将使用默认值 83886080
Last 扇区, +扇区 or +size{K,M,G} (83886080-1048575999,默认为 1048575999):+85G
分区 3 已设置为 Linux 类型,大小设为 85 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
更新分区表
[root@localhost ~]# partprobe
[root@localhost ~]# lsblk
NAMEMAJ:MIN RMSIZE RO TYPE MOUNTPOINT
fd02:014K0 disk
sda8:00500G0 disk
├─sda18:101G0 part /boot
├─sda28:2039G0 part
│ ├─centos-root 253:0035G0 lvm/
│ └─centos-swap 253:104G0 lvm[SWAP]
└─sda38:3085G0 part
sr011:01 1024M0 rom
LVM系列操作
[root@localhost ~]# lvm
lvm> pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
lvm> pvdisplay
--- Physical volume ---
PV Name/dev/sda2
VG Namecentos
PV Size<39.00 GiB / not usable 3.00 MiB
Allocatableyes (but full)
PE Size4.00 MiB
Total PE9983
Free PE0
Allocated PE9983
PV UUIDtwmUZh-Vnqq-W5Pd-v3ms-6OkH-sSTs-nv8aA8
"/dev/sda3" is a new physical volume of "85.00 GiB"
--- NEW Physical volume ---
PV Name/dev/sda3
VG Name
PV Size85.00 GiB
AllocatableNO
PE Size0
Total PE0
Free PE0
Allocated PE0
PV UUIDvTD91f-b28E-GgL0-XsqI-ipQ5-rscT-GcQbT6
lvm> vgdisplay
--- Volume group ---
VG Namecentos
System ID
Formatlvm2
Metadata Areas1
Metadata Sequence No3
VG Accessread/write
VG Statusresizable
MAX LV0
Cur LV2
Open LV2
Max PV0
Cur PV1
Act PV1
VG Size<39.00 GiB
PE Size4.00 MiB
Total PE9983
Alloc PE / Size9983 / <39.00 GiB
FreePE / Size0 / 0
VG UUID238Yz8-MEQa-NT6a-3aHC-J3TZ-mGux-e9vqPf
lvm> vgextend centos /dev/sda3
Volume group "centos" successfully extended
lvm> vgdisplay
--- Volume group ---
VG Namecentos
System ID
Formatlvm2
Metadata Areas2
Metadata Sequence No4
VG Accessread/write
VG Statusresizable
MAX LV0
Cur LV2
Open LV2
Max PV0
Cur PV2
Act PV2
VG Size123.99 GiB
PE Size4.00 MiB
Total PE31742
Alloc PE / Size9983 / <39.00 GiB
FreePE / Size21759 / <85.00 GiB
VG UUID238Yz8-MEQa-NT6a-3aHC-J3TZ-mGux-e9vqPf
lvm> lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from <35.00 GiB (8959 extents) to 119.99 GiB (30718 extents).
Logical volume centos/root successfully resized.
[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=https://www.it610.com/dev/mapper/centos-root isize=512agcount=4, agsize=2293504 blks
=sectsz=512attr=2, projid32bit=1
=crc=1finobt=0 spinodes=0
data=https://www.it610.com/article/bsize=4096blocks=9174016, imaxpct=25
=sunit=0swidth=0 blks
naming=version 2bsize=4096ascii-ci=0 ftype=1
log=internalbsize=4096blocks=4479, version=2
=sectsz=512sunit=0 blks, lazy-count=1
realtime =noneextsz=4096blocks=0, rtextents=0
data blocks changed from 9174016 to 31455232
[root@localhost ~]# df -h
文件系统容量已用可用 已用% 挂载点
/dev/mapper/centos-root120G5.5G115G5% /
devtmpfs3.9G03.9G0% /dev
tmpfs3.9G03.9G0% /dev/shm
tmpfs3.9G11M3.9G1% /run
tmpfs3.9G03.9G0% /sys/fs/cgroup
/dev/sda11014M275M740M28% /boot
tmpfs783M52K783M1% /run/user/0


2:growpart扩容(仅针对单硬盘还有未使用空间,多用于云供应商提供的机器购买扩容空间)
1、先安装gdisk 工具
yum install epel-release
yum install cloud-utils-growpart
【LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM】lsblk
2、growpart/dev/vda1
3、xfs_growfs /mnt/vda1#xfs
resize2fs /dev/vda1#ext4
测试操作记录
原服务器硬盘原40G, 云管上将系统盘扩到80G,扩大40G
LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
原分区大小 LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
实际硬盘大小 1、先安装growpart 工具
yum install epel-release
yum install cloud-utils-growpart
LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
下载软件包,网上有很多直接的sh文件可以直接下载使用 2、LANG=en_US.UTF-8
LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
设置LANG,建议先用locale查看下,en_US.UTF-8也是支持中文的不用担心 LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
xfs_growfs /app扩容
LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
####根分区扩容 LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
growpart/dev/vda5 LINUX体系下扩容|LINUX体系下扩容 LVM 非LVM
文章图片
xfs_growfs /

    推荐阅读