『學了就忘』Linux檔案系統管理 — 57、Linux檔案系統介紹

繁華似錦Fighting發表於2021-12-01

在瞭解Linux的檔案系統管理之前,先簡單瞭解一下硬碟的結構。

1、瞭解硬碟結構(瞭解即可)

(1)硬碟的邏輯結構

如下圖所示:

image

說明

  • 上圖中一圈一圈的同心圓(藍色部分),我們稱之為磁軌。資料就存放在磁軌當中。
  • 從磁碟的中心向外發散切割線,這切割先和磁軌的重疊區域就是一個扇區。
    image
  • 每個扇區的大小事固定的,為512Byte。扇區也是磁碟的最小存貯單位。

接下來我們從側面看,如下圖所示:

image

說明

  • 硬碟的大小是使用“磁頭數×柱面數×扇區數×每個扇區的大小”這樣的公式來計算的。
  • 磁頭數(Heads)表示硬碟總共有幾個磁頭,也可以理解成為硬碟有幾個盤面,然後乘以二(磁頭在磁碟兩面都有);
  • 柱面數(Cylinders)表示硬碟每一面盤面有幾條磁軌(就是把磁碟橫過來,磁碟是有厚度的,具有相同編號的磁軌形成一個圓柱,稱之為磁碟的柱面。也可以說成磁軌就是一個柱面,有多個磁軌,就有多少個柱面數,磁碟的柱面數與一個盤面上的磁軌數是相等的。)
  • 扇區數(Sectors)表示每條磁軌上有幾個扇區;每個扇區的大小一般是512Byte

硬碟示例圖如下:

image

以上就是機械師硬碟,他的優點是,容量大,價格便宜。缺點,由於是物理結構的磁碟,需要轉動磁碟來儲存或者讀取資料的,轉速越快,存取效率越高。普通硬碟轉速一般7200轉每分鐘,轉速越高,硬碟發熱量越大。(注意磁頭是不搭在磁碟上的,是懸空的。)

(2)硬碟介面

硬碟介面的種類如下:

  • IDE硬碟介面(Integrated Drive Electronics,並口,即電子整合驅動器)也稱作"ATA硬碟"
    或"PATA硬碟”,是早期機械硬碟的主要介面,ATA133硬碟的理論速度可以達到133MB/s
    (此速度為理論平均值),IDE硬碟介面。(基本淘汰)
  • SATA介面(Serial ATA,串列埠)是速度更高的硬碟標準,具備了更高的傳輸速度,並具備了更強的糾錯能力。目前已經是SATA三代,理論傳輸速度達到600MB/s(此速度為理論平均值)。
  • SCSI介面(Small Computer System Interface,小型計算機系統介面)廣泛應用在伺服器上,具有應用範圍廣、多工、頻寬大、CPU佔用率低及支援熱插拔等優點,理論傳輸速度達到320MB/s。(已淘汰)

2、Linux檔案系統介紹

檔案系統管理也就是分割槽管理。

(1)Linux檔案系統的特性

  • super block(超級塊):記錄整個檔案系統的資訊,包括blockinode的總量,已經使用的inodeblock的數量,未使用的inodeblock的數量,blockinode的大小,檔案系統的掛載時間,最近一次的寫入時間,最近一次的磁碟檢驗時間等。
  • date block(資料塊,也稱作block:用來實際儲存資料的(相當於櫃子的隔斷),block的大小(1KB,2KB或4KB->預設)和數量在格式化後就已經決定,不能改變,除非重新格式化(製作櫃子的時候,隔斷大小就已經決定,不能更改,除非重新制作櫃子)。
    每個blcok只能儲存一個檔案的資料,要是檔案資料小於一個block塊,那麼這個block的剩餘空間不能被其他檔案使用;要是檔案資料大於一個block塊,則佔用多個block塊。
    Windows中磁碟碎片整理工具的原理就是把一個檔案佔用的多個block塊儘量整理到一起,這樣可以加快讀寫速度。
  • inodei節點,櫃子門上的標籤,128位元組):用來記錄檔案的許可權(rwx),檔案的所有者和屬組,檔案的大小,檔案的狀態改變時間(ctime),檔案的最近一次讀取時間(atime),檔案的最近一次修改時間(mtime),檔案的資料真正儲存的block編號。每個檔案需要佔用一個inode

(2)Linux常見檔案系統

  • ext:Linux中最早的檔案系統,由於在效能和相容性上具有很多缺陷,現在已經很少使用。
  • ext2:是ext檔案系統的升級版本,Red Hat Linux 7.2版本以前的系統預設都是ext2檔案系統。於1993年釋出,支援最大16TB的分割槽和最大2TB的檔案(1TB=1024GB-1024× 1024KB)。
  • ext3ext2檔案系統的升級版本,最大的區別就是帶日誌功能,以便在系統突然停止時,提高檔案系統的可靠性。支援最大16TB的分割槽和最大2TB的檔案。
  • ext4:是ext3檔案系統的升級版。ext4在效能、伸縮性和可靠性方面進行了大量改進。ext4的變化可以說是翻天覆地的,比如向下相容ext3、最大1EB檔案系統和16TB檔案、無限數量子目錄、Extents連續資料塊概念、多塊分配、延遲分配、持久預分配、快速FSCK、日誌校驗、無日誌模式、線上碎片整理、inode增強、預設啟用barrier等。它是CentOS6.x的預設檔案系統。(說這麼多,意思就是ext4檔案系統比前三個強很多)
  • xfs:XFS最早針對IRIX作業系統開發,是一個高效能的日誌型檔案系統,能夠在斷電以及作業系統崩潰的情況下,保證檔案系統資料的一致性。它是一個64位的檔案系統,後來進行開源並且移植到了Linux作業系統中,目前CentOS 7.xXFS+LVM作為預設的檔案系統。據官方所稱,XFS對於大檔案的讀寫效能較好。
    (以上都是Linux系統中的檔案系統,知道越新越好就可以了。 )
  • swapswap是Linux中用於交換分割槽的檔案系統(類似於Windows中的虛擬記憶體),當記憶體不夠用時,使用交換分割槽暫時替代記憶體。一般大小為記憶體的2倍,但是不要超過2GB,它是Linux的必需分割槽。
  • NFSNFS是網路檔案系統(Network File System)的縮寫,是用來實現不同主機之間檔案共享的一種網路服務,本地主機可以通過掛載的方式使用遠端共享的資源。
  • iso9660:光碟的標準檔案系統。Linux要想使用光碟,必須支援iso9660檔案系統。
  • fat:就是Windows下的fat16檔案系統,在Linux中識別為fat
  • vfat:就是Windows下的fat32檔案系統,在Linux中識別為vfat。支援最大32GB的分割槽和最大4GB的檔案。
  • NTFS:就是Windows下的NTFS檔案系統,不過Linux預設是不能識別NTFS檔案系統的,如果需要識別,則需要重新編譯核心才能支援。它比fat32檔案系統更加安全,速度更快支援最大2TB的分割槽和最大64GB的檔案
  • ufs:Sun公司的作業系統SolarisSunOS所採用的檔案系統。(用不著,瞭解一下即可)
  • proc:Linux中基於記憶體的虛擬檔案系統,用來管理記憶體儲存目錄/proc。(瞭解一下即可)
  • sysfs:和proc一樣,也是基於記憶體的虛擬檔案系統,用來管理記憶體儲存目錄/sysfs。(瞭解一下即可)
  • tmpfs:也是一種基於記憶體的虛擬檔案系統,不過也可以使用swap交換分割槽。(瞭解一下即可)

3、整理一下對檔案系統的認識

我們以前說一個分割槽,會分成兩個部分,一小部分為上半部分,下面大部分為下半部分。

上半部分會分成一個一個i節點資訊,理論上每個檔案都會有自己唯一的i節點資訊(如果遇到硬連結,兩個檔案的i節點就會一樣)。

下半部分會分成一個一個block(資料塊),在Linux系統下預設是4KB,用於儲存資料。

如下圖:

image

上邊的圖今天要稍微變一下。

在我們的電腦上一般一個分割槽100GB,block塊預設是4KB,所以100GB大小的分割槽,要有2500萬+個block塊。可以說是一個非常大的數字,這樣會非常不好管理。

我們真正分割槽中系統檔案的結構是如下:

首先一個分割槽,會在一個分割槽的開頭,用一部分很小的空間,組成一個超級塊。超級塊的作用看上邊,每個分割槽都會有一個超級塊。

檢視超級塊資訊,用下面命令。

[root@localhost ~]# dumpe2fs -h + 分割槽號(/dev/sda1)

然後該分割槽中的block塊太多了,就在該分割槽中形成一些塊組。在塊組中,在進行上面形式的劃分。

檢視塊組資訊

[root@localhost ~]# dumpe2fs + 分割槽號(/dev/sda1)

Linux檔案系統結構如下:

image

相關文章