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

Linux之文件系統(tǒng)與軟硬鏈接

這篇具有很好參考價值的文章主要介紹了Linux之文件系統(tǒng)與軟硬鏈接。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、磁盤

1、磁盤的物理結構

2、磁盤的存儲結構

3、磁盤的抽象結構

二、文件系統(tǒng)與inode

1、初識inode

2、文件系統(tǒng)

3、用inode編號找文件屬性和內(nèi)容

4、inode和文件名的關系

5、創(chuàng)建一個文件

6、查看一個文件

7、刪除一個文件

三、軟硬鏈接

1、軟連接

2、硬鏈接


一、磁盤

磁盤可以存儲大量的二進制數(shù)據(jù),并且斷電后也能保持數(shù)據(jù)不丟失。因此磁盤是一種永久性存儲介質,在計算機中,磁盤是一個外設,也是唯一的機械設備。既然磁盤是一個外設,那么就意味著,磁盤和內(nèi)存(掉電易失存儲介質)相比就比較慢了。

目前所有的普通文件都是在磁盤中存儲的。磁盤在馮諾依曼體系結構當中既可以充當輸入設備,又可以充當輸出設備。

1、磁盤的物理結構

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

磁盤的盤片/盤面是用來存儲數(shù)據(jù)的,兩面都有。磁頭(每一面都有一個磁頭)和盤面并沒有接觸。中間有音圈馬達,一旦磁盤通電之后,盤片旋轉,磁頭擺動,馬達可以控制磁頭擺動,控制盤片旋轉,通過磁頭將二進制數(shù)據(jù)寫到磁盤上。

因為磁盤上存儲的是二進制數(shù)據(jù),數(shù)據(jù)是兩態(tài)的,而磁盤上有許多小的磁鐵顆粒,所以磁頭是通過改變磁盤上的正負性來寫入數(shù)據(jù)的。

2、磁盤的存儲結構

我們在知道了磁盤的物理結構后,知道盤片是用來存儲數(shù)據(jù)的。那么磁盤是怎么通過磁頭將數(shù)據(jù)存儲到某一位置,然后又能重新找到呢?這就和磁盤的存儲方法有關了。

如下圖:

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

扇區(qū):一塊綠色的部分就是扇區(qū)。磁盤存儲數(shù)據(jù)的基本單位。扇區(qū)大小512字節(jié),512字節(jié)是硬件要求。

磁道:左圖中,一圈一圈的灰色的同心圓就是磁道。磁盤上只有磁道位置能夠存儲數(shù)據(jù),其他位置則不能存儲數(shù)據(jù)。

柱面:多個半徑相同的圓構成柱面。如右圖紫色的部分。

如何將數(shù)據(jù)寫到指定的扇區(qū)上:1、首先確認寫到哪一個面上(用哪一個磁頭去寫入) 2、在哪一個磁道上? ?3、最后找到在哪一個扇區(qū)。

磁盤中存儲數(shù)據(jù),需要先定位扇區(qū),定位任何一個扇區(qū),采用的硬件級別定位方式(CHS定位法):柱面Cylinder——磁頭Head——扇區(qū)Sector。

3、磁盤的抽象結構

由于操作系統(tǒng)并不認識磁盤的物理結構,因此操作系統(tǒng)在訪問磁盤時必須使用自己的方式將磁盤的數(shù)據(jù)管理起來。我們可以把磁盤盤片想象成線性結構。在操作系統(tǒng)的角度,磁盤就是一個線性結構。我們使用數(shù)組來表示一個磁盤。要訪問某個扇區(qū),只需要找到數(shù)組下標,也就是說知道這個扇區(qū)的下標就算定位了一個扇區(qū)。

在操作系統(tǒng)中,我們稱這種地址為LBA(Logic Block Address)地址。而要寫到物理磁盤上,我們就要把LBA地址轉換成對應磁盤的三維地址CHS地址。

于是在操作系統(tǒng)中,對于磁盤的管理,就變成了對于該數(shù)組的管理。操作系統(tǒng)能夠通過某種方法,將LBA地址轉換成CHS地址,進而可以訪問磁盤數(shù)據(jù)。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

二、文件系統(tǒng)與inode

1、初識inode

如下圖:我們使用 ls -li 命令后,發(fā)現(xiàn)除了文件的名稱、類型、權限、擁有者、所屬組、大小最近修改時間這些內(nèi)容,每個文件的最開始會有一串數(shù)字。那么這個數(shù)字是什么呢?其實這個數(shù)字就是該文件的inode編號。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

那么inode編號代表著什么意思呢?我們接著往下看。?

2、文件系統(tǒng)

在操作系統(tǒng)中,對于磁盤的管理,本質上就是對于磁盤抽象成的數(shù)組的管理。而我們知道,如果一個磁盤的空間是很大的,所以抽象出的數(shù)組也一定是很大的,那么操作系統(tǒng)如何管理這么大的數(shù)組的呢?

我們假設一個磁盤有500GB的大小。如果直接對這500GB進行管理,那是十分麻煩的。所以我們可以將磁盤分成多個小的分區(qū)。對一個小的分區(qū)進行管理。我們?nèi)绻麑⑺行〉姆謪^(qū)管理好了,那么整個磁盤就管理好了。如果一個分區(qū)還是比較大,那么我們可以繼續(xù)劃分,最后,我們得到一個便于管理的塊組。把一個塊組管理好,這個分區(qū)就管理好了,分區(qū)管理好了,整個磁盤就管理好了。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

下面我們對一個塊組中的內(nèi)容進行解釋:

Boot Block:一個分區(qū)的最前面,有一個區(qū)域叫做boot block。它是啟動塊,存在每個分區(qū)的開頭,備份文件與啟動相關的。

Super Block:保存的是整個文件系統(tǒng)的屬性信息。Super Block保存在各個塊組里意味著備份,如果某個塊組的 Super Block損壞,便可以通過拷貝其他塊組的Super Block。

Data blocks:保存特定文件的內(nèi)容。雖然磁盤存儲數(shù)據(jù)的基本單位是扇區(qū)(512字節(jié)),但是操作系統(tǒng)(文件系統(tǒng))和磁盤進行IO的基本單位是4KB。data blocks相當于多個4KB大小的空間的集合。Linux的文件=內(nèi)容+屬性,而Linux在磁盤上存儲文件是將內(nèi)容和屬性是分開存儲的。

inode table:inode是一個大小為128字節(jié)的空間,保存對應文件的屬性。inode table 則是多個inode空間的集合,所以為了區(qū)別,每一個inode空間對應一個inode編號。即:一般而言,一個文件,一個inode空間,一個inode編號。

data blocks和inode tables都是由許多個小的空間組成的,那么我們在向磁盤寫入數(shù)據(jù)時,我們怎么知道哪些空間被占用了,哪些空間沒有被占用呢?我們可以使用block bitmap和inode bitmap來標注這些空間的占用情況。

block bitmap:data blocks對應的位圖結構,位圖中的比特位位置和當前data block對應的數(shù)據(jù)塊位置是一一對應的。比特位為1,代表block被占用,否則表示可用。

inode bitmap:inode對應的位圖結構,統(tǒng)計inode的使用情況,位圖中比特位的位置和當前文件對應的inode的位置是一樣對應的,比特位為1,代表inode被占用,否則表示可用。

GDT(group descripteor table):塊組描述符,表示該塊組的屬性信息,如已經(jīng)使用多少,inode有多少個,已經(jīng)被占用了多少個,還剩下多少個。

格式化:當磁盤完成分區(qū)后,我們還需要對磁盤進行格式化。磁盤格式化就是對磁盤中的分區(qū)進行初始化的一種操作,即:磁盤格式化就是對分區(qū)后的各個區(qū)域寫入對應的管理信息,如block bitmap和inode bitmap全部初始化成為0。所以格式化通常會導致現(xiàn)有的磁盤或分區(qū)中所有的文件被清除。

所以,一個塊組的前四個部分被我們稱為文件系統(tǒng)信息,后面兩個部分就是文件的相關內(nèi)容信息。

3、用inode編號找文件屬性和內(nèi)容

既然文件的屬性和內(nèi)容是分開存儲的,那么我們要怎么通過inode編號去找到它呢?

首先,屬性是很容易就可以找到的,因為我們只要知道了inode編號,就可以直接找到文件的屬性。但是,想要找到文件的內(nèi)容就不是那么容易了。第一點,我們無法通過某種方式直接找到,而且一個文件的大小是可以很大的,這就說明了一個文件的內(nèi)容會被存儲在多個 data blocks中,我們必須將所有的data blocks找到,才是找到了文件的內(nèi)容,但是我們怎么知道哪些data blocks屬于同一個文件。

那么我們應該怎么尋找文件的內(nèi)容呢?在Data blocks中,每個data block都會有一個編號。而inode其實是一個結構體,它的里面除了文件的各種屬性信息外,還有一個int blocks數(shù)組,該數(shù)組里保存的數(shù)字,就是對應的data block的編號,通過這個數(shù)組,我們就可以找到屬于該文件的所有內(nèi)容。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

但是,這里就又有一個疑問了, blocks數(shù)組一般只能存15個編號,可是如果文件內(nèi)容的data block個數(shù)多于數(shù)組大小呢?這當然是有解決辦法的。

并不是所有的data block只能存放文件的內(nèi)容,也可以存放其他塊的編號,所以最終指向更多的data block來存儲。如下圖:

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

4、inode和文件名的關系

首先,我們要知道的是,在Linux中,inode屬性里面并沒有文件名的概念。但是,用戶使用時使用的卻是文件名,而不是系統(tǒng)認識的inode,這是為什么呢?

在一個目錄下,可以保存很多的文件,且同一個目錄下文件名是沒有重復的。其實,目錄也是一個文件,它也有自己的inode和data block。目錄的data block中保存的就是該目錄下的文件的文件名與其inode編號的映射關系。

5、創(chuàng)建一個文件

在inode bitmap中對應的比特位由0置為1,找到其inode table,把屬性填進去,文件的數(shù)據(jù)寫到block里,再inode和block建立映射關系,然后block bitmap中對應的比特位由0變?yōu)?,接著文件名和inode編號建立映射關系,最后返回inode編號,創(chuàng)建成功。

所以我們在一個目錄下創(chuàng)建一個新的文件,必須有寫的權限,新建一個文件的時候,要向當前目錄的內(nèi)容里去寫文件名和inode的映射關系,所以必須得有寫入權限。

6、查看一個文件

拿到inode找到inode table,在根據(jù)inode table找到對應的數(shù)據(jù)塊,內(nèi)容加屬性就全找到了。

7、刪除一個文件

實際上刪除一個文件時,我們只需要找到inode在inode bitmap當中的比特位和block bitmap中的比特位,把比特位由1置為0,然后解除文件名和inode編號的映射關系。

所以把文件刪除是能夠恢復的,因為刪除只是把比特位清掉了,想要恢復只要得到inode的編號,然后把inode bitmap里的比特位由0置為1,在去inode table對應的映射表,在block bitmap的0置為1。所以如果在Linux中誤刪除一個文件,還是能恢復的,但是前提必須是inode和data block沒有被新的內(nèi)容占用,所以當誤刪除一個文件時,最好的辦法就是什么都不做。

三、軟硬鏈接

1、軟連接

我們先來看一看下面的問題:在 bin/exe 路徑下有一個可執(zhí)行程序 test,如果我們要在最開始的目錄下執(zhí)行它的話,我們要使用完整的路徑。如果可執(zhí)行程序在一個路徑下藏得非常深,那么即使是使用相對路徑,也比較麻煩。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

所以,我們可以使用軟連接來幫助我們快速找到可執(zhí)行程序

ln -s myfile.txt soft_file.link

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

軟連接就相當于Windows下的快捷方式:在我的電腦上,桌面上的微信指向的就是一個長路徑下微信的可執(zhí)行程序。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

有自己獨立的inode的稱為軟鏈接,即軟鏈接是獨立的文件,獨立的文件有獨立的inode和對應的文件內(nèi)容。?

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

2、硬鏈接

創(chuàng)建硬鏈接:

ln myfile.txt hard_file.link

?Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

軟硬鏈接最重要的區(qū)別在于是否具有獨立的inode,硬鏈接沒有獨立的inode,它的inode是與其鏈接文件的inode相同。

建立硬鏈接根本沒有新增文件,因為沒有給硬鏈接的文件分配獨立的inode,所以創(chuàng)建硬鏈接本質就是在指定的路徑下,新增文件名和inode編號的映射關系!相當于給文件取了一個別名。

我們再仔細觀察,發(fā)現(xiàn)建立了硬鏈接后,數(shù)字變成了2,刪除硬鏈接后,數(shù)字又重新變成了1。這個數(shù)字就叫做硬鏈接數(shù)。也就是這個文件有幾個名字。

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

~ 為什么創(chuàng)建一個普通文件的時候,默認硬鏈接數(shù)是1?

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

因為一個普通文件在創(chuàng)建時用戶是一定要取名的,因此文件本身就有一個自己文件名和自己的inode,具有一個映射關系。

~ 為什么創(chuàng)建一個空目錄的時候,默認硬鏈接數(shù)是2??

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

首先目錄和本身的inode就是一組映射關系了,第二,目錄中還有一個目錄?. 表示當前目錄,該文件和inode也是一組映射關系,所以是硬鏈接數(shù)是2。

~ 現(xiàn)在在空目錄dir下創(chuàng)建一個新的目錄d1,此時dir的硬鏈接數(shù)就變成了3,為什么?

Linux之文件系統(tǒng)與軟硬鏈接,Linux,linux,運維,服務器

因為d1目錄下有一個目錄?.. 表示上級目錄,也就是dir,所以硬鏈接數(shù)為3。?文章來源地址http://www.zghlxwxcb.cn/news/detail-776951.html

到了這里,關于Linux之文件系統(tǒng)與軟硬鏈接的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【Linux】文件系統(tǒng)軟硬鏈接的那些事兒

    【Linux】文件系統(tǒng)軟硬鏈接的那些事兒

    作者:?舊言~ 座右銘:松樹千年終是朽,槿花一日自為榮。 目標:理解什么是軟硬鏈接,并且能創(chuàng)建軟硬鏈接。 毒雞湯:再小的事,別人做了是情分,不做是本分??墒怯行┤?永遠只要求他人付出,不懂得感恩。 專欄選自:Linux初階 望小伙伴們點贊??收藏?加關注喲????

    2024年04月22日
    瀏覽(25)
  • 【Linux】什么是文件系統(tǒng)及inode?如何創(chuàng)建軟硬鏈接?軟硬鏈接有什么作用?

    【Linux】什么是文件系統(tǒng)及inode?如何創(chuàng)建軟硬鏈接?軟硬鏈接有什么作用?

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

    2024年02月11日
    瀏覽(19)
  • 【Linux】基礎 IO(文件系統(tǒng) & inode & 軟硬鏈接)-- 詳解

    【Linux】基礎 IO(文件系統(tǒng) & inode & 軟硬鏈接)-- 詳解

    1、前言 我們一直都在說打開的文件,磁盤中包含了上百萬個文件,肯定不可能都是以打開的方式存在。其實文件包含打開的文件和普通的未打開的文件,下面重點談談未打開的文件。 我們知道打開的文件是通過操作系統(tǒng)被進程打開,一旦打開,操作系統(tǒng)就要維護多個文件,

    2024年03月21日
    瀏覽(30)
  • 【Linux】基礎IO——文件系統(tǒng)|軟硬鏈接|動靜態(tài)庫

    【Linux】基礎IO——文件系統(tǒng)|軟硬鏈接|動靜態(tài)庫

    基于上篇博客所寫到的文件各種操作都是基于被打開文件所進行操作的,那么如果一個文件沒有被打開它存在哪里呢?這個答案毫無疑問肯定是存在于磁盤上的。那么,對于一個沒有打開的文件(也就是磁盤文件)我們應該如何理解呢? 這里我們所要講的磁盤是機械硬盤、即

    2024年02月04日
    瀏覽(21)
  • 【Linux】文件系統(tǒng)中inode與軟硬鏈接以及讀寫權限問題

    【Linux】文件系統(tǒng)中inode與軟硬鏈接以及讀寫權限問題

    我們接下來以磁盤舉例: 文件=文件內(nèi)容+文件屬性 Linux中文件內(nèi)容與屬性是分開存儲的。 文件內(nèi)容:在數(shù)據(jù)塊中存著 文件屬性:在inode中存著 Block Group:ext2文件系統(tǒng)會根據(jù)分區(qū)的大小劃分為數(shù)個Block Group。而每個Block Group都有著相同的結構組成。政府管理各區(qū)的例子 超級塊(

    2024年02月05日
    瀏覽(23)
  • 【探索Linux】—— 強大的命令行工具 P.13(文件系統(tǒng) | 軟硬鏈接 | 動態(tài)庫和靜態(tài)庫)

    【探索Linux】—— 強大的命令行工具 P.13(文件系統(tǒng) | 軟硬鏈接 | 動態(tài)庫和靜態(tài)庫)

    在計算機科學領域中,Linux 系統(tǒng)一直以來都是備受推崇的操作系統(tǒng)之一。其中,文件系統(tǒng)、軟硬鏈接、動態(tài)庫和靜態(tài)庫是 Linux 系統(tǒng)中非常重要的概念,在實際應用中扮演著不可或缺的角色。 在上一篇文章中,我們了解了 Linux 系統(tǒng)中文件描述符、重定向以及基礎 IO 操作的相關

    2024年02月04日
    瀏覽(21)
  • [Linux]理解文件系統(tǒng)!動靜態(tài)庫詳細制作使用?。ň彌_區(qū)、inode、軟硬鏈接、動靜態(tài)庫)

    [Linux]理解文件系統(tǒng)!動靜態(tài)庫詳細制作使用!(緩沖區(qū)、inode、軟硬鏈接、動靜態(tài)庫)

    ? ? ? ? hello,大家好,這里是bang___bang_,今天來談談的文件系統(tǒng)知識,包含有緩沖區(qū)、inode、軟硬鏈接、動靜態(tài)庫。本篇旨在分享記錄知識,如有需要,希望能有所幫助。 目錄 1??緩沖區(qū) ??緩沖區(qū)的意義 ??常見緩沖區(qū)刷新策略 ??緩沖區(qū)位置猜想 ??現(xiàn)象猜測 ??現(xiàn)象解

    2024年02月13日
    瀏覽(27)
  • 【運維】Linux 跨服務器復制文件文件夾

    如果是云服務 建議用內(nèi)網(wǎng)ip scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的。可能會稍微影響一下速度。當你服務器硬盤變?yōu)橹蛔x read only system時,用scp可以幫你把文件移出來

    2024年02月08日
    瀏覽(109)
  • 運維 | 如何在 Linux 系統(tǒng)中刪除軟鏈接 | Linux

    運維 | 如何在 Linux 系統(tǒng)中刪除軟鏈接 | Linux

    在 Linux 中, 符號鏈接 (symbolic link,或者symlink)也稱為 軟鏈接 ,是一種特殊類型的文件,用作指向另一個文件的快捷方式。 我們可以使用 ln 命令來創(chuàng)建軟連接,那么怎樣刪除呢? Linux 中沒有用于刪除符號鏈接的特殊命令,不過可以使用 rm 命令,該命令主要用于刪除文件

    2024年04月14日
    瀏覽(23)
  • 華為云云耀云服務器L實例評測 | Linux系統(tǒng)寶塔運維部署H5游戲

    華為云云耀云服務器L實例評測 | Linux系統(tǒng)寶塔運維部署H5游戲

    本章節(jié)內(nèi)容,我們主要介紹華為云耀服務器L實例,從云服務的優(yōu)勢講起,然后講解華為云耀服務器L實例資源面板如何操作,如何使用寶塔運維服務,如何使用運維工具可視化安裝nginx,最后部署一個自研的H5的小游戲(6歲的小朋友玩的很開心??)。 前端的同學如果想把自己

    2024年02月07日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包