国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入理解Linux文件系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了深入理解Linux文件系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

??????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????慕斯主頁(yè)修仙—?jiǎng)e有洞天?

? ?????????????????????????????????????????????????????????今日夜電波:晴る—ヨルシカ

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0:20━━━━━━???──────── 4:30
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????? ? ?? ? ? ? ?? ? ????

????????????????????????????????????????關(guān)注??點(diǎn)贊??收藏您的每一次鼓勵(lì)都是對(duì)我莫大的支持??


目錄

引入

磁盤的物理存儲(chǔ)結(jié)構(gòu)

磁盤存儲(chǔ)的邏輯抽象結(jié)構(gòu)

理解文件系統(tǒng)

inode

什么是inode?

inode Table

inode Bitmap

Data blocks

Block Bitmap

Super Block

GDT

Boot Block

對(duì)于目錄的理解

硬鏈接和軟鏈接

硬鏈接

硬鏈接的應(yīng)用

軟連接


引入

????????當(dāng)我們使用ls -l命令的時(shí)候,我們可以看到的除了看到文件名,還看到了文件元數(shù)據(jù) 。而對(duì)于所表示部分的理解,依次分別為:權(quán)限部分、鏈接數(shù)、文件所有者、文件所屬組、文件的大小、文件的最后修改時(shí)間、以及文件名。

????????例子:第一行a.out的對(duì)應(yīng)表示:

  • rwxrwxr-x:這是文件權(quán)限部分,共有10個(gè)字符,分為4組,每組3個(gè)字符。第一組表示文件所有者的權(quán)限,第二組表示文件所屬組的權(quán)限,第三組表示其他用戶的權(quán)限。
    • rwx:表示文件所有者具有讀(r)、寫(w)和執(zhí)行(x)權(quán)限。
    • rwx:表示文件所屬組具有讀(r)、寫(w)和執(zhí)行(x)權(quán)限。
    • r-x:表示其他用戶具有讀(r)和執(zhí)行(x)權(quán)限,但沒有寫(w)權(quán)限。
  • 1:表示鏈接數(shù),這里有一個(gè)鏈接指向該文件。
  • amazon:表示文件所有者的用戶名是amazon。
  • amazon:表示文件所屬組的用戶名是amazon。
  • 8560:表示文件的大小為8560字節(jié)。
  • Jan 15 20:57:表示文件的最后修改時(shí)間為2022年1月15日20點(diǎn)57分。
  • a.out:表示文件名是a.out。

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????當(dāng)然,如果想查看更詳細(xì)的有關(guān)信息可以使用stat命令

????????還是以a.out為例:

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????對(duì)于以上的解析:

????????文件名為'a.out',大小為8560字節(jié),屬于普通文件。文件的權(quán)限設(shè)置為-rwxrwxr-x,表示文件所有者具有讀、寫和執(zhí)行權(quán)限,文件所屬組和其他用戶只有讀和執(zhí)行權(quán)限。文件的設(shè)備號(hào)為fd01h/64769d,inode編號(hào)為1310801,鏈接數(shù)為1。文件的訪問(wèn)時(shí)間是2024年1月15日20點(diǎn)57分22秒395467毫秒,修改時(shí)間是2024年1月15日20點(diǎn)57分19秒028325毫秒,更改時(shí)間也是2024年1月15日20點(diǎn)57分19秒028325毫秒。文件沒有創(chuàng)建時(shí)間。

????????對(duì)于上述的兩個(gè)例子,我們對(duì)于其中的信息大多都是認(rèn)識(shí)的,但是對(duì)于Blocks、Inode、Links等卻不怎么熟悉,接下來(lái)的文章將圍繞文件系統(tǒng)的物理到系統(tǒng)來(lái)敘述,即:從物理層面的磁盤到系統(tǒng)上的磁盤。以此來(lái)了解這些信息的意義。

磁盤的物理存儲(chǔ)結(jié)構(gòu)

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????由上圖可見,一個(gè)盤面可以有很多的同心磁道,一圈磁道可以有很多扇形的扇區(qū),而扇區(qū)就是最小的存儲(chǔ)單元(大概512B或者4KB)。而存儲(chǔ)文件的本質(zhì)就是向這些扇區(qū)進(jìn)行寫入!這是通過(guò)上電改變磁盤中顆粒的磁極朝向來(lái)作為0/1進(jìn)而看作寫入數(shù)據(jù),讀取也是讀取磁極的朝向來(lái)看作讀取0/1進(jìn)而讀取數(shù)據(jù)。如果我們想向一個(gè)扇區(qū)寫入,我們?nèi)绾芜M(jìn)行尋址、定位呢?1、選擇哪一面盤片—本質(zhì)上就是選擇磁頭。2、選擇該面上的哪一個(gè)磁道。3、選擇在該磁道上的哪一個(gè)扇區(qū)。當(dāng)然,由于我們是有多個(gè)盤片的,我們可以向一個(gè)寫入,想當(dāng)然的也可以向任意一個(gè)/連續(xù)多個(gè)扇區(qū)寫入,也可以隨機(jī)寫入。

磁盤存儲(chǔ)的邏輯抽象結(jié)構(gòu)

????????通過(guò)上面對(duì)于物理層面磁盤的理解。接下來(lái)我們需要將這個(gè)結(jié)構(gòu)抽象到系統(tǒng)中!一個(gè)磁盤中有多個(gè)盤片,盤片中分為多個(gè)磁道,通過(guò)一定的劃分可以劃分為多個(gè)扇區(qū)(可以理解為從盤片圓心拉出來(lái)很多條線,然后其中兩條線以及磁道分割出來(lái)的區(qū)域)。對(duì)此我們可以將整個(gè)磁盤想像成如下的一個(gè)結(jié)構(gòu),將磁盤盤片想像成線性空間(可以理解為一個(gè)數(shù)組)。如下圖所示,我們可以這樣理解對(duì)應(yīng)的結(jié)構(gòu):

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????于是經(jīng)過(guò)上述的操作我們將對(duì)于磁盤的管理就變成了對(duì)線性空間的管理!接下來(lái),我們先理解一個(gè)概念:

????????CHS-CHS指的是Cylinder(柱面)、Head(磁頭)、Sector(扇區(qū))。這是一種磁盤尋址方式,獲取這些CHS信息,通過(guò)這些信息就可以對(duì)磁盤的信息進(jìn)行定位。

????????理解了CHS后,那我們的OS中是直接使用CHS來(lái)進(jìn)行對(duì)應(yīng)的管理嗎?答案為否,OS是軟件,磁盤是硬件,硬件定位一個(gè)地址,用的是CHS,但是如果OS直接用了這個(gè)地址,此時(shí)硬件發(fā)生改變,OS也要發(fā)生變化,所以O(shè)S要和硬件做好解耦工作。這就需要Logical Block Address - LBA。

????????我們可以在操作系統(tǒng)中以一個(gè)一定的數(shù)據(jù)結(jié)構(gòu)(可以想像成數(shù)組)來(lái)對(duì)磁盤進(jìn)行管理。這個(gè)時(shí)候,對(duì)于磁盤的管理就變成了對(duì)數(shù)組的管理!

????????需要注意的是:操作系統(tǒng)可以按照扇區(qū)為單位進(jìn)行存儲(chǔ)也可以基于文件系統(tǒng),按照文件塊為單位進(jìn)行數(shù)據(jù)存?。ㄒ话銥?KB),這樣效率會(huì)比較高—即內(nèi)存到磁盤,磁盤到內(nèi)存的IO交互。

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????對(duì)于LBA—CHS的轉(zhuǎn)化:

????????我們可以定義一系列的規(guī)則來(lái)對(duì)于磁盤進(jìn)行管理,比如:數(shù)組下標(biāo)1-100000為第一面,100001-200000為第二面,第一面中1-10000為第一個(gè)磁道,1-1000為第一個(gè)扇區(qū)等等。

理解文件系統(tǒng)

????????理解了上述的相關(guān)知識(shí)點(diǎn)后,我們知道了對(duì)于磁盤的管理實(shí)際上就是對(duì)于OS中“數(shù)組”的管理。而為了方便管理,我們可以通過(guò)分治的思想將數(shù)組再進(jìn)行分區(qū),這個(gè)也可以理解成我們windows中的分盤,你的SSD只有一塊,但是分出來(lái)了兩個(gè)盤。如下C和D盤:

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????對(duì)于管理整個(gè)磁盤太困難,就如上圖,我們管理512G太難,那么就分多幾個(gè)區(qū)來(lái)管理,你可以分100G、150G等等。最后,我們可以用管理小區(qū)域的經(jīng)驗(yàn)進(jìn)行復(fù)制,從而管理整體。

????????雖然,我們將磁盤進(jìn)行了分區(qū),但是分區(qū)完后仍然很大,這個(gè)時(shí)候我們可以進(jìn)一步劃分,這個(gè)進(jìn)一步劃分叫做—分組。我們可以將每個(gè)分區(qū)劃分為2GB大小的組,通過(guò)對(duì)每個(gè)組進(jìn)行管理,在將管理的經(jīng)驗(yàn)進(jìn)行復(fù)制,從而管理整體。如下:

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????Linux ext2文件系統(tǒng),上圖為磁盤文件系統(tǒng)圖(內(nèi)核內(nèi)存映像肯定有所不同),磁盤是典型的塊設(shè)備,硬盤分區(qū)被劃分為一個(gè)個(gè)的block。一個(gè)block的大小是由格式化的時(shí)候確定的,并且不可以更改。例如mke2fs的-b選項(xiàng)可以設(shè)定block大小為1024、2048或4096字節(jié)。而上圖中啟動(dòng)塊(Boot Block)的大小是確定的,。

????????Block Group:ext2文件系統(tǒng)會(huì)根據(jù)分區(qū)的大小劃分為數(shù)個(gè)Block Group。而每個(gè)Block Group都有著相同的結(jié)構(gòu)組成。政府管理各區(qū)的例子

????????超級(jí)塊(Super Block):存放文件系統(tǒng)本身的結(jié)構(gòu)信息。記錄的信息主要有:bolck 和 inode的總量,未使用的block和inode的數(shù)量,一個(gè)block和inode的大小,最近一次掛載的時(shí)間,最近一次寫入數(shù)據(jù)的時(shí)間,最近一次檢驗(yàn)磁盤的時(shí)間等其他文件系統(tǒng)的相關(guān)信息。Super Block的信息被破壞,可以說(shuō)整個(gè)文件系統(tǒng)結(jié)構(gòu)就被破壞了

????????GDT,Group Descriptor Table:塊組描述符,描述塊組屬性信息,有興趣的同學(xué)可以在了解一下塊位圖(Block Bitmap):Block Bitmap中記錄著Data Block中哪個(gè)數(shù)據(jù)塊已經(jīng)被占用,哪個(gè)數(shù)據(jù)塊沒有被占用

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

????????i節(jié)點(diǎn)表:存放文件屬性 如 文件大小,所有者,最近修改時(shí)間等

????????數(shù)據(jù)區(qū):存放文件內(nèi)容

????????需要注意的是:在文件系統(tǒng)中,文件信息=內(nèi)容+屬性。他們都是數(shù)據(jù),內(nèi)容和屬性是分開存儲(chǔ)的,但是需要讓管理數(shù)據(jù)寫入到塊組當(dāng)中。

inode

ls -li//顯示出具體的信息,包含inode編號(hào)

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????一般情況,一個(gè)文件一個(gè)inode編號(hào),基本上,每個(gè)文件都要有inode。在整個(gè)分區(qū)具有唯一性,Linux內(nèi)核中,識(shí)別文件和文件名是無(wú)關(guān)的,只和inode有關(guān)。

什么是inode?

????????在Linux系統(tǒng)中,inode是一種數(shù)據(jù)結(jié)構(gòu),大小通常為128B。它的主要功能是用于描述和定位文件系統(tǒng)中的文件和目錄。每個(gè)文件或目錄都由一個(gè)或多個(gè)inode組成,這些inode包含了文件或目錄的所有信息,如文件大小、創(chuàng)建時(shí)間、修改時(shí)間、權(quán)限等。可以這樣理解:

struct inode{
	int ref_count;//引用計(jì)數(shù)
    大小、權(quán)限、所有者、所屬組、ACM時(shí)間、inode編號(hào)等
    int blocks[N]
}
inode Table

????????inode表里面會(huì)存儲(chǔ)很多的inode。每一個(gè)inode的大小是固定的,也就是128B,那么我們可以通過(guò)inode編號(hào)對(duì)固定大小的偏移量進(jìn)行偏移就可找到對(duì)應(yīng)的inode。你可以理解為:通常每一個(gè)分組都會(huì)有一個(gè)起始inode編號(hào),當(dāng)要計(jì)算inode編號(hào)時(shí),通過(guò)偏移量加上起始inode編號(hào)就可得出。那如果我們想知道定位對(duì)應(yīng)的分組位置,也可通過(guò)減去起始inode編號(hào)來(lái)定位。

inode Bitmap

????????inode bitmap是一種數(shù)據(jù)結(jié)構(gòu),它的主要功能是用于追蹤inode table在Linux系統(tǒng)中,inode bitmap是一種數(shù)據(jù)結(jié)構(gòu),它的主要功能是用于追蹤inode table中的每個(gè)inode是否已經(jīng)被使用。具體來(lái)說(shuō),每個(gè)bitmap中的每一個(gè)位都對(duì)應(yīng)于inode table中的一個(gè)inode,如果該位為0,則表示對(duì)應(yīng)的inode為空,如果為1,則表示相應(yīng)的inode entry已被使用。

????????這種位圖技術(shù)(bitmap)的優(yōu)勢(shì)在于,當(dāng)需要修改文件系統(tǒng)時(shí),可以快速找到空閑的inode位置。例如,當(dāng)需要新建一個(gè)文件時(shí),系統(tǒng)會(huì)先檢查inode bitmap中哪些inode是空閑的,然后將新文件的信息存儲(chǔ)到這個(gè)空閑的inode中。同樣地,當(dāng)文件被刪除時(shí),對(duì)應(yīng)的inode會(huì)被標(biāo)記為可用,以供后續(xù)的新建文件使用。

Data blocks

????????在Linux系統(tǒng)中,數(shù)據(jù)區(qū)塊(block)是文件存儲(chǔ)的最小單位,每個(gè)由多個(gè)連續(xù)性的扇區(qū)(sector)組成,每個(gè)扇區(qū)通常是512字節(jié)。而一個(gè)數(shù)據(jù)塊最常見的大小則是4KB,即連續(xù)8個(gè)sector組成,用于存儲(chǔ)文件數(shù)據(jù)和目錄數(shù)據(jù)。

????????需要注意的是:上面提到的inode中會(huì)維護(hù)一個(gè)blocks數(shù)組,這個(gè)數(shù)組記錄的是對(duì)應(yīng)數(shù)據(jù)區(qū)塊的塊號(hào),需要讀取文件就可根據(jù)這些塊號(hào)來(lái)讀??!這個(gè)數(shù)組大小大概為15,,其中0-12位為直接映射,13:為間接映射,14為三級(jí)映射。

????????看到這里,你應(yīng)該就明白了,只要我們知道了inode編號(hào)我們就可以根據(jù)inode編號(hào)找到對(duì)應(yīng)的分組,再通過(guò)分組找到對(duì)應(yīng)的inode數(shù)據(jù)結(jié)構(gòu),然后通過(guò)inode里面的blocks數(shù)組來(lái)進(jìn)一步找到對(duì)應(yīng)的數(shù)據(jù)區(qū)塊讀取對(duì)應(yīng)的數(shù)據(jù)。

Block Bitmap

????????block bitmap是一種數(shù)據(jù)結(jié)構(gòu),它的主要功能是用于追蹤每個(gè)block group中哪些block已經(jīng)被使用。具體來(lái)說(shuō),block bitmap是一個(gè)特殊的文件,其大小恰好為一個(gè)block,而在這個(gè)block中,每個(gè)bit表示一個(gè)對(duì)應(yīng)block的占用情況。如果該位為0,則表示對(duì)應(yīng)的block為空,如果為1,則表示相應(yīng)的block中存有數(shù)據(jù)。

????????這種block bitmap技術(shù)的優(yōu)勢(shì)在于,當(dāng)需要讀取或修改文件時(shí),可以快速找到空閑的block位置。例如,當(dāng)執(zhí)行寫入操作時(shí),系統(tǒng)會(huì)首先檢查block bitmap,找出哪些block是空閑的,然后將新的數(shù)據(jù)寫入到這些空閑的block中。同樣地,當(dāng)某個(gè)block不再使用時(shí),系統(tǒng)會(huì)在block bitmap中將相應(yīng)的bit標(biāo)記為可用,以供后續(xù)的存儲(chǔ)操作使用。

????????此外,需要注意的是,一個(gè)block group中最多只能包含8×4096=32768個(gè)block。因此,對(duì)于一個(gè)含有大量數(shù)據(jù)的磁盤分區(qū)來(lái)說(shuō),可能需要多個(gè)block bitmap來(lái)分別記錄各個(gè)block group的使用情況。

????????看到這里你也應(yīng)該明白了,新建、刪除文件只需要改位圖即可!

Super Block

????????在Linux操作系統(tǒng)中,superblock是一個(gè)特殊的數(shù)據(jù)結(jié)構(gòu),它記錄了文件系統(tǒng)的整體信息,包括inode和block的總量、使用量、剩余量,以及檔案系統(tǒng)的格式與相關(guān)信息等。具體來(lái)說(shuō),它包含了文件系統(tǒng)的類型、block大小、block總數(shù)、inode大小、inode總數(shù)、group的總數(shù)等等。此外,每個(gè)Group 中的SuperBlock都是對(duì) Main SuperBlock(主SuperBlock)的備份,用于處理主SuperBlock故障或者誤刪的情況。

????????為了保證數(shù)據(jù)的安全性,Linux會(huì)周期性地將所有“臟”的超級(jí)塊寫回磁盤,以減少數(shù)據(jù)丟失的風(fēng)險(xiǎn)。這種與超級(jí)塊關(guān)聯(lián)的操作是由數(shù)據(jù)結(jié)構(gòu)super_operations來(lái)描述的,該結(jié)構(gòu)的起始地址存放在超級(jí)塊的s_op域中。

????????需要注意的是:只有個(gè)別組內(nèi)會(huì)有SuperBlock,并不是所有的組都有。

????????總的來(lái)說(shuō),superblock是Linux文件系統(tǒng)中非常重要的一部分,它記錄了文件系統(tǒng)的關(guān)鍵信息,并負(fù)責(zé)管理文件系統(tǒng)的運(yùn)行。通過(guò)superblock,我們可以了解到文件系統(tǒng)的詳細(xì)信息,包括其類型、大小、使用情況等等。同時(shí),它也承擔(dān)著保障數(shù)據(jù)安全的重要任務(wù)。

GDT

????????在Linux操作系統(tǒng)中,GDT(Global Descriptor Table)是一種全局描述符表,主要用于管理和定位內(nèi)存地址空間。在實(shí)模式下,當(dāng)我們需要對(duì)一個(gè)內(nèi)存地址進(jìn)行訪問(wèn)時(shí),我們使用的是【段基地址:偏移地址】的形式來(lái)計(jì)算內(nèi)存的實(shí)際地址。然而,當(dāng)系統(tǒng)進(jìn)入到保護(hù)模式后,內(nèi)存管理被分為段式和段頁(yè)式,這時(shí)就需要使用到GDT。

????????GDT可以看作是一個(gè)描述符數(shù)組,其中的每個(gè)元素都被稱為一個(gè)選擇子。選擇子的主要作用是確定段描述符,其目的一方面是為了實(shí)現(xiàn)特權(quán)級(jí)、界限等安全考慮,另一方面則是為了確定段的基地址。具體來(lái)說(shuō),GDT中的每一項(xiàng)都是由8字節(jié)組成,其中包括了段限、基址等關(guān)鍵信息。

????????總的來(lái)說(shuō),GDT是Linux操作系統(tǒng)用來(lái)進(jìn)行內(nèi)存管理和保護(hù)的一種重要數(shù)據(jù)結(jié)構(gòu)。它通過(guò)有效地劃分和管理內(nèi)存地址空間,為運(yùn)行在操作系統(tǒng)上的各種程序提供了必要的資源和安全保障。

Boot Block

????????在Linux中,引導(dǎo)塊(Boot Block)是每個(gè)磁盤分區(qū)的開頭部分,它預(yù)留了1024字節(jié)的大小來(lái)存放引導(dǎo)程序和數(shù)據(jù)。這個(gè)區(qū)域被稱為引導(dǎo)扇區(qū),可能位于第一個(gè)Block,即Block 0中,但并不一定會(huì)占滿這個(gè)Block,因?yàn)锽lock的大小可能會(huì)大于1024字節(jié)。

????????引導(dǎo)塊中主要包含了啟動(dòng)時(shí)所需的基本信息,如啟動(dòng)加載程序和內(nèi)核。這些信息對(duì)于系統(tǒng)的啟動(dòng)過(guò)程至關(guān)重要。例如,啟動(dòng)加載程序可以負(fù)責(zé)加載更多的系統(tǒng)組件,而內(nèi)核則是計(jì)算機(jī)硬件和系統(tǒng)軟件之間的橋梁,用于控制應(yīng)用程序?qū)τ布脑L問(wèn)。

????????值得注意的是,與BIOS中的引導(dǎo)塊不同,Linux的引導(dǎo)塊不依賴于特定的操作系統(tǒng)或硬件。這是因?yàn)長(zhǎng)inux是一種開源操作系統(tǒng),其設(shè)計(jì)允許在各種不同的硬件和操作系統(tǒng)上運(yùn)行。因此,無(wú)論您使用的是哪種Linux發(fā)行版或計(jì)算機(jī)硬件,引導(dǎo)塊的功能和結(jié)構(gòu)基本相同。

對(duì)于目錄的理解

????????目錄實(shí)際上也是文件,目錄的數(shù)據(jù)塊保存的是目錄下的文件的文件名和inode的映射關(guān)系。通常我們?cè)L問(wèn)一個(gè)文件,打開目錄,根據(jù)文件名,找到inode就可以訪問(wèn)那個(gè)文件了。因此,同一個(gè)目錄下也是不能存在同名文件的!但是我們可以用不同的文件名指向相同的inode。這個(gè)可以理解為指針和地址的關(guān)系!那這個(gè)現(xiàn)象怎么看到呢?這就要說(shuō)到硬鏈接和軟鏈接了。

硬鏈接和軟鏈接

????????硬鏈接和軟鏈接是Linux系統(tǒng)中兩種不同類型的文件鏈接。它們的主要作用是解決文件的共享使用問(wèn)題。

????????硬鏈接(hard link)是指多個(gè)文件名指向同一個(gè)inode節(jié)點(diǎn),即同一個(gè)文件的數(shù)據(jù)塊。它的特點(diǎn)是:

  • 不允許給文件指定不同的路徑;
  • 不能跨分區(qū);
  • 刪除一個(gè)硬鏈接并不影響其他硬鏈接和原文件,只有當(dāng)最后一個(gè)硬鏈接被刪除后,原文件才會(huì)被刪除。

????????軟鏈接(又稱符號(hào)鏈接,即 soft link 或 symbolic link)是指一個(gè)文件名指向另一個(gè)文件的路徑。它的特點(diǎn)是:

  • 可以給文件指定不同的路徑;
  • 可以跨分區(qū);
  • 刪除軟鏈接并不影響原文件,但刪除原文件后,軟鏈接將失效。
硬鏈接
ln 目標(biāo)文件 硬鏈接文件名

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????可以看到進(jìn)行硬鏈接后,鏈接數(shù)由1變?yōu)榱?,而他們的inode編號(hào)是一樣的,這就是說(shuō)明兩個(gè)文件指向的是同一個(gè)文件。當(dāng)你將其中一個(gè)文件刪除后,會(huì)發(fā)現(xiàn)連接數(shù)又變回了1。

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????根據(jù)上面inode的數(shù)據(jù)結(jié)構(gòu)我們可知,其中有一個(gè)引用計(jì)數(shù)的變量,只要有新的指向就會(huì)++,指向減少就會(huì)--,當(dāng)沒有指向了才會(huì)真正的刪除。

硬鏈接的應(yīng)用

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????通過(guò)上圖我們可知,當(dāng)我們創(chuàng)建的是普通的文件時(shí),默認(rèn)的鏈接數(shù)為1,而我們創(chuàng)建了一個(gè)目錄后,默認(rèn)居然是2,這是為什么呢?請(qǐng)看下圖:

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????表示為本級(jí)目錄,而 .. 表示為上級(jí)目錄。. 和 .. 實(shí)際上就是硬鏈接!

軟連接
ln -s 目標(biāo)文件 軟鏈接文件名

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????需要注意的是:如下圖,和硬鏈接不同,軟鏈接指向的inode編號(hào)是不同的。那這個(gè)的作用又是干什么的呢?你可以理解為Windows的快捷方式,對(duì)于他的刪除不會(huì)影響原來(lái)的文件。

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維


?????????????????????????感謝你耐心的看到這里?( ′???` )比心,如有哪里有錯(cuò)誤請(qǐng)?zhí)咭荒_作者o(╥﹏╥)o!?

????????????????????????????????? ? ? ?深入理解Linux文件系統(tǒng),Linux練功 初階功法,linux,服務(wù)器,運(yùn)維

????????????????????????????????????????????????????????????????????????給個(gè)三連再走嘛~??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-805205.html

到了這里,關(guān)于深入理解Linux文件系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】深入理解系統(tǒng)文件操作(1w字超詳解)

    【Linux】深入理解系統(tǒng)文件操作(1w字超詳解)

    ?是不是只有CC++有文件操作呢???Python、Java、PHP、go也有,他們的文件操作的方法是不一樣的啊 1.1對(duì)于文件操作的思考: 我們之前就說(shuō)過(guò)了: 文件=內(nèi)容+屬性 針對(duì)文件的操作就變成了對(duì)內(nèi)容的操作和對(duì)屬性的操作 ?當(dāng)文件沒有被操作的時(shí)候,文件一般會(huì)在什么位置???

    2024年02月07日
    瀏覽(26)
  • Linux Centos系統(tǒng) 磁盤分區(qū)和文件系統(tǒng)管理 (深入理解)

    Linux Centos系統(tǒng) 磁盤分區(qū)和文件系統(tǒng)管理 (深入理解)

    作者主頁(yè): 點(diǎn)擊! Linux專欄:點(diǎn)擊! 磁盤 在Linux系統(tǒng)中,磁盤是一種用于存儲(chǔ)數(shù)據(jù)的物理設(shè)備,可以是傳統(tǒng)的硬盤驅(qū)動(dòng)器(HDD)或固態(tài)硬盤(SSD)。Linux將磁盤設(shè)備視為塊設(shè)備,它們通常以文件形式表示在 /dev 目錄下。 文件系統(tǒng) 在計(jì)算機(jī)系統(tǒng)中, 文件系統(tǒng) 定義了如何存儲(chǔ)

    2024年03月15日
    瀏覽(23)
  • 【Linux】深入理解文件操作

    【Linux】深入理解文件操作

    初次談?wù)撐募?開始之前先談?wù)撘幌玛P(guān)于文件的一些共識(shí)性問(wèn)題。 一個(gè)文件可以分為兩部分,內(nèi)容和屬性。 基于上面的認(rèn)識(shí),空文件也要在磁盤中占據(jù)空間,因?yàn)榭瘴募膬?nèi)容為空,但是還有屬性在,例如文件的創(chuàng)建時(shí)間… 而這部分屬性也是要存儲(chǔ)的。 所以對(duì)文件的操作就

    2024年02月11日
    瀏覽(17)
  • 【Linux】深入理解文件緩沖區(qū)

    【Linux】深入理解文件緩沖區(qū)

    問(wèn)題引入 首先看一段代碼: 運(yùn)行代碼,結(jié)果如下: 如果此時(shí)將輸出結(jié)果重定向一下: 會(huì)發(fā)現(xiàn) printf 、 fwrite 都打印了兩次。 究其原因,就要談到緩沖區(qū)和緩沖區(qū)刷新策略的概念了。 如何理解緩沖區(qū) 假設(shè)你在青島,你要從網(wǎng)上買一件商品,商家所在地是北京。你不會(huì)跑去北

    2024年02月11日
    瀏覽(27)
  • 【Linux操作系統(tǒng)】深入理解Linux磁盤分區(qū)和掛載

    Linux磁盤分區(qū)和掛載是系統(tǒng)管理中非常重要的一部分,它們可以幫助我們更好地管理存儲(chǔ)空間和文件系統(tǒng)。本文將詳細(xì)介紹Linux磁盤分區(qū)和掛載的概念、原理以及實(shí)踐操作,并提供相應(yīng)的例子、代碼和指令,幫助讀者全面了解和掌握這兩個(gè)關(guān)鍵概念。 磁盤分區(qū)是將物理硬盤劃

    2024年02月14日
    瀏覽(26)
  • Linux權(quán)限大揭秘:深入理解系統(tǒng)安全

    Linux權(quán)限大揭秘:深入理解系統(tǒng)安全

    W...Y的主頁(yè) ?? 代碼倉(cāng)庫(kù)分享??? ??前言: 在之前的內(nèi)容中,我們了解了Linux中的一些簡(jiǎn)單權(quán)限,如root超級(jí)賬號(hào)與普通賬戶的區(qū)別、Linux文件權(quán)限管理、文件類型和訪問(wèn)權(quán)限以及許多關(guān)于修改權(quán)限的指令及其規(guī)則……今天我們繼續(xù)進(jìn)行權(quán)限的學(xué)習(xí),讓我們進(jìn)一步的了解權(quán)限在

    2024年02月08日
    瀏覽(20)
  • 深入理解Linux內(nèi)核——內(nèi)存管理(4)——伙伴系統(tǒng)(1)

    深入理解Linux內(nèi)核——內(nèi)存管理(4)——伙伴系統(tǒng)(1)

    提要:本系列文章主要參考 MIT 6.828課程 以及兩本書籍 《深入理解Linux內(nèi)核》 《深入Linux內(nèi)核架構(gòu)》 對(duì)Linux內(nèi)核內(nèi)容進(jìn)行總結(jié)。 內(nèi)存管理的實(shí)現(xiàn)覆蓋了多個(gè)領(lǐng)域: 內(nèi)存中的物理內(nèi)存頁(yè)的管理 分配大塊內(nèi)存的伙伴系統(tǒng) 分配較小內(nèi)存的slab、slub、slob分配器 分配非連續(xù)內(nèi)存塊的

    2024年02月10日
    瀏覽(22)
  • 深入理解Linux權(quán)限管理:保護(hù)系統(tǒng)安全的重要措施

    Linux操作系統(tǒng)以其穩(wěn)定性、可靠性和靈活性而受到廣泛使用。其中一個(gè)關(guān)鍵特性是其強(qiáng)大的權(quán)限管理系統(tǒng),它可以保護(hù)系統(tǒng)資源和用戶數(shù)據(jù)的安全性。本文將深入探討Linux權(quán)限管理的概念、原則和實(shí)踐,幫助您理解如何正確配置和管理權(quán)限,以確保系統(tǒng)的安全性和完整性。 第

    2024年02月11日
    瀏覽(14)
  • 【Linux深入剖析】馮·諾依曼體系結(jié)構(gòu)以及操作系統(tǒng)的深入理解

    【Linux深入剖析】馮·諾依曼體系結(jié)構(gòu)以及操作系統(tǒng)的深入理解

    ??你好,我是 RO-BERRY ?? 致力于C、C++、數(shù)據(jù)結(jié)構(gòu)、TCP/IP、數(shù)據(jù)庫(kù)等等一系列知識(shí) ??感謝你的陪伴與支持 ,故事既有了開頭,就要畫上一個(gè)完美的句號(hào),讓我們一起加油 馮·諾依曼體系結(jié)構(gòu),也被稱為普林斯頓結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)

    2024年03月17日
    瀏覽(29)
  • 【Linux操作系統(tǒng)】深入理解系統(tǒng)調(diào)用中的read和write函數(shù)

    【Linux操作系統(tǒng)】深入理解系統(tǒng)調(diào)用中的read和write函數(shù)

    在操作系統(tǒng)中,系統(tǒng)調(diào)用是用戶程序與操作系統(tǒng)之間進(jìn)行交互的重要方式。其中,read和write函數(shù)是常用的系統(tǒng)調(diào)用函數(shù),用于在用戶程序和操作系統(tǒng)之間進(jìn)行數(shù)據(jù)的讀取和寫入。本文將深入介紹read和write函數(shù)的工作原理、用法以及示例代碼,以幫助讀者更好地理解和應(yīng)用這兩

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包