现象:
[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