分享个人 Full-Stack JavaScript 项目开发经验
Virtualbox 虚拟机是学习运维工作重要的工具,例如它可以同时开启多台虚拟机来模拟集群系统。不过,随着软件工具和数据的增加,尤其像 Gitlab 这种消耗大量硬盘的应用,硬盘最终会被消耗尽,并返回系统错误信息:no space left on device。
本文将简单介绍一些关于存储的基本概念和 Linux 系统下的一些常用硬盘命令,以及扩展 Virtualbox 硬盘的步骤。文中例子基于CentOS7系统,Virtualbox 版本为v6.1.6。
逻辑卷管理(Logical Volume Manager,LVM)
LVM 是 Linux 环境下对硬盘分区进行管理的一种机制,它是建立在硬盘或分区之上的逻辑层。
物理卷(Physical Volume,PV)
PV 处于 LVM 系统的最底层,是 LVM 的基本储存逻辑块。
卷组(Volume Group,VG)
VG 由一个或者多个 PV 组成。一个 LVM 系统中可以有一个或者多个 VG。
逻辑卷(Logical Volume,LV)
逻辑卷即从卷组中"切出"的一块空间,并且可以伸缩。文件系统建立在逻辑卷之上。
查看文件系统可用空间情况:
df -h
查看硬盘、分区和逻辑卷等情况:
lsblk
查看硬盘分区信息:
fdisk -l
查看物理卷信息:
pvdisplay
查看卷组信息:
vgdisplay
查看逻辑卷信息:
lvdisplay
扩展逻辑卷至最大可用空间,并在扩展后调用 fsadm 扩展文件系统的尺寸:
lvextend -l+100%FREE <lv-name> -r
系统提示 no space left on device 的原因是所在逻辑卷空间将近耗尽:
下面开始扩展虚拟机的硬盘。
1、硬盘扩展有风险,请先备份重要数据,或导出整个虚拟机。
2、在关闭虚拟机情况下,从 Virtualbox 用户界面的管理 -> 虚拟介质管理中,调整对应虚拟机的虚拟硬盘大文件大小:
3、重新开启虚拟机,我们将会看到硬盘大小已经变化,但是分区大小仍然未扩展:
4、再次关闭虚拟机,下载分区工具GParted镜像(gparted-live-1.1.0-1-amd64.iso),添加 iso 镜像到虚拟机光驱动中,并确保光驱先于硬盘启动:
5、重新启动虚拟机,确认所有默认选项,直到进入 GParted 应用程序界面。然后先停用要扩展的逻辑卷,再扩展它。最后保存,并重启虚拟机:
6、进入系统后,查看分区情况,可见分区已被扩展:
但是逻辑卷大小还未更改,这时候需要使用 LVM 命令扩展逻辑卷至最大可用空间,并在扩展后调用 fsadm 扩展文件系统的尺寸:
lvextend -l+100%FREE /dev/centos/root -r
最后检验结果: