歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 認識Linux根文件系統結構

認識Linux根文件系統結構

日期:2017/2/25 10:39:33   编辑:Linux教程
  

INTRO

認識Linux根文件系統結構,盡管Linux的根文件系統在形式表現上是一體的(所有數據目錄均為根目錄下的子目錄),但實際它們是多個不同的【邏輯主體】(為了實現不同的邏輯 功能)組合在一起的,參見下圖。這也解釋了為什麼有些節點(如/var)可以掛接到不同磁盤分區上。劃分這些邏輯部分對清晰把握根文件系統結構,以及整個 系統的行為都有很大的好處。在劃分之前,先看看“文件系統結構標准”。

文件系統結構標准

文件系統結構標准 (Filesystem Hierarchy Standard ,下稱FHS)定立的目標之一是,程序可按用途性質被安裝到指定的位置,用戶也能預知程序的安裝的文件和目錄的位置。FHS通過定義文件系統各部分的涵 義、用途,再加上列舉所有的特殊情況,如歷史遺留問題,達到了這個目標。

Linux系統的數據文件可以根據【雙重標准】來對它們分類:共享的與獨享的(shareable vs. unshareable)、變化的和靜態的(variable vs. static)。如果數據文件無法按照雙重標准分類,它們必須另起目錄存放,這樣做的原因是可以把不同【使用性質】(usage characteristics)的數據文件分開不同文件系統(磁盤分區)存放。

  • “共享的” (Shareable)是指數據與平台不相關的,如/usr;相反“獨享的”(Unshareable)指數據是平台相關的,如配置數據/etc。
  • “靜態的”數據是相對非管理員用戶而言的,沒有更變的權限;而“變化的”則相反。分隔靜態與動態數據的目的是為了可把靜態數據安裝到一個單獨的只讀的介質 (文件系統)中,不必與動態數據一起做頻繁的事務管理,比如定期備份。

與數據的【靜動態性】面向“用戶”不同,數據的【共享專用性】是面向“主機”而言,也就是說,有些數據是本機專用的,而另外一些是多個主機(可是本地的 FHS兼容主機,可以是遠程主機)共享的。比如根目錄分區是本機專用的,而/usr所在分區可共享給多個FHS兼容主機。

雙重標准是發展而來的,被納入FHS,為了支持這個標准,過去默認存放在/usr 、/var、 /etc 等目錄的數據都做了相應的調整。

Linux文件系統邏輯組成

參照FHS,Linux系統按照邏輯功能大致分為以下目錄(以具體目錄表現邏輯功能,有意思):

  • /
  • /usr
  • /var
  • /opt
  • /home

P.S. 以上目錄均可單獨安裝到一個分區上,最終掛接入根下。

/ (專用的靜態的)

根目錄的功能由其名可略知,根目錄是系統的根本所在(Essential),是系統之所以為本系統的特征表現。換句話說,本目錄的內容不是可選的, 是系統基本功能必備部分。

  

P.S.如何理解“根本所在”?

我們知道,Linux系統有內核,還會有shell,有gred,還有嗎?有vi吧,有GCC吧,有ifconfig吧,還有可能X下大量應用程 序。所謂“根本所在”,在內容表現上,就是包括最基本的最通用的部分。當然這部分內容還可能有一些是可選的,這個取決你如何定義基本系統。

根目錄的邏輯功能分為兩層,第一層是應用的,第二層是管理(administration)的。應用層在上面說了,它用來組成基本系統,包括常用工 具(如 ls,放置於/bin),和一些共享庫等。第二層是管理用的,對系統進行啟動、恢復、修復和配置等。由於根目錄是系統的“根本所在”,管理目的,並且是 HOST相關的,如果可以應單獨安裝在一個盡可能小的分區上。

如何定義基本系統?

由於計算系統基本上是邏輯的,基本系統的定義取決計算任務,而計算任務本身是交錯復雜和多樣的,所以只能用一個特殊的例子來說明。比如要進行啟動、 恢復、修復和配置的系統需要些什麼?

To boot a system, enough must be present on the root partition to mount other filesystems. This includes utilities, configuration, boot loader information, and other essential start-up data.
To enable recovery and/or repair of a system, those utilities needed by an experienced maintainer to diagnose and reconstruct a damaged system must be present on the root filesystem.
To restore a system, those utilities needed to restore from system backups (on floppy, tape, etc.) must be present on the root filesystem
根目錄必選組成目錄
/bin 基本工具或命令
/sbin 系統管理工具或命令
/etc 主機相關(Host-specific)的配置數據
/lib 基本共享庫和內核模塊
/dev 設備文件
/boot 引導程序
/root 管理員的工作目錄
/mnt 系統管理員的臨時掛接點
/tmp 系統級臨時文件
/media 移動設備掛接點
/usr (共享的靜態的)
/usr 目錄是系統的一大組成部分。很難用一句說明/usr的用途。不過我們可以透過/usr 的雙重標准性質與/和/var對比來理解/usr在系統中的角色。首先,與/相同,/usr是靜態的,也就是說/usr下的數據普通用戶是不能更改的;但 與/不同的是,/usr是共享的,也就可知,/usr下的數據與主機平台不相關的。我們大概知道,/usr與/類似安裝有二進制程序、共享庫和配置數據, 那麼從/usr 的雙重標准性質可推理得,這些數據及代碼都是獨立於運行主機的。

而與/var對比呢?/var基本上是動態的和共享的(少量是主機相關的,如/var/log)。/var保存大部分是程序運行期的動態生成數據。

/usr必選組成目錄
/usr/bin Most user commands
/usr/include Header files included by C programs
/usr/blib Libraries
/usr/local Local hierarchy (empty after main installation)
/usr/sbin Non-vital system binaries
/usr/share Architecture-independent data
/var
……

/home : User home Directories (optional)
……

-
Copyright © Linux教程網 All Rights Reserved