阿里云运行Laravel项目导致磁盘 Inode 用满导致的故障解决办法
Song •
1670 次浏览 •
0个评论 •
2021年08月25日
一、问题背景
在阿里云ubuntu
服务器上运行laravel
项目
二、发现问题
客户反应服务打不开;查看日志,发现有大量的failed to open stream: No space left on device
的错误。使用df -h
查看,磁盘还有 30G
空间,按道理不应该出现这个错误。
Filesystem Size Used Avail Use% Mounted on
udev 3.8G 0 3.8G 0% /dev
tmpfs 770M 692K 769M 1% /run
/dev/vda1 40G 5.9G 32G 16% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 770M 0 770M 0% /run/user/0
三、查找问题
磁盘空间明明还有,但提示空间不足。遂使用df -i
查看了一下inode
的使用情况。
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 977277 414 976863 1% /dev
tmpfs 984635 593 984042 1% /run
/dev/vda1 2621440 2621433 7 100% /
tmpfs 984635 2 984633 1% /dev/shm
tmpfs 984635 2 984633 1% /run/lock
tmpfs 984635 18 984617 1% /sys/fs/cgroup
tmpfs 984635 21 984614 1% /run/user/0
发现inode
已经用满了,从而导致系统无法创建文件。以至于系统抛出No space left on device
错误。
1、什么是inode
Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
参考 理解inode
2、找到什么占用了inode
我们通过Liux
命令查询占用问题,查询当前目录下大于800M的文件
find . -type f -size +800M
一层层的查找最终到larave项目下找到storeage/framework/cache/data
目录下,发现存在大量的文件夹,里面存储的是大量的小文件(一个文件只有几 KB)。
这些大量的小文件并没有占用多少block
空间,却吧inode
空间占满了。
四、解决问题
停止nginx
、 php-fpm
,进入data
目录,执行:
rm -rf storeage/framework/cache/*
或者到项目下执行
php artisan cache:clear
删除过程应该时间比较长,没办法慢慢删吧。后续你需要监控inode
空间占用经常清理。
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
热门文章
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
-
Mac 安装mysql并且配置密码 2024-11-20
-
阿里云不同账号(跨账号)ECS服务器同地域如何实现免费内网互通? 2024-11-12
-
electron安装使用better-sqlite3并解决NODE_MODULE_VERSION xxx. This version of Node.js requires 2024-11-06
-
Zerotier+Moon+Nginx实现内网穿透搭建网站 2024-08-23
阿里云不同账号(跨账号)ECS服务器同地域如何实现免费内网互通?