九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來到小浪云!


Linux文件系統 | 知識要點總結


avatar
小浪云 2025-01-06 136

前言

什么是文件系統

?

文件系統是操作系統用于明確存儲設備(通常是磁盤,也可能是基于 NAND Flash 的固態硬盤)或分區上文件的方法和數據結構;即在存儲設備上組織文件的方式。操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統。文件系統由三部分組成:文件系統的接口,對對象操縱和管理的軟件集合,以及對象及其屬性。從系統的角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體而言,它負責為用戶建立文件,存入、讀取、修改、轉儲文件,控制文件的存取,以及在用戶不再需要時撤銷文件等。

1. Linux 下文件系統的層次結構

?

linux 系統下,我們首先執行以下命令并查看輸出:

ls?-l?/ 

對于 Linux 軟件開發人員來說,對 Linux 系統的目錄結構應該已經非常熟悉了。文件系統可以根據其結構而變化,但在大多數情況下,它們應該遵循文件系統層次標準。執行 ls -l / 命令來查看根目錄下列出的目錄。你的目錄可能與我的有些許不同,但它們應該大致如下所示:

Linux文件系統 | 知識要點總結

我們來看一下各個目錄都是做什么用的:

  • / -根目錄,整個文件系統層次結構的根目錄,所有內容都位于此目錄下。
  • /bin -存放基本的可執行的程序(二進制文件),包括最基本的命令,如ls和cp。
  • /boot -包含內核引導加載程序文件。
  • /cdrom -光盤安裝點
  • /dev -存放設備文件。
  • /etc -核心系統配置目錄,應該只保存配置文件。
  • /home -用戶的主目錄,保存你的文檔,文件,設置等。
  • /lib、/lib32、/lib64、/libx32 -主要目的是存放特定的庫,這些庫是在/bin和/sbin目錄里的工具所需要的庫,/lib中的庫可以是32位或64位
  • /lost+found -這個目錄一般情況下是空的,當系統非法關機后,如果你丟失了一些文件,在這里能找回來,通常很少用到此目錄
  • /media -用作可移動媒體的連接點,如USB驅動器。
  • /mnt -臨時掛載的文件系統。
  • /opt -可選應用軟件包。
  • /proc -當前運行進程的信息。
  • /root -root用戶的主目錄。
  • /run -自上次引導以來運行系統的信息。
  • /sbin -包含基本的系統二進制文件,通常只能由root用戶運行。
  • /srv -系統提供的特定于站點的數據。
  • /tmp -臨時文件的存儲
  • /usr -通常它不包含主文件夾意義上的用戶文件。這意味著用戶安裝的軟件和實用程序,但這并不是說你不能在那里添加個人目錄。在這個目錄中有/usr/bin、/usr/local等子目錄。
  • /var -變量目錄,用于系統日志記錄、用戶跟蹤、緩存等。

2. 文件系統類型

文件系統分很多種類,有許多不同的文件系統實現可用。有些比其他的更快,有些支持更大容量的存儲,而另一些只能在更小容量的存儲上工作。不同的文件系統有不同的組織數據的方式。由于有很多不同的實現,應用程序需要一種方法來處理不同的操作。因此,有一種東西叫做虛擬文件系統抽象層。它是應用程序和不同文件系統類型之間的一層,因此無論擁有什么文件系統,你的應用程序都能夠使用它。

你的磁盤上可以有許多文件系統,這取決于它們是如何分區的。

Linux系統中日志記錄

在大多數文件系統類型上,日志記錄是默認的,但是為了以防萬一,你應該知道它是做什么的。假設你正在復制一個大文件,突然斷電。如果你使用的是一個沒有日志記錄的文件系統,那么文件最終會損壞,你的文件系統也會不一致,然后當你重新啟動時,系統將執行文件系統檢查以確保一切正常。但是,修復可能需要一段時間,這取決于你的文件系統有多大。

現在,如果你使用的是帶日志記錄的系統,在你的機器開始復制文件之前,它會將你將要做的事情寫入日志文件。當你實際復制文件時,一旦它完成,日志將該任務標記為完成。因此,文件系統總是處于一致的狀態,因此,如果你的機器突然關閉,它將確切地知道你停止的位置。這也減少了引導時間,因為它不檢查整個文件系統,只查看日志。

常見桌面文件系統類型

  • ext4:這是本地Linux文件系統的最新版本。它與舊的ext2和ext3版本兼容。它支持高達10億字節的磁盤卷和高達16TB甚至更多的文件大小。它是Linux文件系統的標準選擇。
  • Btrfs:“Better or Butter FS”,它是一種新的Linux文件系統,提供快照、增量備份、性能提升等功能。它是廣泛可用的,但還不太穩定和兼容。
  • XFS:高性能日志文件系統,非常適合具有大文件的系統,例如媒體服務器。
  • NTFS和FAT:Windows文件系統
  • HFS+:蘋果系統的文件系統

查看以下Ubuntu系統上的文件系統:

Linux文件系統 | 知識要點總結

3. Linux下磁盤的分區

硬盤可以細分為多個分區,本質上就是多個塊設備。回想一下這樣的例子,/dev/sda1和/dev/sda2, /dev/sda是整個磁盤,但是/dev/sda1是磁盤上的第一個分區。分區對于分離數據非常有用,如果你需要某個文件系統,可以輕松地創建一個分區,而不是將整個磁盤設置為一種文件系統類型。

分區表每個磁盤都有一個分區表,這個表告訴系統磁盤是如何分區的。該表告訴你分區的開始和結束位置,哪些分區是可引導的,磁盤的哪些扇區分配給哪些分區等等。有兩種主要的分區表方案,主引導記錄(MBR)和GUID分區表(gpt)。

分區磁盤由幫助我們組織數據的分區組成。你可以在一個磁盤上有多個分區,它們不能相互重疊。如果有未分配給分區的空間,則稱為空閑空間。分區的類型取決于你的分區表。在一個分區中,你可以擁有一個文件系統,也可以將一個分區專用于其他功能,如交換分區。

MBR

  • 傳統的分區表,被用作標準
  • 可以有主分區、擴展分區和邏輯分區
  • MBR有四個主分區的限制
  • 通過將一個主分區劃分為一個擴展分區(一個磁盤上只能有一個擴展分區),可以創建額外的分區。然后在擴展分區中添加邏輯分區。邏輯分區的使用就像任何其他分區一樣。
  • 支持最大2TB的磁盤

GPT

  • GUID分區表(GPT)正在成為磁盤分區的新標準
  • 只有一種類型的隔斷,你可以做很多
  • 每個分區都有一個全局唯一ID (GUID)
  • 主要用于基于UEFI的引導

文件系統結構

文件系統是文件和目錄的有組織的集合。在其最簡單的形式中,它由一個管理文件的數據庫和實際文件本身組成。

  • 引導塊:它位于文件系統的前幾個扇區中,文件系統并沒有真正使用它。相反,它包含用于引導操作系統的信息。操作系統只需要一個引導塊。如果你有多個分區,它們將有引導塊,但其中許多是未使用的。
  • 超級塊:這是在引導塊之后的單個塊,它包含關于文件系統的信息,例如inode表的大小、邏輯塊的大小和文件系統的大小。
  • 索引表:把它看作是管理文件的數據庫。每個文件或目錄在索引表中都有一個唯一的條目,并且包含關于該文件的各種信息。
  • 數據塊:這是文件和目錄的實際數據。

讓我們看一下不同的分區表。下面是一個使用MBR分區表(msdos)的分區示例。你可以看到系統上的主分區、擴展分區和邏輯分區。

Linux文件系統 | 知識要點總結

磁盤分區

如果我們需要對磁盤進行分區。有很多工具可以做到這一點:

  • fdisk 基本的命令行分區工具,不支持GPT
  • parted 這是一個命令行工具,支持MBR和GPT分區
  • gparted 這是parted的GUI版本
  • gdisk fdisk但不支持MBR,只支持GPT 我們用parted來劃分。假設我連接了USB設備,我們看到設備名稱是/dev/sdb2.

4. 創建文件系統

你可以創建一個文件系統:

sudo?mkfs?-t?ext4?/dev/sdb2 

就這么簡單!mkfs(制作文件系統)工具允許我們指定我們想要的文件系統類型和位置。你只希望在新分區的磁盤上創建文件系統,或者在對舊磁盤重新分區時創建文件系統。如果你試圖在現有文件系統之上創建一個文件系統,那么很可能會使你的文件系統處于損壞狀態。

5. mount and umount

在你可以查看文件系統的內容之前,你必須掛載它。要做到這一點,我需要設備位置、文件系統類型和掛載點,掛載點是系統上文件系統將要附加的目錄。我們要把設備掛載到一個掛載點。

首先創建掛載點,然后進行掛載:

mkdir?/myTest sudo?mount?-t?ext4?/dev/sdb2?/myTest 

就這么簡單!現在當我們轉到/myTest目錄時,我們可以看到文件系統的內容,-t指定文件系統的類型,然后是設備位置,然后是掛載點。

從掛載點卸載設備:

sudo?umount?/myTest 或者 sudo?umount?/dev/sdb2 

請記住,內核按照找到設備的順序命名設備。如果我們的設備名稱在我們掛載它之后因為某種原因改變了怎么辦? 你可以使用設備的通用唯一ID (UUID)而不是名稱。

查詢系統中塊設備的uuid:

Linux文件系統 | 知識要點總結

我們可以看到我們的設備名稱、它們對應的文件系統類型和它們的uuid。現在,當我們想要掛載某個設備時,我們可以使用:

sudo?mount?UUID=59c03b23-fd61-4bfc-b9fa-570edf47a0b9?/myTest 

大多數情況下,你不需要通過設備的uuid來掛載設備,使用設備名稱要容易得多,而且通常情況下,操作系統知道掛載常見的設備,如USB驅動器。如果你需要在啟動時自動掛載文件系統,就像你添加了一個輔助硬盤驅動器一樣,可能會使用UUID。

6. /etc/fstab

當我們想在系統啟動時自動掛載文件系統,我們可以將它們添加到文件系統表的縮寫文件/etc/fstab中。該文件包含已掛載的文件系統的永久列表。

Linux文件系統 | 知識要點總結

每一行代表一個文件系統,字段是:

  • UUID -設備標識
  • 掛載點 -文件系統掛載到的目錄
  • 文件系統類型
  • 選項 -其他掛載選項
  • 轉儲 -由轉儲實用程序用來決定何時進行備份,默認為0
  • Pass -用來決定應該檢查文件系統的順序,如果值為0,則不檢查

要添加一個條目,只需使用上面的條目語法直接修改/etc/fstab文件。修改這個文件時要小心,如果搞砸了,可能會給帶來一些麻煩

其中swap屬于交換分區,這個交換分區是什么?交換是我們用來給系統分配虛擬內存的。如果內存不足,系統會使用這個分區將空閑進程的內存“交換”到磁盤,這樣就不會陷入內存困境。

使用分區作為交換空間假設我們希望將/dev/sdb2分區設置為交換空間。

  • 首先確保我們沒有任何東西在分區上
  • 執行命令mkswap /dev/sdb2初始化交換區
  • 運行swapon /dev/sdb2將啟用交換設備
  • 如果你希望交換分區在啟動時保持不變,你需要在/etc/fstab文件中添加一個條目。w是使用的文件系統類型。
  • 刪除交換模塊:swapoff /dev/sdb2

通常應該分配大約兩倍于內存的交換空間。但是現在系統通常已經足夠強大并且有足夠的內存。

7. 磁盤使用情況

你可以使用一些工具來查看磁盤的利用率:

Linux文件系統 | 知識要點總結

df命令顯示當前掛載的文件系統的利用率。-h標志提供了一種可讀的格式。你可以看到設備是什么,以及有多少容量被使用和可用。

假設你的磁盤快要滿了,你想知道哪些文件或目錄占用了這些空間,你可以使用du命令。

du?-h 

Linux文件系統 | 知識要點總結

8. 文件系統修復

有時我們的文件系統并不總是處于最佳狀態,如果我們突然關閉系統,我們的數據可能會損壞。這取決于系統是否試圖讓我們回到工作狀態。

fsck(文件系統檢查)命令用于檢查文件系統的一致性,甚至可以嘗試為我們修復它。通常,當你啟動磁盤時,fsck將在磁盤掛載之前運行,以確保一切正常。但有時磁盤非常糟糕,需要手動執行此操作。但是,一定要在你處于修復磁盤或可以在不掛載的情況下訪問文件系統的地方執行此操作。

sudo?fsck?/dev/sdb1 

9. 索引節點

還記得我們的文件系統是如何由實際文件和管理這些文件的數據庫組成的嗎?該數據庫稱為索引節點表。

**什么是索引節點?**索引節點(inode)是該表中的一個條目,每個文件都有一個索引節點。它描述了關于文件的所有內容,例如:

  • 文件類型-常規文件,目錄,字符設備等
  • 擁有者
  • 擁有組
  • 訪問權限
  • 時間戳- mtime(最后一次修改文件的時間),ctime(最后一次修改屬性的時間),atime(最后一次訪問的時間)
  • 文件的硬鏈接數
  • 文件大小
  • 分配給文件的塊數
  • 指向文件數據塊的指針 基本上索引節點存儲了關于文件的所有內容,除了文件名和文件本身

**什么時候創建索引節點?**創建文件系統時,也會為索引分配空間。有一些算法可以根據磁盤容量等確定需要多少索引節點空間。你可能在某些時候看到過磁盤空間不足的錯誤問題。同樣的情況也會發生在索引節點上,你可能會耗盡索引節點,因此無法創建更多的文件

索引節點信息索引節點是由數字標識的,當一個文件被創建時,它被分配一個索引號,這個編號是按順序分配的。然而,有時你可能會注意到,當你創建一個新文件時,它得到的索引號比其他文件低,這是因為一旦索引被刪除,它們就可以被其他文件重用。查看索引編號執行ls -li命令:

Linux文件系統 | 知識要點總結

該命令的第一個字段列出了索引號。

你還可以使用stat查看有關文件的詳細信息,它還會告訴你有關索引節點的信息。

Linux文件系統 | 知識要點總結

10. 符號鏈接

Windows操作系統中,有一種叫做快捷鍵的東西,快捷鍵只是其他文件的別名。如果對原始文件做了一些操作,可能會破壞快捷方式。在Linux中,等同于快捷方式的是符號鏈接(或軟鏈接或符號鏈接)。symlinks允許我們通過文件名鏈接到另一個文件。Linux中的另一種類型的鏈接是硬鏈接,它們實際上是另一個指向索引節點的鏈接文件。

Linux文件系統 | 知識要點總結

可以看到,我創建了一個名為myFile1Link的符號鏈接,指向myFile1。符號鏈接用->表示。注意我是如何獲得一個新的節點號的,符號鏈接只是指向文件名的文件。當你修改符號鏈接時,文件也會被修改。節點號對于文件系統是唯一的,你不能在一個文件系統中有兩個相同的節點號,這意味著你不能通過節點號在不同的文件系統中引用文件。但是,如果你使用符號鏈接,它們不使用節點號,而是使用文件名,因此可以跨不同的文件系統引用它們。

硬鏈接

Linux文件系統 | 知識要點總結

硬鏈接只是創建另一個文件,該文件具有到同一節點的鏈接。因此,如果我修改了myFile2或myFile2link的內容,兩者都將看到更改,但如果我刪除了myFile2,則仍然可以通過myFile2link訪問該文件。這就是ls命令中的鏈接計數發揮作用的地方。鏈接數是一個節點擁有的硬鏈接的數量,當你刪除一個文件時,它會減少鏈接數。只有當節點的所有硬鏈接都被刪除時,節點才會被刪除。當你創建一個文件時,它的鏈接計數是1,因為它是唯一指向該節點的文件。與符號鏈接不同,硬鏈接不跨文件系統,因為索引節點對于文件系統是唯一的。

小結

?

好了,這次就總結到這里吧。本文我們總結了Linux系統下文件系統相關的常用且重要的知識點,希望對小伙伴們有所幫助!喜歡的小伙伴記得點贊??、分享??、再看?,你的每一個動作都是對作者的最大支持!

相關閱讀

主站蜘蛛池模板: 成人在线视频看看 | 欧美精品被 | 国产精品无码专区在线观看 | 亚洲视频免费观看 | 91久久久久久久久久久 | 国产一区二区精品自拍 | 日韩欧美日韩在线 | 亚洲精品视频久久 | 国产精品久久久亚洲 | 成人午夜看片 | xx视频在线观看 | 久在线精品视频 | 久久久新视频 | 国产99热 | 亚洲国产精品久久久久 | 福利成人 | 国产精品高潮呻吟久久av野狼 | 91色站 | av大片| 久久久www成人免费精品 | 色久伊人 | 激情五月婷婷丁香 | 久久国内精品 | 日韩字幕| 综合精品 | 一区二区三区四区视频 | 亚洲高清在线 | 91资源在线| 国产精品久久久久久久7777 | 午夜精品一区二区三区在线视频 | 欧美视频成人 | 另类a v| 成人精品区 | 91精品国产乱码久久久久久久久 | 国产女人与拘做受免费视频 | 日本一区二区三区免费观看 | 日日夜精品视频 | 精品九九| 黄色国产视频 | 狠狠操天天干 | 精品少妇一区二区三区在线播放 |