什么是文件系統?什么是根文件系統?
時間:2023-09-07 來源:華清遠見
文件系統
1.概念
文件系統是操作系統中用于管理和組織存儲設備上的文件和目錄的一種方法。它提供了一組規則和數據結構,用于存儲和檢索文件的信息,并決定文件如何被組織、命名和訪問。文件系統通常由文件、目錄和文件屬性(例如權限、所有者等)組成。
文件系統通過在物理存儲設備上創建一個邏輯結構來組織文件。這個邏輯結構包括超級塊、索引節點(inode)表、數據區等。超級塊包含了文件系統的整體信息和元數據,索引節點表用于存儲每個文件和目錄的元數據,而數據區則是實際存儲文件內容的地方。
2.文件系統結構
Linux 文件系統由 4 層組成,分別是用戶層、內核層、驅動層、硬件層,如下所示。

用戶層,其包含一些應用程序和 GNU C 庫(即glibc),為用戶提供一些系統調用接口,比如文件的打開、讀取、寫和關閉等API。
內核層,它包含一些底層文件系統的主要接口,實現了各種文件系統。
JFFS文件系統:主要用于NOR型Flash存儲器。其基于MTD驅動層。可讀寫、支持數據壓縮、基于哈希表的日志型文件系統,并提供了崩潰掉電安全保護,提供“寫平衡”支持。
YAFFS文件系統:專門為NAND Flash存儲器設計的嵌入式文件系統。適用于大容量的存儲設備。速度快,占用內存少,不支持壓縮和只支持NAND Flash存儲器。
驅動層,指的是塊設備的驅動程序。
硬件層,指的是嵌入式系統使用的幾種存儲器。
跟文件系統
1.概念
根文件系統是文件系統的頂層,也是整個文件系統的起點。在Linux和類Unix操作系統中,根文件系統的路徑被表示為"/"。根文件系統包含操作系統的核心文件、系統配置文件以及其他必要的系統文件。它是文件系統層次結構中所有其他文件和目錄的父級目錄。
在啟動過程中,操作系統會加載根文件系統并將其掛載到特定的目錄(例如"/")。一旦根文件系統成功掛載,用戶便可以通過該根目錄訪問存儲設備上的所有文件和目錄。根文件系統的設計和組織對于操作系統的正常運行至關重要,因為它提供了操作系統所需的關鍵文件和配置信息。
此外,根文件系統還可以支持掛載其他文件系統。通過掛載其他文件系統,用戶可以訪問其他物理存儲設備上的文件和目錄,這使得操作系統能夠擴展存儲容量或訪問其他存儲介質。
總之,文件系統是操作系統用來管理和組織文件和目錄的方式,而根文件系統是文件系統的頂層結構,包含操作系統核心文件和配置信息,也是整個文件系統層次結構的起點。
2.組成
Linux根文件系統中一般有如下的幾個目錄:
2.1 /bin目錄
該目錄下的命令可以被root與一般賬號所使用,由于這些命令在掛接其它文件系統之前就可以使用,所以/bin目錄必須和根文件系統在同一個分區中。
/bin目錄下常用的命令有:cat、chgrp、chmod、cp、ls、sh、kill、mount、umount、mkdir、[、test等。其中“[”命令就是test命令,我們在利用Busybox制作根文件系統時,在生成的bin目錄下,可以看到一些可執行的文件,也就是可用的一些命令。
2.2/sbin 目錄
該目錄下存放系統命令,即只有系統管理員(俗稱最高權限的root)能夠使用的命令,系統命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基本的系統命令,它們用于啟動系統和修復系統等,與/bin目錄相似,在掛接其他文件系統之前就可以使用/sbin,所以/sbin目錄必須和根文件系統在同一個分區中。
/sbin目錄下常用的命令有:shutdown、reboot、fdisk、fsck、init等,本地用戶自己安裝的系統命令放在/usr/local/sbin目錄下。
2.3 /dev目錄
該目錄下存放的是設備與設備接口的文件,設備文件是Linux中特有的文件類型,在Linux系統下,以文件的方式訪問各種設備,即通過讀寫某個設備文件操作某個具體硬件。比如通過"dev/ttySAC0"文件可以操作串口0,通過"/dev/mtdblock1"可以訪問MTD設備的第2個分區。比較重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*等。
2.4 /etc目錄
該目錄下存放著系統主要的配置文件,例如人員的賬號密碼文件、各種服務的其實文件等。一般來說,此目錄的各文件屬性是可以讓一般用戶查閱的,但是只有root有權限修改。對于PC上的Linux系統,/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴于系統中所擁有的應用程序,依賴于這些程序是否需要配置文件。在嵌入式系統中,這些內容可以大為精減。
2.5 /lib目錄
該目錄下存放共享庫和可加載(驅動程序),共享庫用于啟動系統。運行根文件系統中的可執行程序,比如:/bin /sbin 目錄下的程序。
2.6 /home目錄
系統默認的用戶文件夾,它是可選的,對于每個普通用戶,在/home目錄下都有一個以用戶名命名的子目錄,里面存放用戶相關的配置文件。
2.7 /root目錄
系統管理員(root)的主文件夾,即是根用戶的目錄,與此對應,普通用戶的目錄是/home下的某個子目錄。
2.8 /usr目錄
/usr目錄的內容可以存在另一個分區中,在系統啟動后再掛接到根文件系統中的/usr目錄下。里面存放的是共享、只讀的程序和數據,這表明/usr目錄下的內容可以在多個主機間共享,這些主要也符合FHS標準的。/usr中的文件應該是只讀的,其他主機相關的,可變的文件應該保存在其他目錄下,比如/var。/usr目錄在嵌入式中可以精減。
2.9 /var目錄
與/usr目錄相反,/var目錄中存放可變的數據,比如spool目錄(mail,news),log文件,臨時文件。
2.10 /proc目錄
這是一個空目錄,常作為proc文件系統的掛接點,proc文件系統是個虛擬的文件系統,它沒有實際的存儲設備,里面的目錄,文件都是由內核
臨時生成的,用來表示系統的運行狀態,也可以操作其中的文件控制系統。
2.11 /mnt目錄
用于臨時掛載某個文件系統的掛接點,通常是空目錄,也可以在里面創建一引起空的子目錄,比如/mnt/cdram /mnt/hda1 。用來臨時掛載光盤、移動存儲設備等。
2.12 /tmp目錄
用于存放臨時文件,通常是空目錄,一些需要生成臨時文件的程序用到的/tmp目錄下,所以/tmp目錄必須存在并可以訪問。

