为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??

一:答疑解惑:

   这是因为该文件所在分区的inode号被用尽,虽然分区的剩余容量还有很多。

二:基本原理:

  inode为何物block又为何物?以及,inode都有哪些特征?

  ①我们知道,在linux文件系统中,文件名只是计算机用来给人看,而计算机本身只识别文件所对应的数字或编号,而这个编号或数字就是inode(大小为128bytes)。inode用来记录文件的属性,一个文件占用一个inode,同时inode还记录此文件的数据所在的block号码。

  ※文件属性大致包括:

    1.文件的访问模式

    2.文件所有者和所属组

    3.文件大小

    4.时间戳(atime,mtime,ctime)

    5.定义文件特征的标志(flag),如SetID等。

    6.文件真正内容的指向

  ②block也叫做数据块,用来存放文件中的数据。当文件大小大于block大小事,则一个block文件可占用多个block块,呈上,如果文件小于block,则该block剩余空间将不能被使用。

好,如果到这里,你还有些似懂非懂,那就废话不多说,直接上图:

             为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满?? 

  ③inode的特点:

    1.每个inode大小为均为128bytes

    2.每个文件只会占用一个inode,而一个inode可以被多个文件名所引用,而后面的这种属性也就是硬链接(hard link)的原理。

    3.每个分区都有固定的inode数量,因此,文件系统能够创建的文件数量与inode的数量有关,所以,当文件系统inode号被用光后,就无法再添加新的文件。

    4.系统读取文件的顺序;找到文件名所对应inode–>分析inode所记录的文件权限是否与用户权限相符合–>若符合,则读取inode所对应的block。

   好了,都说光说不练假把式,要想了解inode的真正含义,还得实践出真知,实验如下:

 三:实验:

  第一步:将/dev/sda1 挂载到新创建的目录 /zdd 下,并通过df -h 和 df -i 查看此分区的磁盘内存使用情况和磁盘inode使用情况:

     为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??  

               图一

   第二步:从图一中我们看到,此分区的内存和inode号还有很大剩余,那么,接下来就在/zdd 下创建65525个文件,文件名分别是file{11..65535}:

     为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??

                图二

  第三步:由图二可以看出,创建大量文件后,/dev/sda1虽然磁盘空间仅用了将近1%,但inode号却用了将近100%,只剩下1个可以使用,所以,在创建到第二个新文件时,意料之中就会发生图三创建失败的结果:

                      为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??

                                                                           图三

    为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??

                 图四

  好了,到这里,标题中的问题基本上已经得到了解决,而有关inode和block的相关内容事实上远不止这些,所以,骚年,静下心来多学习思考吧,只有丰富了头脑,才能拥有一身本事报效我们可爱的祖国为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??,来,跟着我一起念:富强、民主、文明、和谐、敬业、、、、、、、、、、、、、、

原创文章,作者:yunyunyu,如若转载,请注明出处:http://www.178linux.com/82233

(1)
上一篇 2017-07-22 22:13
下一篇 2017-07-23 13:36

相关推荐

  • Linux进程管理

    一:进程的概念     1)进程:process,运行中的程序的一个副本的某部分,之所以说是副本的一部分是因为一个程序可以多个用户同时以不同格式运行,如两个用户都在运行ls,一个运行的是ls -h ,另一个运行的是ls -l,那么这两个用户运行的程序代码肯定是不一样的而且不是程序的所有代码;进程有生命周期; &nbsp…

    2017-03-26
  • C++的std::string的“读时也拷贝”技术!

    C++的std::string的读时也拷贝技术! 嘿嘿,你没有看错,我也没有写错,是读时也拷贝技术。什么?我的错,你之前听说写过时才拷贝,嗯,不错的确有这门技术,英文是Copy On Write,简写就是COW,非常’牛’!那么我们就来看看这个’牛’技术的效果吧。 我们先编写一段程序 #include <string> #include…

    Linux干货 2015-04-03
  • Linux脚本基础练习

    马哥教育网络班+ 第7周课堂练习 Linux脚本基础练习 练习: 1、创建一个10G分区,并格式为ext4文件系统; (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl (2)挂载至/data/mydata目录 要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 第一步,在虚拟机中挂载一块20G的新硬盘 &…

    Linux干货 2016-11-09
  • 马哥教育21期网络班—第15周课程+练习

    2、删除/boot/grub/grub.conf文件中所有行的行首的空白字符; sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf 3、删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符; sed 's@^#[[:spac…

    Linux干货 2016-11-14
  • Linux 目录配置

    Linux 目录配置 Linux目录配置标准:FHS 因为利用Linux来开发产品或distributions的团队/公司与个人实在太多了,如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰。所以/后来就有所谓的Filesystem Hierarchy Standard (FHS)标准出炉了。 根据FHS(http://www.pa…

    Linux干货 2017-03-26
  • man手册的使用

    在Linux中man的使用频率应该是很高的,灵活运用它可以让自己快速的掌握一个不熟悉命令的使用方法。下面来介绍下man 环境CentOS6.8 man – format and display the on-line manual pages 在线使用手册格式及展示通俗点来说它就是命令的使用手册。它共分九个章节 1、用户命令2、系统调用3、C库调…

    Linux干货 2016-10-19