在虚拟机中使用 Linux 系统时,常常发现前期规划的磁盘空间不够用,本以为直接修改机器配置,修改磁盘大小可以解决问题,但实操发现不是这么回事,还需要一堆操作才能扩容成功,这篇就来详细说说如何扩容的操作。
比如下面这台机器,磁盘已经快不够用了:
想在现有基础上对根目录【 / 】扩充 10 个 G,该如何操作呢?详细如下。
一、修改 VMware 中机器的磁盘配置
点击“编辑虚拟机设置”选项,打开虚拟机设置页。
二、进行磁盘设置
对原有磁盘大小进行设置,从 10GB 编辑为 20,点击扩展按钮。
会提示下面的提示框信息。
一直点击确定,回到配置信息页面,可以看到磁盘已经修改为 20GB。
三、启动系统
点击“开启此虚拟机”启动系统。
四、查看磁盘分区表
命令:fdisk -l
根据提示可以看到此系统的磁盘接口为 scsi,对应“sda”。
这个硬盘是 21.5G 的,有 255 个磁面,63 个扇区,2610 个磁柱。每个 cylinder(磁柱)的容量是 8225280 bytes = 8225.280 K(约为)= 8.225280M(约为)。其中,Device(分区序列)、Boot(引导)、Start(开始)、End(终止)、Blocks(容量)、Id(分区类型 ID)、System(分区类型)。
Device:在 Linux 是通过 hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c、...,x表示的数字 1、2、3、....。 hd 大多是 IDE 硬盘,sd 大多是 SCSI 或移动存储;
Boot:表示引导分区,在上面的例子中 sda1 是引导分区;
Start:表示的一个分区从 X cylinder(磁柱)开始;
End:表示一个分区到 Y cylinder(磁柱)结束;
Id 和 System:表示的是一个意思,ID 看起来不太直观,我们要在 fdisk 一个分区时,通过指定 ID 来确认分区类型。比如 7 表示的就 NTFS 分区,这个在 fdisk 中要通过 t 功能来指定,下面的部份会提到;
Blocks:表示的意思的确是容量的意思,其单位是K。一个分区容量的值是由下面的公式而来的:
Blocks = (相应分区 End 数值 - 相应分区 Start 数值) * 单位 cylinder(磁柱)的容量
换算一下 sda1 的 Blocks 的大小 :
sda1 Blocks = (64 - 1 ) * 8225.280 = 518,192.64K = 506.04752M注:得出的这个值和我们通过 fdisk -l 看到的 /dev/sda1 的值是大体相当的,因为换算方法不一样,所以也不可能尽可能的精确;再加上分区时的一点损失之类,有时或大或小是存在的;
五、开始添加分区
使用 Linux 的 fdisk 分区工具开始给磁盘分区。
可以根据提示开始划分分区:
输入 m 查看帮助信息,
再输入 n(表示增加分区),
回车后输入 p(创建主分区),
回车后 partition number 输入3(因为上面已经有两个分区 sda1 和 sda2),
回车会提示输入分区的 start 值,默认即可,
回车会提示输入分区的 end 值,默认即可(即当前最大值),
回车后输入 w 进行保存,
分区划分完毕。
六、修改分区ID
命令:fdisk -l
可以看到新加的分区已经出现:
可以看到 /dev/sda3 的 Id号为 83,我们要将其改成 8e(LVM卷文件系统的 Id),具体方法同第五步,如下图所示:
修改后的信息如下:
重启系统。
七、开始扩充分区
显示逻辑卷分区信息:
命令:lvs
显示卷组信息:
命令:vgdisplay
将物理硬盘分区初始化为物理卷,以便被 LVM 使用。
命令:pvcreate /dev/sda3
注意:
1)要创建物理卷必须首先对硬盘进行分区,并且将硬盘分区的类型设置为“8e”后,才能使用pvcreat指令将分区初始化为物理卷。
2)如果找不到 sda3,可能是第六步结束后忘了重启系统。
扩展卷组:
命令:vgextend vg_node10 /dev/sda3
注意:如果执行 vgextend vg_node10 /dev/sda3 这一步骤时提示 Couldn't create temporary archive name. 说明原有磁盘占用率已经100%了,需要删掉部分文件使得磁盘空余出来些才可以执行命令成功。
再次显示卷组信息:
说明我们最多可以有 9.99GB 的扩充空间。
扩充逻辑卷分区:
命令:lvextend -L+9.5G /dev/vg_node10/lv_root /dev/sda3
扩大文件系统:
命令:resize2fs /dev/vg_node10/lv_root
如果报错如下:
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/vg_node10/lv_root
Couldn't find valid filesystem superblock.
则需要注意是 linux 7,需要用如下命令才行:
命令:xfs_growfs /dev/vg_node10/lv_root
八、查看磁盘扩展情况
可以看到磁盘已扩展成功,Good Luck!
原文链接: https://blog.csdn.net/tzhuwb/article/details/103983079