磁盘扩容
在虚拟机环境中,随着业务的增长和数据的积累,磁盘空间不足成为一个常见的问题。为了解决这个问题,需要对虚拟机的磁盘进行扩容,以提供更多的存储空间。
虚拟机磁盘扩容是一项重要的任务,它可以帮助系统管理员满足不断增长的存储需求,并确保虚拟机的性能和可用性不受限制。在进行磁盘扩容之前,需要仔细考虑和规划,以确保操作顺利进行并防止数据丢失。
本文将介绍如何在虚拟机中扩展磁盘的步骤。我们将着重介绍在CentOS 7操作系统中进行磁盘扩容的方法,但是大部分步骤也适用于其他Linux发行版。
在本文中,我们将讨论如何检查现有磁盘的使用情况,如何创建新的分区和物理卷,并将其添加到卷组中。我们还将介绍如何扩展逻辑卷的大小,并通过相应的命令扩展文件系统以使用新的空间。
一、虚拟机磁盘扩展
二、创建新的磁盘分区
1.创建新的分区
fdisk /dev/sda
Command (m for help): n
Select (default p): #回车
Using default response p
Partition number (3,4, default 3): #回车
First sector (41943040-52428799, default 41943040): #回车
Using default value 41943040
Last sector, +sectors or +size{K,M,G} (41943040-52428799, default 52428799):
Using default value 52428799
Partition 3 of type Linux and of size 5 GiB is set
因为我将磁盘扩展了5GB,因此回车默认创建5GB分区
2.查看分区
ls /dev/sda3
ls: cannot access /dev/sda3: No such file or directory
在刚刚创建完成分区后,ls发现找不到该分区,因此需要重启才可以加载出新创建的分区,或者也可以输入
partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
然后再查询就可以找到了
ls /dev/sda3
/dev/sda3
3.查看剩余内存
这个地方使用 df -h 来查看系统的内存使用情况
小提示:
"partprobe" 是一个用于 CentOS 7 的命令,用于通知操作系统重新加载分区表,以便识别并使用新创建的分区。
当在 CentOS 7 上创建、删除或调整分区时,操作系统需要重新加载分区表才能识别这些更改。否则,新的分区可能无法被正确地识别和使用。
partprobe 命令用于触发操作系统重新加载分区表。它会扫描系统上的所有磁盘,并更新操作系统内存中的分区表信息。这样,新创建的分区就可以被识别和使用了。
通常,在创建、删除或调整分区后,您可以使用 partprobe 命令来立即使更改生效,而无需重启系统。例如,如果您在 CentOS 7 上创建了一个新的分区,您可以运行 partprobe 命令来告诉系统重新加载分区表,以便识别和使用这个新分区。
需要注意的是,partprobe 命令需要以 root 权限运行。
三、对逻辑卷进行扩容
对逻辑卷进行扩容是为了增加逻辑卷的存储空间,当逻辑卷的存储空间不足时,扩容逻辑卷可以增加可用空间,以满足应用程序或用户的需求。
1.创建新的物理卷
pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
出现successfully created则表示创建成功了
2.将新建的物理卷添加到卷组中
2.1查看卷组名
首先先去查看卷组的名字,这里使用
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n-
可以看到卷组的名字为centos
2.2将新建的物理卷添加到卷组中
vgextend centos /dev/sda3
Volume group "centos" successfully extended
当出现successfully extended,则说明添加成功了
然后就需要扩展逻辑卷了
3.扩展逻辑卷
3.1首先查看逻辑卷名字
这里使用的命令是lvs
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao----
swap centos -wi-ao---- 2.00g
这里可以看到,要扩展的逻辑卷的名字应该是root
小提示:为什么要扩展的逻辑卷名字是root呢?
"root" 代表根逻辑卷,它通常是操作系统的根文件系统,包含了 CentOS 7 安装的根目录(/)下的所有文件和目录。根逻辑卷存储操作系统及其相关文件,包括系统配置文件、应用程序和用户数据。
"swap" 是交换空间逻辑卷,用于 CentOS 7 的交换分区。交换分区是一种特殊的分区,它扩展了系统的内存容量。当系统的物理内存不足时,Linux 内核可以将部分内存中的数据写入交换分区,以释放物理内存供其他进程使用。
3.2扩展逻辑卷
lvextend /dev/centos/root -L +5G
Insufficient free space: 1280 extents needed, but only 1279 available
我们使用lvextend命令来扩展逻辑卷,但是我们可以看到这个命令执行并没有成功,在命令和路径都没有错的情况下,我们来查看新建的物理卷是否可以支持逻辑卷扩展5GB。我们使用命令:
pvdisplay /dev/sda3
来得到以下信息:
--- Physical volume ---
PV Name /dev/sda3
VG Name centos
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID GRuwt0-8uFW-RDZv-aflz-j0zg-MZne-IukWRJ
标红的一行我们可以看到,物理卷 /dev/sdc 的大小为 5.00 GiB,其中 4.00 MiB 是不可用的空间。
因此我们需要调整扩展逻辑卷的大小就可以解决这个问题。
lvextend /dev/centos/root -L +4.9G
Rounding size to boundary between physical extents: 4.90 GiB.
Size of logical volume centos/root changed from
Logical volume centos/root successfully resized.
最后一行我们可以看到successfully resized,表示已经成功扩展
四、扩容文件系统
扩容逻辑卷后,我们使用df -h,我们发现逻辑卷的大小仍然没有扩大。这是因为我们没有对文件系统扩容。
因此我们需要扩容文件系统
1.查看系统的文件系统类型
不用的文件系统类型需要不同的命令来完成扩容
我们使用
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 2110bd40-b7b5-4445-a6e5-501144343a1f /boot
├─sda2 LVM2_memb MssVqP-9ku7-Mruo-wj34-T2la-v59a-bQcrR0
│ ├─centos-root xfs 7dcc217d-98bb-4bb5-b654-44af97a46e2d /
│ └─centos-swap swap f8a83029-6121-4e43-b521-468bdad45c86 [SWAP]
└─sda3 LVM2_memb GRuwt0-8uFW-RDZv-aflz-j0zg-MZne-IukWRJ
└─centos-root xfs 7dcc217d-98bb-4bb5-b654-44af97a46e2d /
sr0 iso9660 CentOS 7 x86_64 2018-05-03-20-55-23-00 /run/media
或者使用
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 17G 3.4G 14G 20% /
devtmpfs devtmpfs 471M 0 471M 0% /dev
tmpfs tmpfs 488M 0 488M 0% /dev/shm
tmpfs tmpfs 488M 8.6M 479M 2% /run
tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 157M 858M 16% /boot
tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs tmpfs 98M 32K 98M 1% /run/user/0
/dev/sr0 iso9660 4.2G 4.2G 0 100% /run/media/root/CentOS 7 x86_64
都可以查看到我们的文件系统是xfs类型
对于xfs类型文件系统,我们使用命令xfs_growfs对其进行扩容
2.扩容文件系统
xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4455424, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
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 4455424 to 5740544
输出的最后一行显示了执行 xfs_growfs 命令后的变化。data blocks changed from 4455424 to 5740544 表示文件系统的数据块从 4455424 个扩展到 5740544 个。这意味着文件系统的大小已经扩展,可用空间增加。
小提示:执行 xfs_growfs 命令需要以 root 用户身份运行,并且逻辑卷必须是 XFS 文件系统。此命令用于扩展已经在运行的文件系统,以便它可以使用逻辑卷的新空间。
完成后我们再次使用df -h来查看内存使用情况我们会发现:
内存已经从原来的17G增加到了22G,做到这里就完成了对磁盘的扩容了。
小结
一、磁盘扩容的大体步骤
对于磁盘的扩容其实就是对逻辑卷的扩容。对逻辑卷进行扩容,首先是要添加一块新的硬盘,或者在其硬盘原有的基础上扩容。其次,将扩容或添加的硬盘创建物理卷。然后,将物理卷添加到想要扩容的逻辑卷的卷组上。接着,在对逻辑卷进行扩容。最后,在对文件系统进行扩容,就完成了磁盘的扩容了。
二、物理卷、逻辑卷、卷组以及扩容的图解
对于刚刚入门的同学来说,单凭文字很难深刻的理解物理卷、逻辑卷和卷组三者的关系,因此我绘制了图片来加深对这三者以及磁盘扩容的理解