查看磁盘空间

在系统使用中,经常会遇到no space left on device 磁盘空间不足的情况, 下面来详细的介绍一下产生这种情况的几种原因及解决办法:

1. 首先我们要清楚inode 和 block的概念:

inode在格式化创建文件系统的时候诞生,用来存放文件的属性信息,存放着block的位置,没有文件名,创建一个非空文件占用一个inode和至少1个block

block是实际存放数据的位置,block大小 1k 4k 8k centos 6.x(分区大于500M 默认是4k),文件很大的话占用多个block, 文件非常小的时候1k block剩余的空间不能继续使用,所以系统中block消耗更快

所以磁盘慢了就分为,inode满了,和block满了,以及一种特殊的情况,下面我们来具体分析,以及对应的解决方案

查看是否是block满了

 
  1. [root@test-os testuser]# df -h ###查看所有block使用情况

  2. Filesystem Size Used Avail Use% Mounted on

  3. /dev/sda3 8.8G 8.8G 0 100% /

  4. tmpfs 931M 0 931M 0% /dev/shm

  5. /dev/sda1 190M 40M 141M 22% /boot

  6. [root@test-os testuser]# du -sh /usr/* |grep G ###查找大文件

  7. 7.3G /usr/local

  8. [root@test-os testuser]# du -sh /usr/local/* |grep G

  9. 7.3G /usr/local/bin

  10. [root@test-os testuser]# du -sh /usr/local/bin/* |grep G

  11. 7.3G /usr/local/bin/1g

  12.  
  13. [root@test-os testuser]# \rm -f /usr/local/bin/1g ###删除大文件

  14. [root@test-os testuser]#

  15. [root@test-os testuser]# df -h ###接着查看发现已经解决

  16. Filesystem Size Used Avail Use% Mounted on

  17. /dev/sda3 8.8G 1.5G 6.9G 18% /

  18. tmpfs 931M 0 931M 0% /dev/shm

  19. /dev/sda1 190M 40M 141M 22% /boot


查看是否inode满了(df -h发现还有空间)

 
  1. [root@test-os logs]# touch {1..118}.txt

  2. [root@test-os logs]# touch {1..118}.txt

  3. touch: cannot touch `118.txt': No space left on device

  4. [root@test-os logs]# df -i ###查看inode使用情况

  5. Filesystem Inodes IUsed IFree IUse% Mounted on

  6. /dev/sda3 593344 56998 536346 10% /

  7. tmpfs 238282 1 238281 1% /dev/shm

  8. /dev/sda1 51200 39 51161 1% /boot

  9. /tmp/1m 128 128 0 100% /app/logs

  10. [root@test-os logs]# pwd

  11. /app/logs

  12. [root@test-os logs]# \rm -f *.txt ###如果小文件太多,采用a*.txt b*.txt 一批一批的删

  13. [root@test-os logs]# df -i ###接着查看

  14. Filesystem Inodes IUsed IFree IUse% Mounted on

  15. /dev/sda3 593344 56998 536346 10% /

  16. tmpfs 238282 1 238281 1% /dev/shm

  17. /dev/sda1 51200 39 51161 1% /boot

  18. /tmp/1m 128 11 117 9% /app/logs

  19. ###如果不知道小文件都在哪里怎么查找?

  20. ###查找系统中 目录大小大于1M(目录一般大小为4K,所以目录要是大了那么文件必然很多)

  21. [root@localhost testuser]# find / -size +4k -type d |xargs ls -ldhi

  22. 11 drwx------ 2 root root 12K Sep 23 00:49 /boot/lost+found

  23. 946 drwxr-xr-x 12 root root 4.1K Sep 22 17:53 /dev

  24. 1114113 drwxr-xr-x 88 root root 12K Sep 22 19:55 /etc

  25. 262145 drwxr-xr-x 13 root root 12K Sep 22 18:59 /lib


查看是不是文件被占用一直没被彻底删除(特殊原因),这种情况往往是容易被忽略,也是让人郁闷的,因为你会发现df -h明明已经有空间了,但是就是放不进去东西

 
  1. [root@test-os ~]# lsof |grep deleted

  2. rsyslogd 1250 root 1w REG 8,3 4888889358 140789 /var/log/messages (deleted)

  3.  
  4. [root@test-os ~]# #lsof 显示出系统中被打开的文件

  5. [root@test-os ~]# #第一列 软件/服务的名称

  6. [root@test-os ~]# #第八列 文件的大小

  7. [root@test-os ~]# #第10列 文件的名字

  8. [root@test-os ~]# #第11列 标记(硬链接数为0 进程调用数不为零 就会有 delete)

  9.  
  10. ####重启对应的服务 释放磁盘空间

  11. [root@test-os ~]# /etc/init.d/rsyslog restart

  12. Shutting down system logger: [ OK ]

  13. Starting system logger: [ OK ]

  14.  
  15. [root@test-os ~]# df -h

  16. Filesystem Size Used Avail Use% Mounted on

  17. /dev/sda3 8.8G 1.5G 6.9G 18% /

  18. tmpfs 931M 0 931M 0% /dev/shm

  19. /dev/sda1 190M 40M 141M 22% /boot

  20. /tmp/1m 1003K 19K 933K 2% /app/logs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值