Linux文件系統
Linux文件系統

Linux/Unix的設計哲學是一切皆文件,Linux以文件的形式對計算機中的資源和數據進行管理。 反應在Linux上的文件類型就是: 普通文件,目錄文件(文件夾),設備文件,鏈接文件(軟鏈接和硬鏈接), 管道文件,Socket套接字文件等等。而這些種類繁多的文件被Linux使用目錄樹進行管理。 所謂的目錄樹就是以根目錄 / 為主,向下呈現分支狀的一種數據結構。
Inode
inode是linux/unix文件系統和硬盤存儲的基礎,如果理解了inode, 將會對我們學習如何將復雜的概念抽象成簡單概念有重大幫助。
文件存儲在硬盤上,硬盤的最小存儲單位是扇區(Sector),每個扇區存儲512字節(0.5kb)。 操作系統讀取硬盤的數據時,不會一個扇區一個扇區的讀取,這樣做效率較低,而是一次讀取多個扇區, 即一次讀取一個塊(block)。塊由多個扇區組成,是文件讀取的最小單位,塊的最常見的大小是4kb, 約為8個連續的扇區組成。文件數據存儲在塊中,?但還需要一個空間來存儲文件的元信息metadata,如文件擁有者,創建時間,權限,大小等。 這種存儲文件元信息的區域就叫inode,譯為索引節點。 每個文件都有一個inode,存儲文件的元信息。 使用 stat 命令可以查看文件的inode信息。每個inode都有一個號碼, Linux/Unix操作系統不使用文件名來區分文件,而是使用inode號碼區分不同的文件。
inode也需要消耗硬盤空間,所以在格式化硬盤的時候,操作系統會將硬盤分為2個區域, 一個區域存放文件數據,另一個區域存放inode所包含的信息, 存放inode的區域被稱為inode table。
文件的inode信息:
文件類型
普通文件是指txt,html,pdf等等的這樣應用層面的文件類型, 用戶可以根據訪問權限對普通文件進行訪問,修改和刪除。
目錄也是一種文件,打開目錄實際上是打開目錄文件。 目錄文件包含了它目錄下的所有文件名以及指向這些文件的指針。
鏈接文件分為符號鏈接(軟鏈接)文件和硬鏈接文件
硬鏈接(Hard Link):硬鏈接的文件擁有相同的inode,因為操作系統是靠inode來區分文件的, 2個inode相同的文件,就代表它們是一個文件。 刪除一個文件并不會對其他擁有相同inode的文件產生影響,只有當inode相同的所有文件被刪除了, 這個文件才會被刪除。換言之,你建立一個文件的硬鏈接,這個文件和硬鏈接它們的inode是相同的, 無論你刪除的是硬鏈接還是源文件,都不會對彼此造成影響,除非你把硬鏈接和源文件都刪除, 這個文件才被刪除。
符號鏈接(軟鏈接)(Symbolic Link): 符號鏈接類似于Windows上的快捷方式,它保存了源文件的路徑。 當符號鏈接被刪除時,并不會影響源文件。但是當源文件被刪除時,符號鏈接就找不到源文件了。
軟鏈接和硬鏈接:
設備文件分為塊設備文件和字符設備文件,設備文件一般存于/dev目錄下。
字符設備文件:?字符設備是依照先后順序被存取數據的設備,通常不支持隨機存取, 此類設備可以按字節/字符來讀取數據,?如鍵盤,串口等等。
塊設備文件:?塊設備是可以被隨機存取數據的設備,應用程序可以訪問塊設備上任何一塊位置。 塊設備以塊的方式讀取數據,在windows下也稱為簇,塊設備不支持字符的方式尋址。?如硬盤,軟盤,光碟等等。
字符設備與塊設備最根本的區別就是它們是否可以被隨機訪問。?如鍵盤,當我們在鍵盤上敲下一個單詞: "word"的時候, 那么系統肯定是需要按照順序來進行讀取word的字節流(字符流)的,隨機訪問在此時是沒有意義的。
管道文件一般用于進程間通信,使用mkfifo命令可以創建一個管道文件。
套接字文件被用于網絡進程之間的通信,既可以使2臺不同的機器進行通信,也可以用于本機的Socket網絡程序。
Linux目錄樹
所有可操作的計算機資源都存在于目錄樹這個結構中,對計算資源的訪問,可以看做是對這棵目錄樹的訪問。
linux目錄樹:
boot: boot目錄存放系統啟動引導時的文件。
bin: bin目錄存放可執行的二進制命令文件,這些命令一般是普通的基本程序,主要用于具體應用,如: ls , ln , less , more , cp , cat等等。
sbin: sbin目錄存放的也是可執行的二進制文件,這些目錄是系統的基本命令,主要用于系統的基本管理,如: shutdown , reboot等等。
etc: etc目錄存放了系統所需的配置文件,如/etc/passwd記錄了系統的用戶,/etc/group記錄了用戶組等等,非常重要。
proc: proc是一個虛擬目錄,它是當前系統內存的映射,可以通過這個目錄獲取正在系統當前的一些信息。
opt: opt目錄存放可選的應用程序包。
dev: dev目錄存放設備文件。
mnt: mnt目錄一般是系統用戶或管理員臨時掛載設備的目錄。
media: 當有設備插入計算機后,會自動掛載到media目錄。
sys: sys目錄存放系統硬件設備的驅動程序的信息。
usr: usr目錄存放了系統的所有的共享文件,庫文件等等,是最終要的目錄之一。
lib: lib目錄存放了系統所需的庫文件。
lib64: lib64一般是64位系統才會有的目錄,存放的也是系統所需的庫文件。
tmp: tmp目錄存放了系統或程序產生的臨時文件。
var: var目錄存放了系統運行時需要改變數據的文件。
run: run目錄存放了系統啟動以來的信息,當系統被重啟后,這個目錄會被清空。
srv: srv目錄存放了某些服務啟動后需要提取的文件。
home: home目錄是普通用戶的目錄。
root: root目錄是系統超級管理的目錄。
lost+found: 這個目錄一般是空的,當系統被非法關閉或操作后,這里可能就會生成一些文件。
Linux Unix
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。