為什么新建文件時,所在文件系統還有大量剩余空間,卻提示此文件系統空間已滿??

一:答疑解惑:

   這是因為該文件所在分區的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.www58058.com/82233

(1)
yunyunyuyunyunyu
上一篇 2017-07-22
下一篇 2017-07-23

相關推薦

  • 腳本

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;     #!/bin/bash     #     sum=0 &n…

    Linux干貨 2016-12-23
  • Linux 第四天: (07月28日) 練習和作業

    Linux 第四天: (07月28日) 練習和作業         定義別名命令baketc, 每天將/etc/目錄下所有文件, 備份到/testdir獨立的子目錄下, 并要求子目錄格式為backupYYYY-mm-dd, 備份過程可見 alias baketc='cp -a /etc/ /testdir/b…

    Linux干貨 2016-08-08
  • N22-第一周博客作業

    1、計算機的組成和及其功能? 計算機由硬件,操作系統,軟件三大部分組成。 硬件: 計算機系統中所使用的電子線路和物理設備,主要由中央處理器( CPU )、存儲器、外部設備(輸入輸出設備、I/O設備)及總線等組成。 a、中央處理器(CPU)的主要功能是根據存儲器內的程序 ,逐條地執行程序所指定的操作。中央處理器的主要組成部分是:數據寄存器、指令寄存器、指令譯碼…

    Linux干貨 2016-08-15
  • 94-varnish

        一. Web Page Cache 相關概念

    2016-11-18
  • kickstart及引導鏡像制作

    環境:CentOS 6.7 kickstart 制作    1、centos系統安裝完成后,anaconda會根據本次系統安裝的配置,生成一個與本次安裝設置相同的kickstart文件,文件位于/root/anaconda-ks.cfg,可以使用vim對這個文件進行修改來使用。     vim anaconda-ks.…

    Linux干貨 2015-12-15
欧美性久久久久