解决磁盘有空间但创建不了文件-修复服务器文件系统
解决磁盘有空间但创建不了文件-修复服务器文件系统
解决磁盘有空间但创建不了文件
环境:在一台配置较低的 Linux 服务器(内存、硬盘比较小)的/data 分区内创建文件时,系统提示磁盘空间不足,用 df -h 命令查看了一下磁盘使用情况,发现/data 分区只使用了 80%,还有 1.9G的剩余空间,但是无法创建新的文件。当时使用的是 root 用户。服务器没有被黑。
[root@Hengji ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 10G 8.0G 1.9G 80% /
常识: 只要权限够,磁盘上有空间一定可以创建文件。 这个是错的。
排查:
[root@Hengji ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda3 5242880 5242880 0 100% /
#后来用 df -i 查看了一下/data 所在的分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。
查找原因:
/data/cache 目录中存在数量非常多的小字节缓存文件,占用的 Block 不多,但是占用了大量的 inode。
解决方案 1:
删除/data/cache 目录中的部分文件,释放出/data 分区的一部分 inode。
解决方案 2 :
在/data 备份好一些文件,然后删除这些文件,释放一些 inode,然后创建一个文件夹/data/cache2。在 cache2 下挂载一个新分区: sda4 ,下次写数据需要写到新分区 cache2 目录下。
修复服务器文件系统
环境:公司服务器突然断电后,再次启动后,报如下错误。
解决方法:
输入 root 密码 123456
fsck -f -y /dev/sda1 #把引导分区文件系统修复一下 # 慎用,给领导说一声
fsck -f -y /dev/sda3 #把根分区文件系统修复一下 # 慎用,给领导说一声
reboot 重启
fsck 参数:
-y 对所有问题都回答 “yes”
-f 即使文件系统标记为 clean 也强制进行检查