在Linux中设备空间有两个条件决定的:硬盘容量 和 索引节点(Inode)
- 硬盘容量: 即硬盘可用容量
- Inode : 即索引节点编号(记录文件的大小、拥有者、权限、区块地方等信息,可以通过 stat 命令查看)。每个分区中都会有固定大小的Inode容量,每个Inode节点也会占用硬盘空间,一般是128 bits 或256 bits。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 bits (或是 512bits,若设定 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使用情况)。
判断inode满:(发现有占用率达100%就可以断定该分区碎片文件超多)
df -ia
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/下所有文件