用虚拟机玩Linux时经常发生Linux硬盘空间不足的情况,而宿主机硬盘空间又吃紧,怎么办?
很多童鞋给Linux分配的硬盘是8G,而安装Linux时采用默认分区方式的话swap分区有2G。swap分区即交换分区,类似于Windows的虚拟内存pagefile.sys。当内存不足时,把一部分硬盘空间虚拟成内存使用。而内存够用时则排不上用场。
对于实体机Linux,这2G的swap空间一般算不了什么,但对硬盘只有8G的虚拟机Linux来说,2G就很宝贵了。所以——减小Linux swap分区收回空间。
减小swap分区的方法:
1、先“df -h”和“fdisk - l”命令查看一下当前分区情况,如图。根分区为5.5G。
图中/dev/mapper/vg_"hostname"-lv_swap就是swap分区,为2G。swap分区亦可用free命令查看到。
![](/d/20211018/5b57f9948859b35c8c1c14d205ec7deb.gif)
![](/d/20211018/2f346ed2c935790791ed0e416a4e26f5.gif)
2、用swapoff命令关闭交换分区:
# swapoff /dev/mapper/vg_"hostname"-lv_swap
然后用free命令检查下swap是否变为0了。
![](/d/20211018/2cb4ef90dfdd153fe97cf2e0fcbc9511.gif)
3、用lvreduce命令把swap分区减小1500M:
# lvreduce -L -1500M /dev/mapper/vg_"hostname"-lv_swap
输入y,确定,看到提示swap减小至516M。
![](/d/20211018/e9b93df6cfc88edfb9b5fa8cb9a5de51.gif)
4、重新把/dev/mapper/vg_"hostname"-lv_swap设置为swap分区:
# mkswap /dev/mapper/vg_"hostname"-lv_swap
![](/d/20211018/c001186eda6191c54e392f2927147bcc.gif)
5、swapon开启swap分区:
# swapon /dev/mapper/vg_"hostname"-lv_swap
然后用free命令检查下swap是否变为516M了。
![](/d/20211018/bbdb751bdae298d34f2d934214ad5448.gif)
扩展根分区把回收的空间利用起来
1、此时回收的1500M是闲置的自由空间,还得将它分配给根分区。还好现在的Linux分区一般是采用LVM分区方式,可以很方便地进行分区的动态扩展,不破坏现有数据。笔者这里是使用图形LVM(Logical Volume Manager)工具进行分区的动态扩展(如果没有安装此工具则需要装一下system-config-lvm的rpm包)。高手亦可在命令行下完成。
# system-config-lvm
展开“逻辑视图”->“lv_root”,点击“编辑属性”。
2、点击“使用剩余”,可以看到5.54G增大至7.0G了。然后“确定”。
![](/d/20211018/dc8e87a5149b1b300aac0bf81b6b7f3c.gif)
3、回到LVM界面,查看到自由空间变为0 了。
4、回到命令行模式用“df -h”命令检查一下,可以看到根分区增大至6.9G了。动态扩展无需重启,立即生效,大功告成!
![](/d/20211018/5102859a2ac8aa2f26fd2c91eddb3d6d.gif)