linux基礎學習--linux磁盤與文件管理系統

linux磁盤與文件管理系統

1.認識linux系統

1.1 磁盤組成與分區的復習

首先了解磁盤的物理組成,主要有:

  • 圓形的碟片(主要記錄數據的部分)。
  • 機械手臂,與在機械手臂上的磁頭(可擦寫碟片上的內容)。
  • 主軸馬達,可以轉動碟片,讓機械手臂的磁頭在碟片上讀寫數據。
    數據存儲與讀取的重點在于碟片,而碟片上的物理組成為:
  • 扇區切最小的物理存儲單位,且根據磁盤設計的不同,目前有512B和4KB兩種格式。
  • 將扇區組成一個圓,就是柱面。
  • 早期分區主要以柱面作為最小的分區單位,現在的分區通常使用扇形作為最小分區單位(每個扇區都有其號碼,就好像座位一樣)。
  • 磁盤分區主要有兩種格式,一種是限制較多的MBR分區表,一種是較新且限制較少的GPT分區表;
  • MBR分區表中,第一個扇區最為重要,里面有:主引導記錄,及分區表,其中MBR占有446B,而分區表則占有64B。
  • GPT分區表除了分區數量擴充較多之外,支持的磁盤空間也可以超過2TB。
    基本上所有物理磁盤的文件都被模擬成/dev/sd[a-p]的格式,第一塊磁盤名為/dev/sda,分區的文件名以第一塊磁盤為例,為/dev/sda[1-28],除物理磁盤下,虛擬機的磁盤通常為/dev/vd[a-p]的格式。如果有使用到軟件磁盤陣列的話,還有/dev/md[0-128]的磁盤文件名。使用LVM時,文件名則為/dev/VGANE/LVNAME。我們這里主要學習物理磁盤和虛擬磁盤。
  • /dev/sd[a-p][1-128]:為物理磁盤的文件名。
  • /dev/vd[a-d][1-128]:為虛擬磁盤的文件名。
1.2 文件系統特性

在磁盤分區完畢后,還需要進行格式化,之后操作系統才能使用這個文件系統。
這是因為每種操作系統所設置的文件屬性/權限并不相同,為了存放這些文件所需數據,因此就需要將分區進行格式化,已成為操作系統能夠利用的文件系統格式。
通常我們稱一個可被掛載的數據為一個文件系統而不是一個分區
在操作系統的文件中,除了實際內容外,還有很多屬性,如Linux操作系統的文件權限(rwx)與文件屬性(擁有者,用戶組,時間參數等)。文件系統通常會將這兩部分的數據分別存放在不同的區塊,權限與屬性放置到inode中,至于實際數據則放置到數據區塊中。此外,還有一個超級區塊(superblock)會記錄整個文件系統的整體信息,包括inode與數據區塊的總量,使用量,剩余量等
每個inode與區塊都有編號,至于這三個數據的意義簡略說明如下:

  • 超級區塊 :記錄此文件系統的整體信息,包括inode與數據區塊的總量,使用量,剩余量,以及文件系統的格式與相關信息等
  • inode :記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數據所在的區塊號碼。
  • 數據區塊 :實際記錄文件的內容,如果文件太大,會占用多個區塊。
    每個inode與數據區塊都有編號,每個文件都占用一個inode,inode內有文件數據放置的區塊號碼。因此找到了文件的inode,就找到了文件數據區塊的號碼,就能讀出文件的實際數據。
    這種數據存取方式稱為索引式文件系統
    還有其他常用的文件系統,比如U盤使用的FAT格式的文件系統,
    因為這種文件系統中沒有inode存在,如果一個文件數據寫入的區塊太松散,需要讀取磁盤好幾次才能完整讀取這個文件。
    所謂碎片整理,就是因為文件寫入的區塊太過于離散,文件讀取的性能會變的很差,需要通過碎片整理將同一個文件所屬的區塊都集合到一起,這樣數據的讀取會比較容易。
1.3 Linux的ext2文件系統(inode)

標準的ext2文件系統就是這種含有inode,數據區塊,超級區塊等,以inode為基礎的Linux文件系統。
文件系統一開始就將inode和數據區塊規劃好了,除非重新格式化(或利用resize2fs等命令修改其大小),否則inode與數據區塊固定后就不再變動了。
當文件系統有數百GB,再將所有inode和數據區塊都放在一起就很不易管理了。
因此,ext2文件系統格式化時基本上是區分成多個區塊群組(block group),每個區塊都有獨自的inode,數據區塊,超級區塊系統。
在ext2文件系統中,最前面有一個啟動扇區,這個啟動扇區可以安裝啟動引導程序。
每一個區塊群組的六個內容如下:

  • 數據區塊(data block)
    數據區塊是用來放置文件數據的地方,在ext2文件系統中所支持的區塊大小有1K,2K及4K三種。格式化是區塊大小就被固定了,且每個區塊都有編號。而區塊大小也會產生差異:
Block 大小1 KB2 KB4 KB
最大單一文件大小16 GB256 GB2 TB
最大文件系統總容量2 TB8 TB16 TB

ext2文件系統還有一些限制:

  • 原則上,區塊的大小和數量在格式化完成后就不能再修改(除非重新格式化)。
  • 每個區塊內最多只能放置一個文件的數據。
  • 承上,如果文件大于區塊的大小,則一個文件會占用多個區塊數量。
  • 承上,如果文件小于區塊,則該區塊的剩余容量就不能夠再被使用了(磁盤空間被浪費了)。
    由于這些限制,當小文件較多時,而區塊較大,例如區塊為4KB,而小文件僅為50B,那么每個區塊都將浪費4046B的空間。
    那么將區塊設置為1KB呢?這樣但文件會占用很多區塊,而每個區塊的inode都需要被記錄,造成讀寫性能不佳。
  • inode table(inode表)
    基本上,inode記錄文件的屬性及文件數據放置區塊的編號,至少有下面的:
  • 該文件的讀寫屬性(read,write,excute)。
  • 該文件的擁有者與用戶組(owner,group)。
  • 該文件的大小。
  • 該文件建立或狀態改變的時間(ctime)。
  • 最近一次的讀取時間(atime)。
  • 最近修改的時間(mtime)。
  • 定義文件特性的標識(flag),如SetUID。
  • 該文件真正內容的指向(pointer)。
    inode的數量與大小也是在格式化時就已經固定了,除此之外還有一些特點:
  • 每個inode大小均固定為128B(新的ext4與xfs可設置到256B);
  • 每個文件都僅會占用一個inode而已。
  • 承上,因此文件系統能夠建立的文件數量與inode的數量有關。
  • 系統讀取文件時需要先找到inode,并分析inode所記錄的權限與用戶是否符合,若符合才能讀取區塊的內容。
  • Superblock(超級區塊)
    超級區塊時記錄整個文件系統相關信息的地方,沒有超級區塊,就沒有這個文件系統,它記錄的信息有:
    • 數據區塊與inode的總量。
    • 未使用與已使用的inode與數據區塊數量。
    • 數據區塊與inode的大小(block為1,2,4K,inode為128B或256B)。
    • 文件系統的掛載時間,最近一次寫入數據的時間,最近一次檢驗磁盤的時間等文件系統的相關信息。
    • 一個有效位數值,若該文件系統已被掛載,則有效位為0,若未被掛載,則有效位為1。
      一個文件系統應該僅有一個超級區塊,位于它的第一個區塊群組,后續的區塊1群組中也可能含有超級區塊,不過都是對第一個超級區塊的備份。
  • Filesystem Description(文件系統描述說明)
    這個區段可以描述每個區塊群組的開始與結束的區塊,以及說明每個區塊(超級區塊,對照表,inode對照表,數據區塊)分別介于哪個區塊之間。
  • 區塊對照表(block bitmap)
    從區塊對照表中可以知道那些區塊是空的,因此我們的系統就能夠快速的找到可使用的空間來處理文件。
    刪除文件,對應區塊空出來時,對照表中他們的狀態就會變成未使用中。
  • inode對照表(inode bitmap)
    與區塊對照表功能類似

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

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

相關文章

DIFY教程第五彈:科研論文翻譯與SEO翻譯應用

科研論文翻譯 我可以在工作流案例中結合聊天大模型來實現翻譯工具的功能,具體的設計如下 在開始節點中接收一個輸入信息 content 然后在 LLM 模型中我們需要配置一個 CHAT 模型,這里選擇了 DeepSeek-R1 64K 的聊天模型,注意需要在這里設置下…

【Redis】哨兵機制和集群

🔥個人主頁: 中草藥 🔥專欄:【中間件】企業級中間件剖析 一、哨兵機制 Redis的主從復制模式下,一旦主節點由于故障不能提供服務,需要人工的進行主從切換,同時需要大量的客戶端需要被通知切換到…

注意力機制(Attention)

1. 注意力認知和應用 AM: Attention Mechanism,注意力機制。 根據眼球注視的方向,采集顯著特征部位數據: 注意力示意圖: 注意力機制是一種讓模型根據任務需求動態地關注輸入數據中重要部分的機制。通過注意力機制&…

解鎖 AI 生產力:Google 四大免費工具全面解析20250507

🚀 解鎖 AI 生產力:Google 四大免費工具全面解析 在人工智能迅猛發展的今天,Google 推出的多款免費工具正在悄然改變我們的學習、工作和創作方式。本文將深入解析四款代表性產品:NotebookLM、Google AI Studio、Google Colab 和 …

知識圖譜:AI大腦中的“超級地圖”如何煉成?

人類看到“蘋果”一詞,會瞬間聯想到“iPhone”“喬布斯”“牛頓”,甚至“維生素C”——這種思維跳躍的背后,是大腦將概念連結成網的能力。而AI要模仿這種能力,需要一張動態的“數字地圖”來存儲和鏈接知識,這就是?知識…

Win11 24H2首個熱補丁下周推送!更新無需重啟

快科技5月7 日消息,微軟宣布,Windows 11 24H2的首個熱補丁更新將于下周通過Patch Tuesday發布,將為管理員帶來更高效的安全更新部署方式,同時減少設備停機時間。 為幫助IT管理員順利過渡到熱補丁模式,微軟還提供了豐富…

【Python類(Class)完全指南】面向對象編程入門

目錄 🌟 前言🧩 技術背景與價值🚧 當前技術痛點🛠? 解決方案概述👥 目標讀者說明 📚 一、技術原理剖析🎨 核心概念圖解💡 核心作用講解 💻 二、實戰演示🛠?…

全自動輿情監控系統實現方案

想要通過代碼實現全自動的全網輿情監控,還要用代理來輔助。全自動的話,可能是指從數據抓取、處理到分析都不需要人工干預。全網輿情監控意味著要覆蓋多個平臺,比如新聞網站、社交媒體、論壇等等。代理的使用可能是為了繞過反爬蟲機制&#xf…

【Linux 系統調試】Linux 調試工具strip使用方法

? 目錄 ? 一. strip 工具的定義與核心作用? ?1. strip 是什么?? 2. strip 工具調試符號的作用? 3. strip 工具調試符號的重要性? 二. 如何確認文件是否被 strip 處理?? 1. 通過 file 命令檢查文件狀態 2. strip 的典型用法? ?基礎命…

多模態大模型輕量化探索-開源SmolVLM模型架構、數據策略及其衍生物PDF解析模型SmolDocling

在《多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器》介紹到,縮小視覺編碼器的尺寸,能夠有效的降低多模態大模型的參數量。再來看一個整體的工作,從視覺側和語言模型側綜合考量模型參數量的平衡模式,進一步降低參數量&#xf…

代碼隨想錄第36天:動態規劃9(序列問題)

一、最長遞增子序列&#xff08;Leetcode 300&#xff09; 1.dp數組定義&#xff1a; dp[i] 為以 nums[i] 結尾的最長遞增子序列長度。 2.狀態轉移&#xff1a; dp[i] max(dp[i], dp[j] 1) for all j < i and nums[j] < nums[i] 2.dp數組初始化&#xff1a; 所有 …

【Spring Boot 注解】@SpringBootApplication

文章目錄 SpringBootApplication注解一、簡介二、使用1.指定要掃描的包 SpringBootApplication注解 一、簡介 SpringBootApplication 是 Spring Boot 提供的一個注解&#xff0c;通常用于啟動類&#xff08;主類&#xff09;上&#xff0c;它是三個注解的組合&#xff1a; 1.…

openstack虛擬機狀態異常處理

1、openstack虛擬機task_state狀態異常處理 問題描述&#xff1a; 正常狀態&#xff1a; 異常狀態&#xff1a; 任務狀態應為 無&#xff0c;但該虛擬機為None。無法執行開機、關機等操作。 當前異常狀態下通過命令行關閉虛擬機會報錯&#xff0c;報錯信息如下&#xff1a; […

【數據結構】手撕二叉搜索樹

目錄 二叉搜索樹的概念二叉搜索樹的實現節點類構造函數拷貝構造函數賦值運算符重載析構函數插入函數查找函數刪除函數中序遍歷 二叉搜索樹的應用(k和k/v模型 ) 二叉搜索樹的概念 ?叉搜索樹?稱?叉排序樹&#xff0c;它或者是?棵空樹&#xff0c;或者是具有以下性質的?叉樹…

藍橋杯 20. 倍數問題

倍數問題 原題目鏈接 題目描述 眾所周知&#xff0c;小蔥同學擅長計算&#xff0c;尤其擅長判斷一個數是否是另一個數的倍數。但當面對多個數時&#xff0c;他就比較苦惱了。 現在小蔥給了你 n 個數&#xff0c;希望你從中找出三個數&#xff0c;使得這三個數的 和是 K 的倍…

SpirngAI框架 Advisor API詳解

SpringAI提供了Advisors API來實現請求和響應的攔截&#xff0c;修改&#xff0c;增強Spring應用程序和AI模型的互動。 可以使用ChatClient API來配置現有的advisor&#xff0c;例如&#xff1a; var chatClient ChatClient.builder(chatModel) .defaultAdvisors( new Message…

用go從零構建寫一個RPC(仿gRPC,tRPC)--- 版本1(Client端)

這里我們來實現這個RPC的client端 為了實現RPC的效果&#xff0c;我們調用的Hello方法&#xff0c;即server端的方法&#xff0c;應該是由代理來調用&#xff0c;讓proxy里面封裝網絡請求&#xff0c;消息的發送和接受處理。而上一篇文章提到的服務端的代理已經在.rpc.go文件中…

bpftrace 中使用 bpf_trace_printk

bpf_trace_printk bcc 中可以通過 bpf_trace_printk 來打印輸出 , 同時有個非常有用的功能, 同時輸出到 /sys/kernel/tracing/trace 文件中 比如bcc代碼 // read_trace.c&#xff08;eBPF 內核態代碼&#xff09; #include <vmlinux.h> #include <bpf/bpf_helpers.h…

解決 Chrome 與 Chromedriver 版本不一致問題的方法

目錄 常見錯誤處理 處理方案&#xff1a; 1. 自動版本匹配方法 使用 webdriver-manager 庫&#xff08;推薦&#xff09; 2. 手動版本管理方法 檢查并匹配版本 3. 版本兼容性解決方案 使用兼容性表 4. 自動更新策略 定期檢查更新腳本 5. Docker 容器化方案 最佳實踐建…

【強化學習】強化學習算法 - 多臂老虎機問題

1、環境/問題介紹 概述&#xff1a;多臂老虎機問題是指&#xff1a;智能體在有限的試驗回合 &#x1d447; 內&#xff0c;從 &#x1d43e; 臺具有未知獎賞分布的“老虎機”中反復選擇一個臂&#xff08;即拉桿&#xff09;&#xff0c;每次拉桿后獲得隨機獎勵&#xff0c;目…