在虚拟机中使用 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
再次显示卷组信息:
说明我们最多可以有 9.99GB 的扩充空间。
扩充逻辑卷分区:
命令:lvextend -L+9.5G /dev/VolGroup00/LogVol00
扩大文件系统:
命令:resize2fs /dev/vg_node10/lv_root
如果执行 resize2fs 操作报错:
# resize2fs /dev/centos/root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/centos/root
Couldn't find valid filesystem superblock.
检查文件系统,检查 /dev/centos/root 文件系统,发现是xfs,如下:
# mount |grep root
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
xfs的文件系统重新定义大小用如下命令:
# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 39336960
八、查看磁盘扩展情况
使用df -h查看
可以看到磁盘已扩展成功,Good Luck!