我用vmware开启了一个虚拟机,虚拟机操作系统是centos7。今天发现磁盘空间不够了,导数据到里面的mysql,提示没有空间,之后mysql也连不上了。这个mysql部署在docker里,结果停止都停止不了,强制停止也不行。无奈之下,重启了docker,万幸还能访问。使用
df -Th
命令查看,发现linux的磁盘空间已经使用了100%。任凭我到处删东西,东拼西凑,也只剩下700M。把牙一咬,决心不辞劳苦,不避风险,给它扩展空间。
给linux虚拟机扩展空间,步骤有二:
1、vmware下给虚拟机分配多一点磁盘
2、在linux虚拟机中启用这些新的磁盘
一、vmware下为虚拟机扩展磁盘
将虚拟机关机,然后在vmware中右击虚拟机图标,选“设置”-“硬盘”-“实用工具”,扩展虚拟机的磁盘空间。比如我之前是48G,现在扩展到100G。
二、linux虚拟机中扩展磁盘
1、查看当前磁盘情况
[admin@localhost ~]$ sudo fdisk -l
磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000de48e
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
/dev/sda3 41943040 104857599 31457280 83 Linux
磁盘 /dev/mapper/centos-root:49.4 GB, 49387929600 字节,96460800 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
从 fdisk -l 的输出可以看出,虚拟机的磁盘大小确实已经扩展到 107.4GB,但新增加的空间尚未被分配到任何分区。/dev/sda3 结束于扇区 104857599,而总共有 209715200 个扇区,这意味着还有大约 50GB 的空间未分配。
2、将新加入的磁盘空间创建为新分区
我需要在这未分配的空间上创建一个新分区,然后将其加入到 LVM 以扩展现有的逻辑卷。
1)使用 fdisk 创建新分区
(1)进入 fdisk:
sudo fdisk /dev/sda
(2)输入 n 来创建新分区
(3)选择主分区(p),然后选择分区号(系统自动填上 4,因为之前已经有了3个分区)。
(4)一直按回车,使用默认的起始扇区和终止扇区,这样可以使用所有剩余的空间。
(5)输入 w 保存更改并退出。
2) 刷新内核分区表
sudo partprobe
或者重新启动虚拟机
3) 将新分区初始化为 LVM 物理卷
新分区应该会出现在 /dev/sda4,这时可以将其初始化为 LVM 物理卷:
sudo pvcreate /dev/sda4
4) 将新物理卷添加到卷组
将新创建的物理卷添加到现有的卷组 centos 中:
sudo vgextend centos /dev/sda4
5)扩展逻辑卷
现在,你可以将剩余的空间分配给逻辑卷 centos-root:
sudo lvextend -r -l +100%FREE /dev/centos/root
-r 选项会自动调整文件系统大小,+100%FREE 会将所有可用空间分配到逻辑卷中。
6)验证扩展
完成后,使用以下命令确认根分区是否已经扩展,检查 /dev/mapper/centos-root 是否已经扩展并包含新增的空间。结果显示大功告成。
df -h
参考文章:
虚拟机扩容(/dev/mapper/centos-root下的空间不足)