首頁 > 軟體

Linux 檔案系統結構介紹

2020-06-16 17:53:48

Linux中的檔案是什麼?它的檔案系統又是什麼?那些組態檔又在哪裡?我下載好的程式儲存在哪裡了?在 Linux 中檔案系統是標準結構的嗎?好了,上圖簡明地闡釋了Linux的檔案系統的層次關係。當你苦於尋找組態檔或者二進位制檔案的時候,這便顯得十分有用了。我在下方新增了一些解釋以及例子,不過“篇幅較長,可以有空再看”。

另外一種情況便是當你在系統中獲取設定以及二進位制檔案時,出現了不一致性問題,如果你是在一個大型組織中,或者只是一個終端使用者,這也有可能會破壞你的系統(比如,二進位制檔案執行在舊的庫檔案上了)。若然你在你的Linux系統上做安全審計的話,你將會發現它很容易遭到各種攻擊。所以,保持一個清潔的作業系統(無論是Windows還是Linux)都顯得十分重要。 

Linux的檔案是什麼?

對於UNIX系統來說(同樣適用於Linux),以下便是對檔案簡單的描述:

在UNIX系統中,一切皆為檔案;若非檔案,則為進程

這種定義是比較正確的,因為有些特殊的檔案不僅僅是普通檔案(比如命名管道和通訊端),不過為了讓事情變的簡單,“一切皆為檔案”也是一個可以讓人接受的說法。Linux系統也像UNIX系統一樣,將檔案和目錄視如同物,因為目錄只是一個包含了其他檔名的檔案而已。程式、服務、文字、圖片等等,都是檔案。對於系統來說,輸入和輸出裝置,基本上所有的裝置,都被當做是檔案。

題圖版本歷史:

  • Version 2.0 – 17-06-2015
    • – Improved: 新增標題以及版本歷史
    • – Improved: 新增/srv,/meida和/proc
    • – Improved: 更新了反映當前的Linux檔案系統的描述
    • – Fixed: 多處的列印錯誤
    • – Fixed: 外觀和顏色
  • Version 1.0 – 14-02-2015
    • – Created: 基本的圖表
    • – Note: 摒棄更低的版本

 

下載連結

以下是大圖的下載地址。如果你需要其他格式,請跟原作者聯絡,他會嘗試製作並且上傳到某個地方以供下載

注意: PDF格式檔案是列印的最好選擇,因為它畫質很高。

 

Linux 檔案系統描述

為了有序地管理那些檔案,人們習慣把這些檔案當做是硬碟上的有序的樹狀結構,正如我們熟悉的'MS-DOS'(磁碟作業系統)就是一個例子。大的分枝包括更多的分枝,分枝的末梢是樹的葉子或者普通的檔案。現在我們將會以這樹形圖為例,但晚點我們會發現為什麼這不是一個完全準確的一幅圖。

目錄描述
/ 主層次 的根,也是整個檔案系統層次結構的根目錄
/bin 存放在單使用者模式可用的必要命令二進位制檔案,所有使用者都可用,如 cat、ls、cp等等
/boot 存放引導載入程式檔案,例如kernels、initrd等
/dev 存放必要的裝置檔案,例如/dev/null
/etc 存放主機特定的系統級組態檔。其實這裡有個關於它名字本身意義上的的爭議。在貝爾實驗室的UNIX實施文件的早期版本中,/etc表示是“其他(etcetera)目錄”,因為從歷史上看,這個目錄是存放各種不屬於其他目錄的檔案(然而,檔案系統目錄標準 FSH 限定 /etc 用於存放靜態組態檔,這裡不該存有二進位制檔案)。早期文件出版後,這個目錄名又重新定義成不同的形式。近期的解釋中包含著諸如“可編輯文字設定”或者“額外的工具箱”這樣的重定義
/etc/opt 儲存著新增包的組態檔 /opt/.
/etc/sgml 存放組態檔,比如 catalogs,用於那些處理SGML(譯者注:標準通用標示語言)的軟體的組態檔
/etc/X11 X Window 系統11版本的的組態檔
/etc/xml 組態檔,比如catalogs,用於那些處理XML(譯者注:可延伸標示語言)的軟體的組態檔
/home 使用者的主目錄,包括儲存的檔案,個人設定,等等
/lib /bin//sbin/中的二進位制檔案的必需的庫檔案
/lib<架構位數> 備用格式的必要的庫檔案。 這樣的目錄是可選的,但如果他們存在的話肯定是有需要用到它們的程式
/media 可移動的多媒體(如CD-ROMs)的掛載點。(出現於 FHS-2.3)
/mnt 臨時掛載的檔案系統
/opt 可選的應用程式軟體包
/proc 以檔案形式提供進程以及核心資訊的虛擬檔案系統,在Linux中,對應進程檔案系統(procfs )的掛載點
/root 根使用者的主目錄
/sbin 必要的系統級二進位制檔案,比如, init, ip, mount
/srv 系統提供的站點特定資料
/tmp 臨時檔案 (另見 /var/tmp). 通常在系統重新啟動後刪除
/usr 二級層級儲存使用者的唯讀資料; 包含(多)使用者主要的公共檔案以及應用程式
/usr/bin 非必要的命令二進位制檔案 (在單使用者模式中不需要用到的);用於所有使用者
/usr/include 標準的包含檔案
/usr/lib 庫檔案,用於/usr/bin//usr/sbin/中的二進位制檔案
/usr/lib<架構位數> 備用格式庫(可選的)
/usr/local 三級層次 用於本地資料,具體到該主機上的。通常會有下一個子目錄, 比如, bin/, lib/, share/.
/usr/local/sbin 非必要系統的二進位制檔案,比如用於不同網路服務的守護行程
/usr/share 架構無關的 (共用) 資料.
/usr/src 原始碼,比如核心原始檔以及與它相關的標頭檔案
/usr/X11R6 X Window系統,版本號:11,發行版本:6
/var 各式各樣的(Variable)檔案,一些隨著系統常規操作而持續改變的檔案就放在這裡,比如紀錄檔檔案,離線檔案,還有臨時的電子郵件檔案
/var/cache 應用程式快取資料. 這些資料是由耗時的I/O(輸入/輸出)的或者是運算本地生成的結果。這些應用程式是可以重新生成或者恢復資料的。當沒有資料丟失的時候,可以刪除快取檔案
/var/lib 狀態資訊。這些資訊隨著程式的執行而不停地改變,比如,資料庫,軟體包系統的後設資料等等
/var/lock 鎖檔案。這些檔案用於跟蹤正在使用的資源
/var/log 紀錄檔檔案。包含各種紀錄檔。
/var/mail 內含使用者郵箱的相關檔案
/var/opt 來自附加包的各種資料都會儲存在 /var/opt/.
/var/run 存放當前系統上次啟動以來的相關資訊,例如當前登入的使用者以及當前執行的daemons(守護行程).
/var/spool 該spool主要用於存放將要被處理的任務,比如列印佇列以及郵件外發佇列
/var/mail 過時的位置,用於放置使用者郵箱檔案
/var/tmp 存放重新啟動後保留的臨時檔案

 

Linux的檔案型別

大多數檔案僅僅是普通檔案,他們被稱為regular檔案;他們包含普通資料,比如,文字、可執行檔案、或者程式、程式的輸入或輸出等等

雖然你可以認為“在Linux中,一切你看到的皆為檔案”這個觀點相當保險,但這裡仍有著一些例外。

  • 目錄:由其他檔案組成的檔案
  • 特殊檔案:用於輸入和輸出的途徑。大多數特殊檔案都儲存在/dev中,我們將會在後面討論這個問題。
  • 連結檔案:讓檔案或者目錄出現在系統檔案樹結構上多個地方的機制。我們將詳細地討論這個連結檔案。
  • (域)通訊端:特殊的檔案型別,和TCP/IP協定中的通訊端有點像,提供進程間網路通訊,並受檔案系統的存取控制機制保護。
  • 命名管道 : 或多或少有點像sockets(通訊端),提供一個進程間的通訊機制,而不用網路通訊端協定。

 

現實中的檔案系統

對於大多數使用者和常規系統管理任務而言,“檔案和目錄是一個有序的類樹結構”是可以接受的。然而,對於電腦而言,它是不會理解什麼是樹,或者什麼是樹結構。

每個分割區都有它自己的檔案系統。想象一下,如果把那些檔案系統想成一個整體,我們可以構思一個關於整個系統的樹結構,不??這並沒有這麼簡單。在檔案系統中,一個檔案代表著一個inode(索引節點),這是一種包含著構建檔案的實際資料資訊的序列號:這些資料表示檔案是屬於誰的,還有它在硬碟中的位置。

每個分割區都有一套屬於他們自己的inode,在一個系統的不同分割區中,可以存在有相同inode的檔案。

每個inode都表示著一種在硬碟上的資料結構,儲存著檔案的屬性,包括檔案資料的實體地址。當硬碟被格式化並用來儲存資料時(通常發生在初始系統安裝過程,或者是在一個已經存在的系統中新增額外的硬碟),每個分割區都會建立固定數量的inode。這個值表示這個分割區能夠同時儲存各類檔案的最大數量。我們通常用一個inode去對映2-8k的資料塊。當一個新的檔案生成後,它就會獲得一個空閒的inode。在這個inode裡面儲存著以下資訊:

  • 檔案屬主和組屬主
  • 檔案型別(常規檔案,目錄檔案......)
  • 檔案許可權
  • 建立、最近一次讀檔案和修改檔案的時間
  • inode裡該資訊被修改的時間
  • 檔案的連結數(詳見下一章)
  • 檔案大小
  • 檔案資料的實際地址

唯一不在inode的資訊是檔名和目錄。它們儲存在特殊的目錄檔案。通過比較檔名和inode的數目,系統能夠構造出一個便於使用者理解的樹結構。使用者可以通過ls -i檢視inode的數目。在硬碟上,inodes有他們獨立的空間。


via: http://www.blackmoreops.com/2015/06/18/linux-file-system-hierarchy-v2-0/

譯者:tnuoccalanosrep 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-09/122596.htm


IT145.com E-mail:sddin#qq.com