No space left on device

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No space left on device相关的知识,希望对你有一定的参考价值。

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


这个问题是由于磁盘inode被全部占用导致的。当企业中小文件特别多(一般都是<4k)的时候容易发生这个问题。磁盘空间是否满了,是由两项参数决定的第一个是inode是否满了第二个block是否满了。


下面来看一下具体分析:

  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被占满


以上是关于No space left on device的主要内容,如果未能解决你的问题,请参考以下文章

No space left on device

No space left on device

linux服务器报No space left on device错误的解决过程记录

apache无法启动报错No space left on device

no space left on device磁盘空间不足

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