No space left on device

如果向磁盘写入数据提示如下错误:No space left on device,通过df -h 查看磁盘空间,发现没满,请问可能原因是什么?请问企业应用中什么情况下会导致这个问题发生?


这个问题是由于磁盘inode被全部占用导致的。当企业中小文件特别多(一般都是<4k)的时候容易发生这个问题。


下面来看一下具体分析:

  1. 磁盘被分区格式化为ext3/ext4文件系统后会生成一定数量的inode和block;
  2. inode称为索引节点,它的作用是存放文件的属性信息以及作为文件的索引;
  3. ext3/ext4 文件系统的block存放的是文件的实际内容;
  4. 在ext3/ext4 文件系统下,每个block的大小一般有1k,2k,4k等。其中引导分区等为1k,其他普通分区为4k(CentOS6);
  5. 文件系统中Block的数量要大于inode的数量。

下面通过模拟环境来看一下,Block和inode分别被占满的情况

  • 模拟环境(VMware12Pro+CentOS6.8 2.6.32-642.el6.x86_64)
mkdir -p /app/logs
dd if=/dev/zero of=/dev/sdc bs=8k count=10
ls -l /dev/sdc
mkfs.ext4 /dev/sdc
tune2fs -c -1 /dev/sdc
mount -o loop /dev/sdc /app/logs/
[[email protected] logs]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       6.9G  1.9G 4.7G  29% /
tmpfs           491M     0 491M   0% /dev/shm
/dev/sda1       190M   33M 147M  19% /boot
/dev/sdc         73K 2.0K   67K   3% /app/logs

磁盘Block被占满的情况

[[email protected] ~]# cp /bin/ls /app/logs/

cp: writing `/app/logs/ls‘: No space left on device

[[email protected] ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       6.9G  1.9G 4.7G  29% /

tmpfs           491M     0 491M   0% /dev/shm

/dev/sda1       190M   33M 147M  19% /boot

/dev/sdc         73K  70K     0 100% /app/logs

磁盘inode被占满的情况

[[email protected] ~]# cd /app/logs/

[[email protected] logs]# touchstr{1..10}

touch: cannot touch `str5‘: No space left on device

touch: cannot touch `str6‘: No space left on device

touch: cannot touch `str7‘: No space left on device

touch: cannot touch `str8‘: No space left on device

touch: cannot touch `str9‘: No space left on device

touch: cannot touch `str10‘: No space left ondevice

[[email protected] logs]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       6.9G  1.9G 4.7G  29% /

tmpfs           491M     0 491M   0% /dev/shm

/dev/sda1       190M   33M 147M  19% /boot

/dev/sdc         73K 2.0K   67K   3% /app/logs     #磁盘空间未满

[[email protected] logs]# df -i

Filesystem     InodesIUsed  IFree IUse% Mounted on

/dev/sda3      462384 58823403561   13% /

tmpfs          125517     1 125516   1% /dev/shm

/dev/sda1       51200    38 51162    1% /boot

/dev/sdc           16   16      0  100% /app/logs      #磁盘inode被占满

时间: 2024-10-31 17:20:40

No space left on device的相关文章

java.io.IOException: No space left on device 错误

今天碰到比较奇怪的问题: 7/05/14 19:20:24 INFO util.Utils: Fetching http://192.168.31.160:33039/jars/spark_study_java-0.0.1-SNAPSHOT-jar-with-dependencies.jar to /tmp/spark-446068a4-aaa4-4277-b009-908bf0d4ecac/executor-dcc3175b-7d19-4485-81e1-bf31a83a66b4/spark-

“no space left on device”(磁盘空间不足)问题(续)

1.问题描述 no space left on device(磁盘空间不足) 2.文件删除原理 (1)硬链接数为0(所有硬链接均被删除) (2)进程调用数为0(没有进程在调度文件) 3.原因分析 硬链接数为0,进程调度数不为0 4.过程演示 (1)创建大文件 [[email protected] ~]# seq 500000000 > /var/log/messages (2)查看磁盘使用情况 [[email protected] ~]# df -h Filesystem     Size  U

Inode占满导致No space left on device解决

线上有一台web服务器磁盘检测告警了,提示空间不足,登到服务器查看 touch:cannot touch `furm.html': No space left on device 使用df -h命令查看发现 /data/web分区只使用了2%,创建文件却提示磁盘空间不足,按道理不会出现这种情况的.怀疑是inode耗尽导致. 分析导致的原因:使用df –i查看发现inode已经耗尽,则系统上将不能创建文件 查找原因并解决 /data/web是线上业务数据目录,其中有个程序产生大量的小文件造成的.可

Linux出现cannot create temp file for here-document: No space left on device的问题解决

在终端输入:cd /ho 按tab键时,显示错误: bash: cannot create temp file for here-document: No space left on device 这是由于该磁盘的空间已经满了,这时候可以进行扩容,或者将该磁盘的部分目录迁移到别的磁盘. 以下为解决思路,查找最大的文件,然后将其干掉: 1.使用命令df -h 查看硬盘空间 2.命令top查看cpu及内存 3.使用命令du -h –max-depth=1 /var/log/* 查看/var/log路

关于“no space left on device”(磁盘空间不足)问题

1.首先介绍两个命令 df -h查看磁盘使用情况 df -i 查看inode使用情况 2.block满了 通常解决方法是删除大文件,不要直接删除,先确认数据是否重要,否则就掉坑里了. [[email protected] ~]# cd /app/logs/ [[email protected] logs]# ls -lh /bin/ls -rwxr-xr-x. 1 root root 107K Mar 23 02:52 /bin/ls [[email protected] logs]# df -

linux no space left on device的解决的方法(iNode满导致)

今天在腾讯云的server被攻击后,apache启动报错,查找原因发现是磁盘空间不够no space left on device, 诡异的是df命令磁盘占用仅55% 继续查找原因.发现是iNode已满.即没有索引空间 这就好办了,首先定位哪个文件夹占用iNode最多,命令例如以下: find */ ! -type l | cut -d / -f 1 | uniq -c 定位完毕.清理文件夹,整个世界都清净了

170318 11:44:26 [ERROR] Can&#39;t start server: can&#39;t create PID file: No space left on device

数据库挂了.打开远程,进了系统,service mysqld stop 失败.service mysqld start等了好大一会,提示Timeout error occurred trying to start MySQL Daemon 出现Can't start server: can't create PID file: No space left on device这个错误. 提示磁盘空间不足 后用df -h 命令查看 竟然发现磁盘容量全部用完了,于是要查看是谁占用了用命令:find /

linux no space left on device的解决办法(iNode满导致)

今天在腾讯云的服务器被攻击后,apache启动报错,查找原因发现是磁盘空间不够no space left on device, 诡异的是df命令磁盘占用仅55% 继续查找原因,发现是iNode已满,即没有索引空间 这就好办了,首先定位哪个目录占用iNode最多,命令如下: find */ ! -type l | cut -d / -f 1 | uniq -c 定位完成,清理目录,整个世界都清净了 linux no space left on device的解决办法(iNode满导致),布布扣,b

生产环境下案例 No space left on device (inode使用满的情况)

第一种情况: 问题: 如果想磁盘写入数据提示如下错误: No space left on device. 通过df -h查看磁盘空间,发现没满,请问可能原因是什么? 解答: 可能是inode数量被消耗尽了. df -i查看是否耗尽了inode数量. 企业工作中邮件临时队列/var/spool/clientmquene这里很容易被大量小文件占满导致No space left on device的错误. clientmquene目录只有安装了sendmail服务才会有.CentOS5.X默认会装se

No space left on device: Couldn&#39;t create accept lock

原因: (1) 确认是否是硬盘空间不足:结果发现不是空间的问题: (2) 网上查看了下,发现是ipc不足.可以使用ipcs -s(|grep apache的group) 处理: (1) 可以使用$ ipcrm -s <semid>清理指定 semaphore (2) 也可以使用下面命令,清理所有的semaphore, 注:替换nobody为apache对应的用户名 for semid in `ipcs -s | grep nobody | cut -f2 -d" "`; d