在 上一篇 中介绍了如何释放内存空间、磁盘空间,但磁盘空间实在不够用的时候,该如何处理呢?本文档主要介绍 Vmware 扩展磁盘的方法。
Centos7 虚拟机扩展磁盘
创建 Linux 虚拟机时会分配磁盘空间,但随着使用的增加,使用率逐渐升高,此时需要在添加或者扩展一下磁盘。比如: /dev/mapper/centos-home
的磁盘为 19G ,目前已经使用到 77% 。
[eln@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 39G 24G 16G 61% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 24M 3.8G 1% /dev/shm
tmpfs 3.9G 26M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop1 134M 134M 0 100% /var/lib/snapd/snap/mathpix-snipping-tool/35
/dev/loop0 90M 90M 0 100% /var/lib/snapd/snap/core/6673
/dev/mapper/centos-home 19G 15G 4.4G 77% /home
/dev/sda1 497M 215M 283M 44% /boot
tmpfs 781M 60K 781M 1% /run/user/1000
[eln@localhost ~]$ sudo fdisk -l
扩展磁盘
扩展磁盘需要在此虚拟机停止的状态下进行,同时扩展的数字是扩展后的预期大小,比如事前为 20G ,希望扩展 10G ,应该输入 30 。(参考下图)
扩展后,重新启动 linux ,发现 df
状态没有变化,使用 fdisk
确认磁盘空间是否已经扩展。可以看到 Disk /dev/sda: 75.2 GB ,已经扩展了 10G 空间。
[eln@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 39G 24G 16G 61% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 24M 3.8G 1% /dev/shm
tmpfs 3.9G 26M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop1 134M 134M 0 100% /var/lib/snapd/snap/mathpix-snipping-tool/35
/dev/loop0 90M 90M 0 100% /var/lib/snapd/snap/core/6673
/dev/mapper/centos-home 19G 15G 4.4G 77% /home
/dev/sda1 497M 215M 283M 44% /boot
tmpfs 781M 60K 781M 1% /run/user/1000
[eln@localhost ~]$ sudo fdisk -l
[sudo] eln 的密码:
磁盘 /dev/sda:75.2 GB, 75161927680 字节,146800640 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000472b1
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 125829119 62401536 8e Linux LVM
扩展分区
[eln@localhost ~]$ sudo fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (125829120-146800639,默认为 125829120):
将使用默认值 125829120
Last 扇区, +扇区 or +size{K,M,G} (125829120-146800639,默认为 146800639):
将使用默认值 146800639
分区 3 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):L
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 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)
正在同步磁盘。
执行 partprobe
或者重启
执行 partprobe
命令用于将磁盘分区表变化信息通知内核,并请求操作系统重新加载分区表,可以避免必须重新启动的问题。也可以 reboot
一下。
[eln@localhost ~]$ sudo partprobe
分区确认
通过 fdisk
可以确认到已经添加了 sda3 :
[eln@localhost ~]$ sudo fdisk -l
磁盘 /dev/sda:75.2 GB, 75161927680 字节,146800640 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000472b1
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 125829119 62401536 8e Linux LVM
/dev/sda3 125829120 146800639 10485760 8e Linux LVM
扩展 vg
基本 LVM 知识,进行 vg 扩展。
[eln@localhost ~]$ sudo pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
[eln@localhost ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- <59.51g 64.00m
[eln@localhost ~]$ sudo vgextend centos /dev/sda3
Volume group "centos" successfully extended
[eln@localhost ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 3 0 wz--n- 69.50g <10.06g
扩展 lv
[eln@localhost ~]$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 18.84g
root centos -wi-ao---- 38.60g
swap centos -wi-ao---- 2.00g
[eln@localhost ~]$ sudo lvextend /dev/centos/home /dev/sda3
Size of logical volume centos/home changed from 18.84 GiB (4824 extents) to <28.84 GiB (7383 extents).
Logical volume centos/home successfully resized.
[eln@localhost ~]$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- <28.84g
root centos -wi-ao---- 38.60g
swap centos -wi-ao---- 2.00g
df
状态确认
此时 df
状态还没有变化:
[eln@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 39G 24G 16G 61% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 26M 3.8G 1% /dev/shm
tmpfs 3.9G 26M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop1 134M 134M 0 100% /var/lib/snapd/snap/mathpix-snipping-tool/35
/dev/loop0 90M 90M 0 100% /var/lib/snapd/snap/core/6673
/dev/mapper/centos-home 19G 15G 4.4G 77% /home
/dev/sda1 497M 215M 283M 44% /boot
tmpfs 781M 60K 781M 1% /run/user/1000
xfs_growfs
使用 xfs_growfs
可以将 xfs 文件系统进行 online 方式的扩展,它会将 data block 进行调整。
[eln@localhost ~]$ sudo xfs_growfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=256 agcount=4, agsize=1234944 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=4939776, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal 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 4939776 to 7560192
再次确认 df
状态,添加的 10G 空间已经有效,使用率也降到了 51% 。
[eln@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 39G 24G 16G 61% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 26M 3.8G 1% /dev/shm
tmpfs 3.9G 26M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop1 134M 134M 0 100% /var/lib/snapd/snap/mathpix-snipping-tool/35
/dev/loop0 90M 90M 0 100% /var/lib/snapd/snap/core/6673
/dev/mapper/centos-home 29G 15G 15G 51% /home
/dev/sda1 497M 215M 283M 44% /boot
tmpfs 781M 60K 781M 1% /run/user/1000
至此, Centos7 虚拟机扩展磁盘已完成。