/dev/mapper/VolGroup00-root 满了关于inodes占用100%的问题及解决方法

现象
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   50G   48G     0 100% /
tmpfs                         1.7G   80K  1.7G   1% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot
/dev/mapper/VolGroup-lv_home  848G  2.3G  803G   1% /home


解决方法

1、查找占空间大,且没用的文件或文件夹,删除掉。

find / -size +100M -exec ls -lh {} \;


2、对该分区扩容,方法如下:

目标:将VolGroup-lv_home缩小到20G,并将剩余的空间添加给VolGroup-lv_root
 
1.首先查看磁盘使用情况
[root@localhost ~]# df -h
文件系统 容量  已用 可用  已用% 挂载点
Filesystem              Size  Used Avail Use% Mounted on  
/dev/mapper/VolGroup-lv_root 154G  7.9G  139G   6% /
tmpfs                  1.9G  100K  1.9G   1% /dev/shm
/dev/sda1              485M   69M  391M  15% /boot
/dev/mapper/VolGroup-lv_home 299G  984M  283G   1% /home
 
2、卸载/home
[root@localhost ~]# umount /home
umount /home 如果提示无法卸载,则是有进程占用/home,使用如下命令来终止占用进程:
[root@localhost ~]# fuser -km /home  
 
3、调整分区大小
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G
如果提示运行“e2fsck -f /dev/mapper/VolGroup-lv_home”,则执行相关命令: 
[root@localhost ~]# e2fsck -f /dev/mapper/VolGroup-lv_home 然后重新执行命令:
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G
注:resize2fs 为重新设定磁盘大小,只是重新指定一下大小,并不对结果有影响,需要下面lvreduce的配合
 
4、挂载上/home,查看磁盘使用情况
[root@localhost ~]# mount /home
[root@localhost ~]# df -h
 
5、设置空闲空间
使用lvreduce指令用于减少LVM逻辑卷占用的空间大小。可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。记得输入 “y”
[root@localhost ~]# lvreduce -L 20G /dev/mapper/VolGroup-lv_home
注:lvreduce -L 20G的意思为设置当前文件系统为20G,如果lvreduce -l 20G是指从当前文件系统上减少20G
使用lvreduce减小逻辑卷的大小。注意:减小后的大小不能小于文件的大小,否则会丢失数据。 
 
可以使用vgdisplay命令等查看一下可以操作的大小。也可以是用fdisk -l命令查看详细信息。
[root@localhost ~]# vgdisplay
注:vgdisplay为显示LVM卷组的元数据信息
 
6.把闲置空间挂在到根目录下
[root@localhost ~]# lvextend -L +283G /dev/mapper/VolGroup-lv_root
注:lvextend -L +283G为在文件系统上增加283G
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_root
 
7、检查调整结果
[root@localhost ~]# df -h

[场景]

/dev/mapper/VolGroup00-LogVol00 是逻辑卷/ 根目录才是实际挂载的目录。根分区都塞满了,自己清理一些垃圾文件或者加硬盘在线扩容、主要看看/tmp /var目录下的一些临时文件和一些日志文件,选择些的进行清理给你个命令`看下哪个目录下东西大find / -size +10M -exec ls -lh {} \;

df -i

​for i in ./*; do echo $i; find $i | wc -l; done  查文件数量

今天nagios报警,一台服务器的disk满了,使用du -sh * 或 du -sh /* 查看目录的大小,查找占用空间大的目录/var/spool/clientmqueue....

然后我就想/var/spool/clientmqueue这个目录干嘛用的,纠结了半天,谷歌了下,原来/var/spool/clientmqueue是如果系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。

服务器上确实有cron定时执行数十个脚本,而且都没有设置输出定向,日积月累的文件都被保存在/var/spool/clientmqueue目录下面乐 = =.

解决方法:在cron的自动执行语句后加上> /dev/null 2>&1例:4 3 * * * /usr/bin/w > /dev/null 2>&1这样就OK拉,就不会写到那个目录下了....

在这里说一点,/var/spool/clientmqueue目录文件太多,rm -rf *时候会提示:

“-bash: /bin/rm: Argument list too long“..意思是参数太长,rm 干不了。可以用ls | xargs rm -f这个命令将/var/spool/clientmqueue目录下所有文件删除。

OK。清理完毕~

情况描述:今天我们邮件服务器收发不了邮件了,而且连接到服务器上开启服务都开不了,起始以为磁盘空间不足,df 看了一下

发现空间是足够的,然后df -i 查看了下inodes,发现根目录下的inodes值使用率为100%了

解决方法:通过以下脚本进行检查,查看到底哪个目录下面的文件最多:

for i in /*; do echo $i; find $i | wc -l; done(如果确定是某个目录下面,则/转换为该目录绝对路径,如/var/spool,则使用for i in /var/spool/*; do echo $i; find $i | wc -l; done)

最终发现/var/soppl目录最多。然后又进一步确定是/var/spool/amavisd/quarantine 目录下面有上百万个文件,机器已经无法正常显示了,后来百度查看了下这个目录是邮件服务器,处理垃圾邮件活病毒邮件隔离的,明白原因了,删除该目录下所有文件;使用xargs命令来删除数量比较多的文件:

ls | xargs -n 10 rm -rf

执行了大约10多小时之后,最终解决问题。

操作命令:

for i in /var/spool/*; do echo $i; find $i | wc -l; done

[root@L-AP-3-37 ~]# cd /var/spool/clientmqueue

[root@L-AP-3-37 clientmqueue]# ls | xargs rm -f

你可能感兴趣的:(/dev/mapper/VolGroup00-root 满了关于inodes占用100%的问题及解决方法)