iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

檔案系統介紹

檔案系統 (File System) 在 Linux 中是一個非常基礎和重要的概念,無法一言兩語就能解釋清楚,甚至在大型儲存企業、學術專題都不斷在探討這個項目。身為 Linux 管理者的我們必須瞭解檔案系統的基本概念與使用,才能夠讓我們主機上的資料有合適的地方可以存放與使用。

現今大部份的系統應用大多為虛擬主機,且從各雲端業者的多年教育與引導開發人員、使用者,大多已經知道系統與資料分開的主要精神,所以在現今的新系統中已較少看到系統與資料混合的開發架構,因此我們在磁碟的規劃上就可以變得容易許多。

什麼是檔案系統

想像一下教室是一個硬碟,而每個座位則代表一小塊存儲空間。學生(檔案)會根據座位號碼(地址)坐到相應的座位上。老師(作業系統)會根據座位表(檔案系統)知道哪個學生坐在哪個座位上,這樣就能快速找到他們。

當新學生(新檔案)來到教室時,老師會查看座位表,找到一個空座位(空間)給新學生坐。如果某個學生(檔案)離開了(被刪除),那個座位就會變成空的,可以讓新來的學生(新檔案)坐。

這個座位表不僅告訴老師哪個學生坐在哪,也能確保每個學生有足夠的空間(不會有兩個檔案佔用同一塊硬碟空間)。

所以,檔案系統就像是教室的座位表,它幫助作業系統了解如何在硬碟上有效地「安排座位」,以便能快速找到和管理檔案。

索引式檔案系統

索引式檔案系統可以被看作是一個更先進的、更高效的座位表。

想像一下,教室裡的座位不再僅僅是一個單一的列表,而是有多個不同的表格或者甚至一個電子系統,這些表格按照不同的特點(比如學科、年級、興趣等)將學生進行分類和索引。當老師需要找到某個特定群體的學生時,他們可以迅速通過這些索引來找到他們,而不需要逐一查看每個座位或每個學生。

這樣的系統具有更高的查找和存取速度,因為它減少了需要掃描的「座位」數量。同樣地,在檔案系統中,索引式檔案系統(例如 ext3/ext4/xfs 等)使用各種資料結構來加速對檔案和目錄的尋找速度,這樣可以更快地讀取或寫入資料。

這種索引式檔案系統在應對大量小檔案或非常大的單一檔案時,通常性能更好,因為它能更精準地定位到數據的實際位置。

總的來說,索引式檔案系統就像是一個先進的、高效的「座位表」,它不僅讓「老師」(作業系統)更容易找到「學生」(檔案),還大大提高了整體的效率和性能。

日誌檔案系統

每次學生更換座位、進入或離開教室時,都會在一份日誌中做記錄。如果發生任何問題,比如誰坐在了錯誤的座位或者座位突然空缺,我們可以很容易找到原因,甚至 "還原" 到某個特定時刻的狀態。

在檔案系統中,日誌(或稱為日誌檔案系統,Journaling File System)的作用就像這樣的情境。當檔案或目錄的資訊變更時,這些變更會首先被寫入到一個 "日誌" 中。只有確認這些變更成功記錄後,它們才會被套用到實際的檔案系統中。這樣做的好處是,如果在寫入過程中發生問題(例如電源中斷),系統可以參照日誌來恢復到一個一致的狀態,而不會留下只完成一半的變更,可以提高了資料的一致性和可靠性。

支援日誌功能的檔案系統包括但不限於:ext3、ext4、XFS、NTFS、HFS+ 等。

所以,綜合以上,我們可以說索引式檔案系統配合日誌功能就像是一個高效、可搜尋並且具有良好備份和恢復機制的教室座位安排表。它不僅讓檔案存取更有效率,也確保了資料的一致性和安全性。

什麼是 Index node

Index node 也就是我們常聽到的 inode,結合上述的故事解釋,我們可以知道要有一張表來儲存這些索引資料,這張表就是故事中的學生座位表,這張多功能座位表可以協助老師透過不同的學生屬性快速找到確切位置。

inode(Index Node 的縮寫)是 Unix 和 Unix-like 作業系統中檔案系統的一個重要概念。每個檔案和目錄在這些檔案系統中都有一個對應的inode。我們將 inode 想像成一個身份證或資料表,其中包含了關於該檔案(或目錄)的各種元資料(metadata)。

這些資訊可能包括但不限於:

  • 檔案大小
  • 檔案類型(普通檔案、目錄、符號連結等)
  • 存取權限(讀、寫、執行等)
  • 擁有者和群組資訊
  • 檔案建立、存取和修改的時間戳記
  • 指向儲存該檔案資料的磁碟塊(block)的指標

對應之前提到的教室例子中,inode 就像是學生的個人檔案,記錄著他們佔用了哪些座位(磁碟塊),有哪些特權(讀/寫權限),以及其他相關資訊。

inode的存在讓檔案系統能高效地管理和存取檔案,並且支持更複雜的功能,比如連結和權限管理。在一些檔案系統中,如 EXT4 或 XFS,inode也可能參與日誌機制,以提供更高的資料一致性。

通常,使用者不直接與 inode 互動,但系統管理者可能需要直接或間接地理解和操作 inode,以進行更進階的檔案系統管理。


上一篇
Day 21: 系統排程
下一篇
Day 23: 磁碟空間與掛載
系列文
Linux 升華:初學者的探索到專家的洞察30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言