文件系統2(Linux下)

1 掛載分區

文件系統1中已經知道了能夠根據inode號在指定分區找文件了,也已經能根據目錄文件內容,找指定的inode了,在指定的分區內,就可以對文件進行操作了。但是還有幾個問題,那就是inode是不能跨分區的,Linux下有多個分區,那Linux下是我們是如何知道自己在那一個分區的?

1.分區寫入文件系統,無法直接使用,需要和指定的目錄關聯,進行掛載才能使用。

2.因此,可以根據訪問目標文件的"路徑前綴"準確判斷我在哪?個分區。

?例如:

/home/iu/study/test1/home/iu/study/test2

將兩個分區分別掛載到這兩個目錄下時,在該分區下創建文件,對文件進行操作,需要進行路徑解析,進行路徑解析時,路徑前綴就會有一部分是該分區的路徑,這樣就能確定該文件在哪個分區里面了。

總結(文件系統的大致操作流程):

2 軟硬連接

2.1 硬鏈接

前面我們知道,每個文件名對應一個inode,那多個文件名是否可以對應多個inode呢?其實這是可以的。這就是建立硬鏈接。

命令:

ln [被鏈接的文件名] [鏈接的文件名]

硬鏈接,其實可以理解為重命名,可以用來文件備份。本質是并沒有創建新的文件,而是在指定的目錄文件下(內容中),建立了一個新的文件名與inode的映射關系。

利用ls命令查看文件信息時,可以看到這里數字2,1,2這是什么呢?其實是引用計數,一個文件inode對應了多少個文件名,在刪除時,引用計數--,當減為0時才會將對應磁盤上的文件刪除。

注意:目錄文件不能創建硬鏈接

前面說過,訪問文件時需要路徑解析,會構建dentry樹結構,如果創建了目錄的硬鏈接,就會形成路徑環路問題。

還有一點就是我們在創建一個目錄文件時,默認引用計數為2,這是因為有 . (當前路徑)的存在,在當前目錄文件下再創建一個目錄文件時,引用計數就會變成3,是因為在新的目錄文件下存在?..?(上一級路徑),相等于有三個指向同一個inode了。

?這里不是系統都創建目錄文件的inode了嗎?不會形成環路問題嗎?

其實這是經過特殊處理的,可以理解為在構建dentry樹結構時,. 和 ..,被作為遞歸出口,將這兩個忽略掉了。

2.2 軟連接

硬鏈接是通過inode引用另外?個文件,軟鏈接是通過名字引用另外?個文件,但實際上,新的文件和被引用的文件的inode不同(這是兩個不同的文件),其實軟連接中的文件內容對應的是,對應文件的文件路徑字符串。應用主要是創建一些快捷方式。

命令:

ln -s [被鏈接的文件名] [鏈接的文件名]

2.3?軟硬連接對比

軟連接是獨立文減件

硬鏈接只是文件名和目標文件inode的映射關系

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83975.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83975.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83975.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode-?2537. 統計好子數組的數目?

Problem: 2537. 統計好子數組的數目 思路 滑動窗口 解題過程 思路: 使用滑動窗口來維護子數組,并通過組合計數動態調整滿足條件的數對數目。具體來說,我們維護一個窗口[l,r],使得窗口內相同元素的對數至少為 k,并計算…

js手寫代碼篇--手寫Object.assign

19、Object.assign 作用: Object.assign的作用是將源對象的所有可枚舉屬性復制到目標對象中。它返回目標對象。 const obj1 { a: 1, b: 2 };const obj2 { b: 3, c: 4 };const obj3 { d: 5 };const target {};Object.assign(target, obj1, obj2, obj3);console…

使用 C/C++ 和 OpenCV 構建智能停車場視覺管理系統

使用 C 和 OpenCV 構建智能停車場視覺管理系統 本文將詳細介紹如何利用 C 和 OpenCV 庫,從零開始創建一個智能停車場管理系統。該系統通過攝像頭捕捉的畫面,能自動完成兩項核心任務: 車位識別:通過檢測地面上的黃色停車線&#…

服務器靜態ip,網關不能占用*.*.*.1

網關不能占用*.*.*.1.1 通常用于運行關鍵服務(如DHCP、NAT、DNS代理),.1 是網絡世界的"VIP包廂",普通用戶強闖只會被"請出"。

自然語言處理【NLP】—— CBOW模型

文章目錄 引言一、CBOW模型概述1.1 什么是CBOW模型1.2 CBOW vs Skip-gram 二、CBOW模型原理詳解2.1 模型架構2.2 數學原理2.3 訓練過程 三、CBOW的PyTorch實現四、CBOW模型的應用與優化4.1 典型應用場景4.2 性能優化技巧 五、CBOW的局限性六、結語 引言 在自然語言處理(NLP)領…

為MTK 9300開發板移植Linux系統(以Debian為例)的詳細技術指南

以下是為MTK 9300開發板移植Linux系統(以Debian為例)的詳細技術指南,涵蓋環境搭建、內核移植、驅動適配(攝像頭/顯示器/WiFi)、系統集成與優化。 MTK 9300開發板Linux系統移植全流程指南 1 項目概述 1.1 硬件平臺 SoC:MediaTek MTK9300 (ARMv8-A架構,4Cortex-A78 + 4C…

Java Lambda 表達式與 Stream API 全解析:從基礎到進階

以下是對您博客內容的優化版本,在保留原有核心內容的基礎上,補充了Lambda表達式及Stream API的完整方法體系,并通過結構化排版和擴展說明提升可讀性。 Java Lambda表達式與Stream API全解析:從基礎到進階 一、Lambda表達式與Str…

Let’s Encrypt(樂此加密) 免費SSL證書申請

一、前言 騰訊云、阿里云等平臺都支持免費的SSL證書申請,但只支持單域名SSL證書申請,不支持泛域名證書申請,而且每年只有20張免費證書額度,自2024年4月25日之起免費申請的證書只有3個月有效期。域名比較多的情況下,更新…

SQLite3 性能優化

在嵌入式開發和輕量級應用場景中,SQLite3 作為輕量級數據庫引擎,憑借其無需獨立服務器、部署便捷等特點被廣泛應用。然而,當面對大量數據的高速讀寫需求時,默認配置下的 SQLite3 性能往往難以滿足要求。本文將從數據庫配置調整、W…

零基礎設計模式——行為型模式 - 狀態模式

第四部分:行為型模式 - 狀態模式 (State Pattern) 我們繼續學習行為型模式,接下來是狀態模式。這個模式允許一個對象在其內部狀態改變時改變它的行為,對象看起來就像是改變了它的類。 核心思想:允許一個對象在其內部狀態改變時改…

面向對象面試題集合

前言 記錄面向對象面試題相關內容,方便復習及查漏補缺 題1.簡述面向對象?主要特征是什么? 面向對象編程(Object-Oriented Programming,簡稱OOP)是一種以“對象”為核心的編程范式,通過將現實…

二十一、【用戶管理與權限 - 篇三】角色管理:前端角色列表與 CRUD 實現

【用戶管理與權限 - 篇三】角色管理:前端角色列表與 CRUD 實現 前言準備工作第一部分:更新 API 服務以包含角色管理第二部分:添加角色管理頁面的路由和側邊欄入口第三部分:實現角色列表頁面第四部分:實現角色表單對話框組件第五部分:全面測試總結前言 一個完善的權限系統…

Objective-c protocol 練習

題目描述: 請使用 Objective-C 中的 protocol 協議機制,實現一個簡易的門禁控制系統。 系統包含兩個類: AccessControlSystem —— 門禁系統,用于執行開門操作;Admin —— 實現權限判斷邏輯的管理員。 要求如下&am…

科技創新賦能產業創新,雙輪驅動助力新疆高質量發展!

在新疆維吾爾自治區成立70周年之際,中國產學研合作促進會于6月14日在烏魯木齊舉辦“天山對話:推動新疆科技創新與產業創新”盛會。多位院士、專家、學者及企業代表齊聚一堂,探尋推動新疆科技創新和產業創新的新路徑、新動能。活動現場&#x…

C#最佳實踐:推薦使用 nameof 而非硬編碼名稱

C#最佳實踐:推薦使用 nameof 而非硬編碼名稱 在 C# 編程領域,代碼的可維護性、健壯性和可讀性是衡量程序質量的重要指標。在日常開發中,我們常常會遇到需要引用類型、成員或變量名稱的場景,比如在拋出異常時指定錯誤相關的變量名、在日志記錄中標記關鍵元素名稱等。傳統的…

vue3 iframe 跨域-通訊

一、基礎嵌套方法 直接在 HTML 中使用 <iframe> 標簽指定 src 屬性&#xff1a; <iframe src"https://目標網址.com" width"800" height"600"></iframe>?限制?&#xff1a;若目標網站設置了 X-Frame-Options 響應頭&#x…

Iceberg與Hive集成深度

一、Iceberg在Hive中的ACID事務實現與實戰 1.1 傳統Hive的事務局限性 Hive原生僅支持非事務表&#xff08;Non-ACID&#xff09;&#xff0c;存在以下痛點&#xff1a; 不支持行級更新/刪除并發寫入時數據一致性無法保證無事務回滾機制歷史版本查詢需手動實現 1.2 Iceberg為…

深入剖析 Celery:分布式異步任務處理的利器

本文在創作過程中借助 AI 工具輔助資料整理與內容優化。圖片來源網絡。 文章目錄 引言一、Celery 概述1.1 Celery 的定義和作用1.2 Celery 的應用場景 二、Celery 架構分析2.1 Celery 的整體架構2.2 消息中間件&#xff08;Broker&#xff09;2.3 任務隊列&#xff08;Task Que…

Flask應用中處理異步事件(后臺線程+事件循環)的方法(2)

在上一節&#xff0c;我們講述了最簡單最基礎的后線程的建立&#xff0c;現在我們將進行拓展 Flask應用中處理異步事件&#xff08;后臺線程事件循環&#xff09;的方法&#xff08;1&#xff09; 在我們的實際應用當中&#xff0c;我們需要定義三個東西 一個多線程的信號旗&am…

C++(面向對象編程)

思維導圖 面向對象 1.面向對象思想 概念&#xff1a;面向對象編程&#xff08;OOP&#xff09;是一種以對象為基礎的編程范式&#xff0c;強調將數據和操作數據的方法封裝在一起。這就是上篇文章講過的。面向過程是以“怎么解決問題”為核心&#xff0c;而面向對象思想在于“誰…