歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 文件系統結構介紹

Linux 文件系統結構介紹

日期:2017/2/28 13:58:13   编辑:Linux教程

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: 摒棄更低的版本

下載鏈接

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

  • 大圖 (PNG 格式) – 2480×1755 px – 184KB
  • 最大圖 (PDF 格式) – 9919x7019 px – 1686KB

注意: 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中國 榮譽推出

Copyright © Linux教程網 All Rights Reserved