最近在做虚拟机部署docker微服务时,发现磁盘内存占满,无法进行操作。
open /var/lib/dpkg/info/libc6:amd64.templates: no space left on device
接下来就写下我在备份虚拟机上如何解决根目录被占满的问题:
1、查看虚拟机磁盘使用情况
df -h
![](https://i-blog.csdnimg.cn/blog_migrate/2d46bfe072de488814cb6dbd74e29ce6.png)
可以看到/dev/mapper/centos-root 已经快满了,这时候就算启动hdfs,也会是强制性的进入安全模式,不让写数据
2、查看哪个目录占用过高
使用 du -h -x --max-depth=1 查看哪个目录占用过高,对于过高目录中的内容适当删减腾出一些空间
cd / && du -h -x --max-depth=1
![](https://i-blog.csdnimg.cn/blog_migrate/94cc3c3a0432b3108b33c012a3822d48.png)
可以看到当前是./cache文件占用内存最多,这是我扩容及删除文件之后的占用情况,在之前是文档占用最多。
找到占用最多的文档,并进入文档,再执行du -h -x --max-depth=1,查看占用内存的文档,删除不必要的文件。
3、查看是否还有文件被删除而进程还活着造成占用空间的现象
若发现空间被占满,就还有这种方式可以查看是否是系统文件删除后还存在进程活着的情况,解决方式就是:
使用lsof |grep delete语句查看对应进程号;
lsof |grep delete
使用kill -9 进程号,杀掉对应进程即可。
![](https://i-blog.csdnimg.cn/blog_migrate/725d942fbaa260b803cccd46fb9aced2.png)
4、虚拟机扩容
4.1、查看磁盘编号
[root@localhost /]# ls /dev/sd*
![](https://i-blog.csdnimg.cn/blog_migrate/80d280e4b0e0ce16472c4d250d0a2746.png)
4.2、创建pv
[root@localhost /]# pvcreate /dev/sda4
![](https://i-blog.csdnimg.cn/blog_migrate/b67219bb346299ee472075b8936023ea.png)
4.3、把pv加入vg中,相当于扩充vg的大小
[root@localhost dyx]# vgs *** 先使用vgs查看vg组
[root@localhost /]# vgs
![](https://i-blog.csdnimg.cn/blog_migrate/24f8fdf7762b48a1569b0b1d4fe2f446.png)
扩展vg,使用vgextend命令
[root@localhost /]# vgextend centos /dev/sda4
4.4、成功把vg卷扩展了,再用lvs查看一下
[root@localhost /]# lvs
![](https://i-blog.csdnimg.cn/blog_migrate/1f944c7cdc8200636172759cc5743988.png)
5、扩展lv,使用lvextend命令
[root@localhost /]# lvextend -L +20G /dev/mapper/centos-root
![](https://i-blog.csdnimg.cn/blog_migrate/a2506ccc3bfcea94cf73a13a197f6102.png)
6、命令使系统重新读取大小
[root@localhost /]# xfs_growfs /dev/mapper/centos-root
![](https://i-blog.csdnimg.cn/blog_migrate/14a48fa9ea3ee031cc4eb17b0ddaf472.png)
7、再使用df -h查看
[root@localhost /]# df -h
![](https://i-blog.csdnimg.cn/blog_migrate/4f957f144ec5d5d7ae4ca42f1e475095.png)
容量已经从17G扩展到37G了,扩容成功。