问题描写叙述

在storm測试环境集群上上nimbus和supervisor自己主动挂调。重新启动时显示no space for device,也不能创建,加入文件及文件夹,df -h查看


ilesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 2.9G 35G 8% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/vdc1 100G 3.1G 92G 4% /home
/dev/vdd1 50G 180M 48G 1% /home/xxx/hard_disk/0
/dev/vde1 50G 180M 48G 1% /home/xxx/hard_disk/1
/dev/vdf1 50G 180M 48G 1% /home/xxx/hard_disk/2
/dev/vdg1 50G 180M 48G 1% /home/xxx/hard_disk/3
/dev/vdh1 50G 180M 48G 1% /home/xxx/hard_disk/4

显示空间使用非常少,空间足够, df -i 显示


Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 2621440 75783 2545657 3% /
tmpfs 1007672 1 1007671 1% /dev/shm
/dev/vdc1 102400 85159 85159 100% /home
/dev/vdd1 51200 13 51187 1% /home/xxx/hard_disk/0
/dev/vde1 51200 18 51182 1% /home/xxx/hard_disk/1
/dev/vdf1 51200 18 51182 1% /home/xxx/hard_disk/2
/dev/vdg1 51200 18 51182 1% /home/xxx/hard_disk/3
/dev/vdh1 51200 18 51182 1% /home/xxx/hard_disk/4

发现inode使用率达到100%,这才找到问题

什么是inode

一、inode

硬盘的最小存储单位叫做”扇区”(Sector)。每一个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性读取一个”块”(block),每一个”块”(block)由八个连续的sector组成。

这样的由多个扇区组成的”块”。是文件存取的最小单位。”块”的大小。最常见的是4KB,文件数据都储存在”块”中。那么还必须找到一个地方储存文件的元信息。比方文件的创建者、文件的创建日期、文件的大小等等。这样的储存文件元信息的区域就叫做inode,中文译名为”索引节点”。

每一个文件都有相应的inode,里面包括了与该文件有关的一些信息。

二、inode的内容

inode包括文件的元信息,详细有以下内容:

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、运行权限

  * 文件的时间戳,共同拥有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名称指向这个inode

  * 文件数据block的位置

能够用stat命令查看某个文件的inode信息:

[root@stream-e5s3c home]# stat apps
File: `apps'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 4123 Links: 3
Access: (0700/drwx------) Uid: ( 456/ apps) Gid: ( 456/ apps)
Access: 2015-03-14 04:02:07.069500045 +0800
Modify: 2015-03-13 15:35:57.886985112 +0800
Change: 2015-03-13 15:36:28.209482045 +0800

三、inode的大小

inode也会消耗硬盘空间。所以硬盘格式化的时候,操作系统自己主动将硬盘分成两个区域。一个是数据区,存放文件数据;还有一个是inode区(inode table),存放inode所包括的信息。

每一个inode节点的大小,通常是128字节或256字节。

inode节点的总数,在格式化时就给定。通常是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每一个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB。占整块硬盘的12.8%。

使用df -i能够查看每一个硬盘分区的inode总数和已经使用的数量

解决的方法

进入到home路径下。用 ls -i 查看每一个路径所找用的信息:

   71 xxxxxxxx                     83969 xxxxxxxx      79877 xxxxxxxx
70 curator-recipes-2.5.0.jar 11 lost+found 86017 xxxxxxxx
68 curator.tar.gz 90113 mapred 88065 xxxxxxxx
94209 xxxxxxxx 79873 mobilereco 98305 xxxxxxxx
69 fds.jar 55 ro_test 81921 vpp
69633 hdfs 73729 spark 20481 yarn
92161 xxxxxxxx 96257 xxxxxxxx
129 xxxxxxxx 8193 storm

会在每一个文件夹前面显示该路面所用的inode数目

怎样释放inode信息,情查看以下信息

It’s quite easy for a disk to have a large number of inodes used even if the disk is not very full.

An inode is allocated to a file so, if you have gazillions of files, all 1 byte each, you’ll run out of inodes long before you run out of disk.

It’s also possible that deleting files will not reduce the inode count if the files have multiple hard links. As I said, inodes belong to the file, not the directory entry. If a file has two directory entries linked to it, deleting one will not free the inode.

Additionally, you can delete a directory entry but, if a running process still has the file open, the inode won’t be freed.

My initial advice would be to delete all the files you can, then reboot the box to ensure no processes are left holding the files open.

If you do that and you still have a problem, let us know.

By the way, if you’re looking for the directories that contain lots of files, this script may help:

#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

or

sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

list the files and remove these files to free inode.

參考文献

1. Howto Free Inode Usage

2. Linux索引节点(Inode)用满导致的一次故障

3. Linux的inode的理解

Linux索引节点(Inode:no space for device)用满导致的一次故障的更多相关文章

  1. Linux索引节点(Inode)用满导致空间不足

    一.问题出现 在创建新目录和文件是提示“no space left on device”!按照以前的情况,很有可能是服务器空间又被塞满了,通过命令查看,发现还有剩余.再用df -i查看了一下/分区的索 ...

  2. linux No space left on device 由索引节点(inode)爆满引发500问题

    inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取 ...

  3. 由索引节点(inode)爆满引发的问题

    关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享一下: 一.发现问题在公司一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命 ...

  4. 索引节点(inode)爆满问题处理

    关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享几个情况: 情况一 在公司一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命 ...

  5. Centos 06 文件类型和扩展名&索引节点inode和存储块block

    本节内容 1.文件类型 2.文件扩展名 3.索引节点inode和block块 首先需要申明一点, 1.在linux里面文件扩展名和文件类型是没有关系的 2.为了容易区分和兼容用户使用windows的习 ...

  6. 索引节点inode详解

    Inode(index node),索引节点.Linux系统中,分区要进行格式化,创建文件系统.在每个Linux存储设备或存储设备的分区(可以是硬盘,软盘,U盘等)被格式化为ext3文件系统后,一般分 ...

  7. 索引节点inode

    在Linux的文件系统中,索引节点是文件的标识,并且这个值是唯一的,两个不同的文件的索引节点值是不同的,索引节点相同的文件它们的内容是相同的,仅仅文件名不同.修改两个索引节点值相同的文件中的一个文件, ...

  8. 查找大文件 & 索引节点(inode)爆满 解决办法

    经常遇到磁盘满或者文件节点满的情况,整理如下 查找大文件 查找超过某个大小的文件, 如1G find . -type f -size +1G 查找文件大小的时候,现实文件属性 find . -type ...

  9. Linux 索引节点(inode)详解

    参考文章:http://www.ruanyifeng.com/blog/2011/12/inode.html

随机推荐

  1. atlas 日志分析脚本

    #!/usr/bin/env python # encoding: utf-8 #@author: 东哥加油! #@file: log_analyze.py #@time: 2018/8/23 17: ...

  2. (53)zabbix模板

    zabbix模板是做什么的? 平时工作中,我们需要监控web.mysql.redis.nginx这些服务器,众多服务器的业务都是一样的,所以我们只要事先创建好模板,然后所有服务器链接这个模板即可,如果 ...

  3. Mycat主从分离

    1. mycat原理 主从的读写是不同的,主能写能读,再从上写是无法同步到主的,因此需要中间件将主从的读写进行分离,使得主从各司其职,相当于负载均衡的作用.中间件可以是proxy或者mycat.客户端 ...

  4. python爬虫基础05-beautifulsoup

    HTML解析库BeautifulSoup4 本文链接:https://www.jianshu.com/p/e9255c446a77 BeautifulSoup 是一个可以从HTML或XML文件中提取数 ...

  5. pandas.DataFrame——pd数据框的简单认识、存csv文件

    接着前天的豆瓣书单信息爬取,这一篇文章看一下利用pandas完成对数据的存储. 回想一下我们当时在最后得到了六个列表:img_urls, titles, ratings, authors, detai ...

  6. 【转】4w+1h 教你如何做用户画像

    记得14年开始做用户画像的时候,对于用户画像完全没有概念,以为是要画一幅幅图画,经过两年多的学习和理解,渐渐的总结出了一些方法和技巧,在这里就通过4个W英文字母开头和1个H英文字母开头的单词和大家分享 ...

  7. bootstap 折叠

    data-toggle="collapse" 添加到您想要展开或折叠的组件的链接上. href 或 data-target 属性添加到父组件,它的值是子组件的 id

  8. zoj 2679 Old Bill

    Old Bill Time Limit: 2 Seconds      Memory Limit: 65536 KB Among grandfather��s papers a bill was fo ...

  9. 也来“玩”Metro UI之磁贴(二)

    继昨天的“也来“玩”Metro UI之磁贴(一)”之后,还不过瘾,今天继续“玩”吧——今天把单选的功能加进来,还有磁贴的内容,还加了发光效果(CSS3,IE9+浏览器),当然,还是纯CSS,真的要感谢 ...

  10. redis主从原理介绍(三)

    博客参考:散尽浮华的Redis主从复制下的工作原理梳理 此作者写的非常好,此处只做挪用,方便自己查看. Redis主从复制的配置十分简单,它可以使从服务器是主服务器的完全拷贝.需要清除Redis主从复 ...