业务系统在使用过程中难免遇到空间扩容的时候,今天分享一下 Centos 根目录扩容的的过程。
我们是虚拟机环境,先再 vSphere 里面给虚拟机磁盘增加一下,正式环境操作前请一定要备份。
磁盘增加之后,进入虚拟机,查看本机磁盘环境
[root@jump ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 8.9M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 196G 144G 53G 74% /
/dev/sda2 2.0G 194M 1.8G 10% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/0
[root@jump ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2T 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
├─sda3 8:3 0 198G 0 part
│ ├─centos-root 253:0 0 196G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda4 8:4 0 800G 0 part
sr0 11:0 1 4.4G 0 rom
可以看到根目录总容量为200G, 设备 sda 的总容量为2T。
添加磁盘分区
总共 2T 容量,根目录已有200G, 我们再添加 800G 容量。
[root@jump ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4
起始 扇区 (419430400-4194303999,默认为 419430400):
将使用默认值 419430400
Last 扇区, +扇区 or +size{K,M,G} (419430400-4194303999,默认为 4194303999):+800G
分区 4 已设置为 Linux 类型,大小设为 800 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@localhost ~]# partprobe
然后查看分区是否创建:
[root@jump ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2T 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
├─sda3 8:3 0 198G 0 part
│ ├─centos-root 253:0 0 196G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda4 8:4 0 800G 0 part
sr0 11:0 1 4.4G 0 rom
可以看到sda2 分区已创建。
开始扩容
创建物理卷:
[root@jump ~]# lvm
lvm> pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created.
查看物理卷和卷组:
lvm> pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name centos
PV Size 198.04 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 50699
Free PE 0
Allocated PE 50699
PV UUID 24y3f2-HQ0Z-BeqV-Em2C-jqGy-YxUT-vokSaz
"/dev/sda4" is a new physical volume of "800.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda4
VG Name
PV Size 800.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID OiA1Jj-Nwkd-GgTh-DN8y-aK0d-89Fg-EtgY7l
将物理卷加入到卷组:
lvm> vgextend centos /dev/sda4
Volume group "centos" successfully extended
lvm> vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size <998.04 GiB
PE Size 4.00 MiB
Total PE 255498
Alloc PE / Size 50699 / 198.04 GiB
Free PE / Size 204799 / <800.00 GiB
VG UUID tYB1X1-rFvd-qekt-I96G-qyUb-VvQA-GBFbme
可以看到卷组的Free size 增加了
将卷组剩余空间(刚添加的 800G )添加到逻辑卷 /dev/centos/root :
lvm> lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from 196.04 GiB (50187 extents) to <996.04 GiB (254986 extents).
Logical volume centos/root successfully resized.
同步到文件系统
之前只是对逻辑卷扩容,还要同步到文件系统,实现对根目录的扩容。
[root@jump ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=12847872 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=51391488, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=25093, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 51391488 to 261105664
然后再查看挂载情况:
[root@jump ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 8.9M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 996G 144G 853G 15% /
/dev/sda2 2.0G 194M 1.8G 10% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/0
可以发现有800G的空间挂载在根目录上。