【Linux基礎IO】從零到一:文件管理系統深度探索

前言:在linux操作系統的廣闊世界中,文件管理無疑是基石之一,它支撐著整個系統的穩定運行與高效運作。無論是日常辦公、軟件開發、服務器管理還是大數據處理,都離不開對文件系統的深入理解和熟練操作。因此,掌握linux基礎io中的文件管理技能,對于每一個linux用戶、系統管理員以及開發者而言,都是至關重要的

本文旨在為讀者提供一個全面而深入的Linux基礎IO中文件管理的學習指南。通過本文的學習,讀者將能夠掌握Linux文件系統的基本原理

讓我們一同踏上這段學習之旅,探索Linux文件管理的奧秘吧!


?1. 文件管理系統管理被打開的文件在磁盤中管理沒有被打開的文件

管理沒有被打開的文件的核心操作是:快速定位文件


文件 = 屬性 + 內容

文件存放在磁盤中,方便OS/用戶對文件進行管理


?2. 磁盤

【Linux基礎IO】從零到一:文件管理系統深度探索

盤面俯視圖:

【Linux基礎IO】從零到一:文件管理系統深度探索

扇區是磁盤中的最小存儲單元 — 512字節(部分4KB)


基本構成

磁盤:硬盤中真正用來存儲信息的部分,外觀如圓盤,中間有孔供馬達運轉軸通過。硬盤的磁盤數量一般至少有一個,常見的尺寸有3.5英寸、2.5英寸等,不同尺寸的磁盤適用于不同的設備磁頭:負責讀寫數據的部件,能夠感應磁盤上的磁性變化,從而讀取或寫入數據。磁頭的質量對硬盤性能有重要影響

【Linux基礎IO】從零到一:文件管理系統深度探索

磁盤存儲的邏輯抽象結構

【Linux基礎IO】從零到一:文件管理系統深度探索
【Linux基礎IO】從零到一:文件管理系統深度探索

注意:操作系統也可以按照扇區為單位進行存取,也可以基于文件系統按照塊為單位進行數據 存取

【Linux基礎IO】從零到一:文件管理系統深度探索

?3. 文件管理

【Linux基礎IO】從零到一:文件管理系統深度探索

關于文件:

在Linux中文件的內容和屬性是分開存儲的在塊組中文件信息分為文件基本信息和對應文件的管理信息inode在整個分區中具有唯一性,在Linux內核中,識別文件,和文件名無關,之和inode有關


?inode

那么到底什么是inode,我們通過linux操作系統來看一下,我們先創建幾個文件和目錄,然后輸入指令 ls -li

【Linux基礎IO】從零到一:文件管理系統深度探索

文件屬性多了一串數字,而這些屬性就是inode,保存文件屬性也是通過inode保存的


inode的基本概念

定義:inode是文件系統中的一種數據結構,用于存儲文件的元信息,如文件名、文件大小、文件權限、文件所有者等。這些元信息對于文件系統的管理和操作至關重要功能:inode的主要功能是作為文件的索引,通過它可以快速定位到文件的數據塊,從而實現文件的快速訪問和管理

【Linux基礎IO】從零到一:文件管理系統深度探索

i節點表:存放文件屬性 如 文件大小,所有者,最近修改時間等Block Group:ext2文件系統會根據分區的大小劃分為數個Block Group。而每個Block Group都有著相同的結構組成。政府管理各區的例子GDT,Group Descriptor table:塊組描述符,描述塊組屬性信息 塊位圖(Block Bitmap):Block Bitmap中記錄著Data Block中哪個數據塊已經被占用,哪個數據塊沒有被占用

比特位的位置表示block編號,來判斷對用位置block是否被使用

inode位圖(inode Bitmap):每個bit表示一個inode是否空閑可用

【Linux基礎IO】從零到一:文件管理系統深度探索

數據區:存放文件內容

【Linux基礎IO】從零到一:文件管理系統深度探索

超級塊(Super Block):存放文件系統本身的結構信息。記錄的信息主要有:bolck 和inode的總量,未使用的block和inode的數量,一個block和inode的大小,最近一次掛載的時間,最近一次寫入數據的時間,最近一次檢驗磁盤的時間等其他文件系統的相關信息,Super Block的信息被破壞,可以說整個文件系統結構就被破壞了

【Linux基礎IO】從零到一:文件管理系統深度探索

創建一個新文件主要有一下4個操作:存儲屬性 內核先找到一個空閑的i節點(這里是263466)。內核把文件信息記錄到其 存儲數據 該文件需要存儲在三個磁盤塊,內核找到了三個空閑塊:300,500,800。將內核緩沖區的第一塊數據復制到300,下一塊復制到500,以此類推記錄分配情況 文件內容按順序300,500,800存放。內核在inode上的磁盤分布區記錄了上述塊列表添加文件名到目錄

新的文件名abc。linux如何在當前的目錄中記錄這個文件?內核將入口(263466,abc)添加到目錄文件。文件名和inode之間的對應關系將文件名和文件的內容及屬性連接起來


?如何理解目錄 目錄內部直接保存文件的文件名和映射關系修改文件的本質就是修改文件的映射關系在Linux中,文件名不屬于文件屬性

掛載:mount

磁盤空間管理:df

代碼語言:JavaScript代碼運行次數:0運行復制

df -h
【Linux基礎IO】從零到一:文件管理系統深度探索

?4. 軟鏈接與硬鏈接


軟鏈接

【Linux基礎IO】從零到一:文件管理系統深度探索

硬鏈接

inode內部有引用計數,表示有幾個文件名映射關系

【Linux基礎IO】從零到一:文件管理系統深度探索
【Linux基礎IO】從零到一:文件管理系統深度探索

硬鏈接與軟鏈接的區別

硬鏈接

軟鏈接

存在形式

文件副本的形式存在,但不占用實際空間

以路徑的形式存在

跨文件系統

不可以

可以

對目錄的鏈接

不允許

可以

inode編號

與原文件共享相同的inode編號

有自己的inode編號,但數據塊包含目標文件的路徑名

刪除操作

刪除其中一個文件名,不會影響另一個文件名的訪問

刪除原文件或目錄后,軟鏈接變為懸空鏈接,無法訪問目標

同步性

對硬鏈接或原文件的任何修改都會同時反映在另一個文件上

修改軟鏈接、硬鏈接和源文件,訪問三者都是同步變化的(但軟鏈接指向的內容可能因原文件刪除而失效)


acm

Access 最后訪問時間Modify 文件內容最后修改時間Change 屬性最后修改時間


?5. 總結

在探索Linux基礎IO(輸入輸出)中的文件管理的旅程即將告一段落之際,我們不禁要感慨這一領域所蘊含的深厚底蘊與無限可能。文件管理,作為Linux操作系統的核心功能之一,不僅僅是簡單地創建、刪除、移動文件那么直接,它更是系統資源管理、數據安全、乃至高效編程的基石

希望每一位學習者保持好奇心和求知欲,繼續深入探索Linux的廣闊天地! 希望本文能夠為你提供有益的參考和啟示,讓我們一起在編程的道路上不斷前行! 謝謝大家支持本篇到這里就結束了,祝大家天天開心!

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享