背景1:
esxi下某虚拟机有两块硬盘,现要为第二块磁盘(/dev/sdb)扩容,此磁盘未分区,直接挂载到指定目录使用的,通过esxi给其增加了一些容量,但是登录虚拟机内部查看容量并没有变化(esxi调整后需要重启机器)
1、下面是调整后 fdisk -l 的结果
[root@localhost ~]# fdisk -l
磁盘 /dev/sdb:6597.1 GB, 6597069766656 字节,12884901888 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
2、下面是调整后 df -hT的结果
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb ext4 6.0T 5.3T 428G 93% /data1
问题是因为文件系统还没有扩展到新的磁盘空间。尽管磁盘大小已经在 fdisk 中显示正确,但 df -hT 中仍然显示旧的文件系统大小。这是因为文件系统本身没有扩展以利用新增加的空间
3、下面是调整后 lsblk 的结果
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 31G 0 part
├─centos-root 253:0 0 27.8G 0 lvm /
└─centos-swap 253:1 0 3.2G 0 lvm [SWAP]
sdb 8:16 0 6.5T 0 disk /data1
sr0 11:0 1 973M 0 rom
4、结论和操作
从 lsblk 和 fdisk -l 输出来看 /dev/sdb 已经正确识别到新的 6.5T 大小 接下来只需要扩展文件系统以使用新增的空间
[root@localhost ~]# umount /dev/sdb
[root@localhost ~]# e2fsck -f /dev/sdb
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/sdb: 17238888/201326592 files (0.1% non-contiguous), 1417999498/1610612736 blocks
[root@localhost ~]# resize2fs /dev/sdb
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/sdb to 1744830464 (4k) blocks.
The filesystem on /dev/sdb is now 1744830464 blocks long.
[root@localhost ~]# mount /dev/sdb /data1
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb ext4 6.5T 5.3T 910G 86% /data1
背景2:
和上面相似,但是是为指定磁盘的指定分区扩容
1、lsblk的执行结果如下:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 132G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 31G 0 part
├─centos-root 253:0 0 27.8G 0 lvm /
└─centos-swap 253:1 0 3.2G 0 lvm [SWAP]
2、fdisk -l 的执行结果如下:
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:141.7 GB, 141733920768 字节,276824064 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c7921
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 67108863 32504832 8e Linux LVM
磁盘 /dev/mapper/centos-root:29.8 GB, 29842472960 字节,58286080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:3435 MB, 3435134976 字节,6709248 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
3、df -hT的结果如下:
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs tmpfs 7.8G 16K 7.8G 1% /dev/shm
tmpfs tmpfs 7.8G 9.0M 7.8G 1% /run
tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 28G 9.1G 19G 33% /
/dev/sda1 xfs 1014M 150M 865M 15% /boot
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/1002
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
4、启动parted开始调整分区
parted 被用来物理调整分区的大小。即便是在线扩展分区,也只是修改了分区表,让分区能够覆盖更多的磁盘空间。但是,分区表的更改并不会自动扩展包含在该分区中的物理卷(PV)的大小
[root@localhost ~]# parted /dev/sda
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 142GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
1 1049kB 1075MB 1074MB primary xfs 启动
2 1075MB 34.4GB 33.3GB primary lvm
(parted) resizepart 2 100% #这里的意思是调整分区2的结束位置为100%即把所有可用空间给2
(parted) quit #保存退出
信息: You may need to update /etc/fstab.
5、扩展物理卷:
pvresize 用来调整物理卷(PV)在逻辑卷管理(LVM)中的大小。当分区大小被 parted 增加后,该分区上的物理卷并没有自动扩展以使用新增的空间。pvresize 指令会扩展物理卷以填满整个分区的新大小,这样 LVM 才能看到并使用新增的空间。
[root@localhost ~]# pvresize /dev/sda2
Physical volume "/dev/sda2" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
6、扩展逻辑卷:
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from 27.79 GiB (7115 extents) to <127.80 GiB (32716 extents).
Logical volume centos/root successfully resized.
7、扩展文件系统:
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1821440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7285760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3557, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7285760 to 33501184
因此,完成分区大小调整后,必须执行 pvresize
,以确保物理卷级别的数据结构更新,从而使得新增的磁盘空间可以被逻辑卷(LV)使用。之后,逻辑卷可以被扩展,最终文件系统才能够使用这些额外的空间。这是一个从底层硬件到文件系统层面逐级上升的过程,每一步都需要相应的命令来确保上一层的变更能被正确识别和利用。
原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com