inode 、數據塊、磁盤容量

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