linux中设备上没有空间

时间:2016-07-20 19:51:24   收藏:0   阅读:1406

在linux中设备空间有两个条件决定的:硬盘容量inode


硬盘容量

即硬盘可用容量


inode

即索引节点编号(记录文件的大小,佣有者,权限,区块地方等信息可以通过 stat 命令查看),每个分区中都会有固定大小的inode容量,每个inode节点也会占用硬盘空间,一般是128字节或256字节,inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode,要查看各分区的inode情况可以通过 df -i 查看


硬盘与inode其中一项超额就会造成 设备上没有空间 异常错误,当出现这类错误基本上可以从这两个方面去考虑,一般使用命令  df:

df --help

用法:df [选项]... [文件]...
显示每个文件所在的文件系统的信息,默认是显示所有文件系统。

长选项必须使用的参数对于短选项时也是必需使用的。
  -a, --all             include dummy file systems
  -B, --block-size=SIZE  use SIZE-byte blocks
      --direct          show statistics for a file instead of mount point
      --total           produce a grand total
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
  -H, --si              likewise, but use powers of 1000 not 1024
  -i, --inodes        显示inode 信息而非块使用量
  -k            即--block-size=1K
  -l, --local        只显示本机的文件系统
      --no-sync        取得使用量数据前不进行同步动作(默认)
  -P, --portability    使用POSIX 兼容的输出格式
      --sync        取得使用量数据前先进行同步动作
  -t, --type=类型    只显示指定文件系统为指定类型的信息
  -T, --print-type    显示文件系统类型
  -x, --exclude-type=类型    只显示文件系统不是指定类型信息
  -v            (忽略)
      --help        显示此帮助信息并退出
      --version        显示版本信息并退出

所显示的数值是来自 --block-size、DF_BLOCK_SIZE、BLOCK_SIZE
及 BLOCKSIZE 环境变量中第一个可用的 SIZE 单位。
否则,默认单位是 1024 字节(或是 512,若设定 POSIXLY_CORRECT 的话)。

SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:
KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。

请向bug-coreutils@gnu.org 报告df 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告df 的翻译错误
要获取完整文档,请运行:info coreutils ‘df invocation‘



判断硬盘满:(发现有占用率达100% 就可以断定该分区满了)

df -h

判断inode满:(发现有占用率达100%就可以断定该分区碎片文件超多)

df -ia


硬盘满了一般删除不要的临时文件,清空日志文件等不需要的文件即可(最好同时看下inode使用情况)。


inode满了一般就是垃圾小文件越多造成的,linux下有很多服务会生成日志文件,如果处理不当,几年下来删除都是个头痛事(上万文件后 rm 使用就困难,甚至rm无法全部删除)。常见 crontab 定时服务就会产生邮件日志,一般不需要邮件的可在 crontab -e 中最上面添加一行  MAILTO=""  关闭邮件发送。


当不知道有哪些目录中存在大量碎片文件时,可通过命令:(查找出超过10M的目录,再行处理)

find / -type d -size +10M

或者使用命令:(找出目录下文件总数,可能需要执行多次,直到找出具体的目录)

cd /
find */ ! -type l | cut -d / -f 1 | uniq -c


当找到的目录中存在上百万文件时 rm 是无法一次性删除的,可以使用rsync命令来删除:

mkdir /tmp/del_path  #创建临时空目录
rsync --delete  -a -H -v  /tmp/del_path/  /val/logs/   #删除/val/logs/下所有文件


本文出自 “秋风扫落叶” 博客,请务必保留此出处http://php2012web.blog.51cto.com/5585213/1828097

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!