您好,登錄后才能下訂單哦!
Linux文件系統的基本原理是什么及常見類型有哪些呢,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在計算機出現之前其實就有文件系統的概念了,此時的文件系統是指用于管理(存儲和檢索等)紙質文件的系統。計算機及發明后,文件系統逐漸專指用于管理存儲介質的系統。它通過簡單的接口給用戶,方便用戶使用存儲設備。
Linux操作系統下的文件系統基本上也是如此。當我們進入Linux操作系統時,首先看到的是各種類型的目錄(參考一篇文章學會Linux系統目錄管理)和各種文件。Linux有個理念就是“一切皆文件”,在Linux操作系統中幾乎所有資源都是以文件的形式呈現的。比如磁盤是文件,套接字是文件,系統配置項也是文件。所有這些內容在Linux都是通過文件系統來管理的。
在操作系統中,文件系統的概念得到了延伸。Linux的文件系統分為兩類,一類是真實的文件系統,用于存儲數據;另一類是偽文件系統,這些文件系統并不會持久化數據。今天我們將對Linux下的文件系統進行整體的介紹,讓大家對文件系統有個概括的了解。
文件系統的使用
在Linux操作系統中文件系統的使用是非常簡單的。如果使用的是Ubuntu等有圖形界面的操作系統,那么我們可以通過GUI瀏覽文件系統。這個跟使用Windows和Mac OS操作系統很像。從用戶角度來看,文件系統的文件被組織成樹形結構。用戶可以自由的創建目錄和文件。
但是如果是命令行的系統,那么就沒有圖形界面方便了。但是,從組織形式上來說,也是樹形結構。只不過沒有那么直觀。如圖我們通過tree命令可以看到文件系統的內容及結構。
當然,上面說的都是文件系統已經掛載的場景。有些情況下我們有一個新的磁盤,但并沒有掛載,這個時候怎么才能使用這塊磁盤呢?方法也是非常簡單的,只需要做如下幾步:
格式化磁盤,由于Linux支持很多種文件系統,我們在使用磁盤之前需要使用某種文件系統進行格式化。比如格式化為Ext4文件系統,mkfs.ext4 /dev/sdc。
掛載文件系統,格式化后并不能馬上使用,需要掛載到目錄樹上才可以使用。具體命令是mount /dev/sdc /mnt/ext4_test。
完成上述步驟后,/mnt/ext4_test目錄就是新磁盤的根目錄了,我們可以在其中創建子目錄或者新文件了。從普通用戶的角度來看,它只是一個子目錄,并不會感知到其是一個新的磁盤,或者文件系統的具體類型。這一點與Windows有比較大的差異。
文件系統的基本原理
在操作系統層面,文件系統是其最關鍵的子系統之一,其核心功能是對存儲資源的管理。也就是說文件系統是對磁盤(還包括光盤或者磁帶等其它類型的存儲介質)的空間進行管理的。文件系統對磁盤空間的管理其實還是比較簡單的,就是將大的磁盤空間切割為很小的區域(例如4KB),然后通過對這些小區域的分配和釋放來使用磁盤空間。
雖然文件系統是一個樹形結構,但是磁盤本身的空間卻是一個扁平的線性存儲空間。以Ext4為例,文件系統將磁盤劃分為若干個塊組,每個塊組又劃分為若干磁盤塊(可以在格式化時指定,默認是1KB)。
為了管理這些磁盤塊,總是需要一些區域來記錄哪些磁盤塊已經被使用了,哪些還沒有被使用。記錄這些數據的數據通常在磁盤的特殊區域,我們稱這些數據為文件系統的元數據。通過這些元數據文件系統實現了對磁盤空間的管理,最終為用戶提供了簡單易用的接口(使用接口,非API)。
文件系統的分類
前文我們介紹了基于存儲介質的本地文件系統,對其基本原理也做了介紹。其實文件系統發展到現在,其種類也豐富多樣。比如基于磁盤的普通本地文件系統除了Ext4外,還包括XFS、ZFS和Btrfs等等。其中Btrfs和ZFS不僅僅可以管理一塊磁盤,還可以實現多塊磁盤的管理,同時實現數據的冗余管理,這樣可以避免磁盤故障導致的數據丟失。
另一個方面,除了對磁盤數據管理的文件系統外,還有一些網絡文件系統。也就是說,這些文件系統看似在本地,但其實數據是在遠程的專門的設備上。客戶端是通過一些網絡協議實現數據的傳輸的。比如NFS和GlusterFS等等文件系統。
幾十年的發展,文件系統的種類也非常多,我們沒有辦法一一進行介紹。今天我們就按照大類對主要的文件系統進行介紹,不足之處還請指教。
1. 本地文件系統
本地文件系統是對磁盤空間進行管理的文件系統。從呈現形態上來看,文件系統就是一個樹形的目錄結構。前面我們已經介紹了比較多的概念,其本質上就是實現對磁盤空間的管理,實現磁盤線性空間與目錄結構的轉換。
從普通用戶的角度來說,主要方便了對磁盤空的使用,降低了使用難度,提高了利用效率。常見的本地文件系統有Ext4、Btrfs、XFS和ZFS等等。
2. 偽文件系統
偽文件系統是對傳統文件系統的延伸。偽文件系統并不會持久化數據,而是在內存中的文件系統。它以文件系統的形態實現用戶與內核數據的交互。比如我們常見的偽文件系統包括proc、sysfs和configfs等等。
在Linux操作系統中偽文件系統主要實現內核與用戶態的交互。比如獲取IPv4協議的參數,我們只需要
3. 網絡(分布式)文件系統
網絡文件系統是一種將數據存儲在遠端的文件系統。網絡文件系統通常分為客戶端和服務端,其中客戶端類似本地文件系統,而服務端則是對數據進行管理的系統。網絡文件系統的使用與本地文件系統沒有任何差別,只需要執行mount命令掛載即可。網絡文件系統種類也很多,比如NFS、CephFS和Gluster等。
在用戶層面,完成掛載后的網絡文件系統與本地文件系統完全一樣,看不出任何差異,對用戶是透明的。網絡文件系統就好像將遠程的文件系統映射到了本地。
如圖是將文件系統服務中文件系統映射到客戶端的示意圖。從用戶的角度只是某個子目錄,但實際上讀寫請求需要通過網絡轉發到服務端進行處理。
4. 集群文件系統
集群文件系統也是一種本地文件系統。與普通本地文件系統的差異在于其后端磁盤通常是基于網絡的SAN設備,且在多個節點共享(非絕對)。集群文件系統可以實現多個節點對磁盤介質的共同訪問。
同時,對于集群文件系統來說,其最大的特點是多個結點可以同時為應用層提供文件系統服務。這種常見特別適合用于應用業務多活的場景,通過集群文件系統提供高可用集群機制,避免宕機造成的服務失效情況。
關于Linux文件系統的基本原理是什么及常見類型有哪些呢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。