inode 、數據塊、磁盤容量

在Linux操做系統中,其文件結構跟微軟操做系統有比較大的差別。在Linux操做系統中,採用的是一種叫作inode的節點結構。在這個inode節點中,記錄了文件的類型、大小、權限、全部者、文件鏈接的數目、建立時間與更新時間等重要的信息,還有一個比較重要的內容就是指向數據塊的指針。通常狀況下,若是隻是將這個Linux系統看成客戶端或者普通的服務器來處理的話,那麼只須要採用年其默認的配置便可。可是,若是要將這個Linux操做系統看成新聞組服務器、論壇服務器等等服務器時,則就不可以採用默認設置了。系統管理員須要根據實際狀況來調整這個inode節點的數量以及其餘相關配置。
  1、inode節點數量與文件存儲的關係。
  要了解如何配置inode節點數量,那麼必須首先須要瞭解節點數量與文件數量的關係。在微軟操做系統中,只要磁盤分區還有存儲空間,則就能夠存儲文件。可是在Linux操做系統中則不一樣。在磁盤空間沒有用完以前,用戶也有可能沒法存儲新的文件。這主要是由於可使用的inode節點已經完了。那麼他們之間到底有什麼關係呢?其實他們之間還有一箇中間者,即數據塊,即他們之間的關係是節點、數據塊、文件數量之間的三角關係。
  系統管理員首先須要明白的是,inode節點的數量跟數據塊有關。可是他們不是簡單的正比例或者反比例的關係。如如今有一個25KB的文件,而數據塊的大小則爲4KB。則此時這個文件會佔用7個數據塊,可是隻佔用了一個inode節點。另外還有一種比較特殊的狀況,如在系統的/proc目錄下的文件實際上並不存在。也就是說並不佔用數據塊。可是仍然須要佔用一個節點。因此說,數據塊跟inode節點之間沒有存在比例關係。
  可是,inode的數量會決定數據塊的使用程度。如在inode節點數量小於數據塊數量的狀況下,並且用戶存儲的文件都比較小(如不到一個數據塊的的大小)。在這種狀況下,顯然inode節點數量會比數據塊要先用光。此時雖然還有空餘的磁盤空間,可是因爲inode節點數量已經用完。沒有多餘的節點能夠用來保存文件的相關信息。因此在這種狀況下用戶將沒法保存新的文件。因此有些用戶會感到疑惑,爲何磁盤空間還有,可是卻沒法存儲新的文件。就是這個Inode 節點在做怪。相反,若是inode節點數量比數據塊的數量要多,可是若是用戶存儲的是大文件。在節點數量尚未用完的狀況下,硬盤空間就已經用完了。此時也沒法保存新的文件。那些實際上不存在的文件除外。
  因此說,在部署Linux操做系統的時候,就應該根據未來系統運行時文件數據可能的存儲情況,來決定數據塊的大小與Inode節點的數量。從而最大程度的提升硬盤空間的利用率。不過一般狀況下,若是LInix操做系統沒有特殊的用途,只是做爲普通的客戶端來處理的話,那麼只須要採用系統的默認設置便可。
  2、在文件系統初始化時設置合適的節點數量。
  從上面的分析中能夠看出,inode節點數量跟系統中能夠存儲的文件數量有關。若是inode節點數量設置不合適的話,則可能在硬盤空間沒有用完的狀況下就沒法存儲文件了。雖然這種事情在通常情形下不會發生,可是在一些特殊的應用中則常常發生。如系統管理員不過將這臺Linux操做系統看成論壇來使用,則有可能會發生這種事情。由於一般狀況下,論壇服務器的文件存儲有一個特色。論壇服務器上的文件每每都比較小,如大部分文件只須要利用一個數據塊來保存便可。同時,其文件的數量又很是的多。因此,若是將Linux操做系統看成論壇等網站服務器來使用的話,若是採用默認設置的話,則頗有多是inode節點數量先用光,而硬盤空間還有剩餘。此時新的文件將沒法保存。
  因此針對論壇服務器這種比較特殊的應用,筆者的建議是將數據塊設置的小一點,以減小磁盤的碎片,提升硬盤的利用率。同時,將節點數量設置的多一點。如能夠先根據數據塊的大小和硬盤容量來計算出可用的數據塊數量。而後將inode節點的數量設置爲跟這個數據塊的數量相同。如此的話,在最壞的狀況下就是節點數量同數據塊數量同時用完。而大部分狀況下,服務器上總會有一些大文件,如圖片等等,會佔用多個數據塊來進行存儲。因此此時每每是硬盤空間先用完。故這麼設置的話,能夠提升硬盤空間的利用率。不會出現那種硬盤空間有剩餘卻沒法保存新文件的奇怪現象。
  不光光是論壇服務器須要這麼設置。若是將Linux操做系統看成FTP服務器、郵箱服務器、新聞組服務器等等也都須要進行設置。通常來講,只要服務器上的文件符合兩個特色,即文件數量多而文件容量比較小,就須要手工調整這個inode節點數量,而不可以採用默認的設置。不然的話,就會出現上面提到的這種異常狀況。
  若是須要調整inode的數量,則能夠在利用mke2fs等相關的建立文件系統命令的時候進行單獨的設置。這裏須要強調的是,要在系統部署以前先肯定這個須要的Inode節點數量。而後在建立文件系統中指定。當硬盤上已經存儲了文件,此時再來進行調整就爲時過晚了,由於從新建立文件系統會清除硬盤上原有的文件。因此就會致使文件的丟失。故筆者建議各位系統管理員,在將Linux操做系統看成服務器來使用以前,須要先了解一下服務器的用途。以及在這個應用下文件存儲的特色。若是其符合文件數量多可是文件體積小的特色時,則須要考慮更改這個節點數量,讓服務器能夠存多更多的小體積文件。
3、查詢節點的使用狀況。
  除了須要作好節點數量的規劃外,系統管理員還須要追蹤這個節點的使用狀況。如當發現有硬盤空間還有剩餘可是沒法存儲新文件的時候,系統管理員雖然懷疑這多是節點數量不夠所形成的。可是須要找出證據來證實本身的觀點。此時就須要知道如今系統中的節點數量有多少、可用的有多少、已經用了多少等等。在Linix操做系統中提供了一個命令,能夠幫助系統管理員來查詢這個節點的應用狀況。系統管理員之須要使用df –i(注意這個可選項必需要帶上),來查詢節點的使用數量與使用狀況。在shell環境中執行了這個命令後,系統會像管理員提供以下信息:文件系統的名字、當前文件系統總的inode節點數量、已經使用的節點數量、還沒有使用的節點數量以及使用的百分比。若是在顯示的結果中,發現節點數量爲0的,則表示這個不是Linux操做系統的ext3或者ext2文件系統。此時這個分區就有可能使光驅或者微軟的FAT等文件系統。
  當發現節點數量剩餘很少、而硬盤剩餘空間還比較多時,系統管理員就須要注意了。如能夠經過刪除舊文件來釋放節點。另外還有一種異常的狀況,就是文件明明刪除了,可是某些節點仍然沒有釋放。在Linux操做系統中有命令能夠查詢系統中是否有這種異常的狀況。之後如有機會筆者會告訴你們如何維護節點的異常狀況。這裏篇幅有限,筆者就不過渡展開。若是沒有能夠刪除的文件,並且節點的使用狀況也沒有異常的外,可是磁盤空間還有比較多的剩餘,那麼處理起來就比較麻煩了。此時系統管理員每每須要先備份分區上的文件。而後從新格式化這個文件分區,調整這個節點數量。而後再將文件複製進去。不過這是一個下下之策了。最理想的狀況是,系統管理員根據本身的工做經驗,在系統部署時就肯定合適的節點數量,從而省去後續調整的麻煩。
  另外筆者須要提醒你們的是,雖然在inode中存儲了文件的大量信息,可是像文件名等信息卻沒有保存在這個節點中。就是由於這個特性,因此在文件管理上Linux操做系統要比Windows系統強的多,如能夠同時採用符號鏈接與硬鏈接等等。硬鏈接至關於微軟操做系統中的快捷方式。而符號鏈接則是跟快捷方式大相徑庭的文件管理模式,其每每幫助管理員來完成一些特殊的任務node

相關文章
相關標籤/搜索