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

一:答疑解惑:

   这是因为该文件所在分区的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)
yunyunyuyunyunyu
上一篇 2017-07-22
下一篇 2017-07-23

相关推荐

  • Linux自动备份脚本

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1541163        今天网上一个朋友问了我一个shell的题目,让我帮他做下。下面是题目以及解题思路。 题目:…

    Linux干货 2016-08-15
  • DNS实验

    本实验需的注意问题:      1、运营商的服务器需要更改根指向服务器地址      2、根服务器上的配置文件/etc/named.conf需要将"."根区域禁用;      3、更改区域数据库文件的属组为named;c…

    Linux干货 2016-12-12
  • 文本处理工具 练习

    7.1 练习   1 、找出ifconfig 命令结果中本机的所有IPv4 地址 2 、查出分区空间使用率的最大百分比值   3 、查出用户UID 最大值的用户名、UID 及shell 类型 4 、查出/tmp 的权限,以数字方式显示   5 、统计当前连接本机的每个远程主机IP 的连接数,并按从大到小排序   &nb…

    Linux干货 2016-08-07
  • 马哥教育网络班21期+第一周课程练习

    1,描述计算机的组成及其功能。 2.按系列罗列linux的发行版,并描述不同发行版之间的练习与区别。 3.描述linux的哲学思想,并按照自己的理解对其进行解释性描述。 1.       一切皆文件,计算机中所有的文件目录,        包括计算机的硬件设备显示为文件格式。 2…

    Linux干货 2016-07-07
  • Linux基础知识之IO重定向

    该博文以CentOS6.8_x86_64系统为基础,Xshell 5远程连接CentOS系统,以root身份登录系统。  什么是I/O重定向?       所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块(codeblock)的输出,然后把捕捉到的输出,作为输入发送给…

    Linux干货 2016-07-26
  • shell脚本编程之一

    shell脚本编程之一 shell脚本基础 shell脚本是包含一些命令或声明,并符合一定格式的文本文件 格式要求:首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 常见简单的应用程序 处理文本或文件 创建shell脚本 第一步…

    Linux干货 2016-08-18