使用 VMware 构建 Centos 虚拟机是常规操作,但是有时候会出现安装时候设定的磁盘容量,使用过程不够需要扩容,虽然本身 VMware 能够在设置中对磁盘进行扩容,但是存在一个问题即使这种扩容只是给虚拟机增加了对应的磁盘容量,但是没有实际挂载到虚拟机上的,也就是扩容了,但实际不能使用,还需要进入到 Centos 系统中另外进行一系列操作才能够完成具体的配置。
另外还有一种情况,你在构建 Centos 系统的时候,设置的磁盘空间大于 50G,此时 Centos 会自动将其分为主要的两个部分,分别是centos-home
和centos-root
,其中centos-root
是默认为 50G,剩下的都放在了centos-home
下,但是很多自己构建虚拟机操作基本都是在centos-root
下,这样就会导致centos-home
下实际是闲置空间,不能得到很好的利用。这个时候就需要将centos-home
移除,把对应的空间分给centos-root
。
就上面的两个问题,一个是扩容磁盘,一个是空间转移,下面说一下具体解决方案。
1. 环境说明
构建虚拟机工具:VMware
虚拟机系统:Centos 7
2. 扩容磁盘
2.1 指定扩容空间
在 VMware 中右键对应的虚拟机,找到硬盘,点击后,在磁盘实用工具下有个扩展,指定扩展后的容量即可。(在进行此操作前,需要选关闭虚拟机,否则扩展功能是是用不了的)
2.2 扩容设置
上一步扩展完成后,启动虚拟机,按照一下步骤执行。
- 输入
df -h
命令,查看centos-root
空间大小; - 输入
fdisk -l
命令,查看磁盘空间大小,看第一行Disk /dev/sda: xxxxGB
,发现增加的磁盘空间已经增加到了/dev/sda
下面了; - 输入
fdisk /dev/sda
,格式化/dev/sda
,新建/dev/sda3
分区。执行输入信息如下:- Commond(m for help):n(输入值 n,并回车)
- Select (default p):p(可输入 p 或者直接回车)
- Partition number(3,4,default 3):3 (输入 3 或者直接回车)
- First sector (xxxx-xxxx,default xxx):(直接回车)
- Last sector,+sectors or +size(K,M,G) (xxx-xxx, default xxxx):(直接回车)
- Commond (m for help):t (输入 t,并回车)
- Partition number(1-3,default 3):(直接回车)
- Hex code (type L to list all codes):8e(输入 8e,并回车)
- Commond(m for help):w(输入 w,并回车)
第三步配置完成后,使用
reboot
命令重启虚拟机;输入
pvcreate /dev/sda3
,新建物理卷/dev/sda3
;
- 输入
pvdisplay
命令,查看物理卷信息,这个时候就能看打了/dev/sda3
物理卷的存在了;
- 使用
vgextend centos /dev/sda3
将新增加的分区/dev/sda3
加入到根目录分区 centos 中;
- 使用
vgdisplay
查看物理卷组信息,可以看到 Free 中多出了增加的容量空间;
- 使用
lvresize -L +19.99G /dev/centos/root
命令扩展磁盘空间(假设这里是扩展 20G,这里直接使用+20G 可能会报错,原因是空间不够,因此这里使用+19.99G);
- 使用
xfs_growfs /dev/centos/root
重新识别磁盘空间;
- 使用
df -h
查看扩容后的大小。
Tips:按照上面的步骤依次操作即可完成磁盘空间的扩容,看着挺复杂的,操作起来几分钟搞定。
3. 空间转移
在创建虚拟机的时候,如果硬盘空间高于 50G 的时候,会将超过 50G 的部分分配到centos-home
中。
将centos-home
下的空间转移到centos-root
下,具体操作如下。
- 如果
centos-home
中有重要数据,可以实现备份一下,使用tar zcxf /usr/local/home.tar.gz /home
命令打包,放到/usr/local/
目录下。如果没有重要数据,直接忽略此步; - 修改
/etc/fstab
文件,因为这个文件有配置开机扫描/home
,如果不将此文件中扫描的命令注释,可能在下次启动机器的时候,就会出现启动不起来的问题;
vim /etc/fstab
# 注释下面这行
# /dev/mapper/centos-home /home
- 卸载
/home
,执行umount /home
命令; - 删除
/home
所在的lv
,执行命令lvremove /dev/mapper/centos-home
(执行时,需要输入 y 确认);
- 扩展
root
,使用命令lvextend -L +21.1G /dev/mapper/centos-root
,在执行这个命令的时候,需要注意,比如在df -h
命令显示centos-home
是 22G,此时在拓展的时候,实际是没有 22G 的,基本在 21.1G 左右,如果报错,再继续减少即可;
- 重新识别磁盘空间,执行命令
xfs_growfs /dev/centos/root
;
- 使用
df -h
查看扩容后的大小。