『學了就忘』Linux文件系統管理 — 57、Linux文件系統介紹
- 2021 年 12 月 1 日
- 筆記
- 測試基礎必會技能 - Linux系統
在了解Linux的文件系統管理之前,先簡單了解一下硬碟的結構。
1、了解硬碟結構(了解即可)
(1)硬碟的邏輯結構
如下圖所示:
說明:
- 上圖中一圈一圈的同心圓(藍色部分),我們稱之為磁軌。數據就存放在磁軌當中。
- 從磁碟的中心向外發散切割線,這切割先和磁軌的重疊區域就是一個扇區。
- 每個扇區的大小事固定的,為
512Byte
。扇區也是磁碟的最小存貯單位。
接下來我們從側面看,如下圖所示:
說明:
- 硬碟的大小是使用「磁頭數×柱面數×扇區數×每個扇區的大小」這樣的公式來計算的。
- 磁頭數(
Heads
)表示硬碟總共有幾個磁頭,也可以理解成為硬碟有幾個盤面,然後乘以二(磁頭在磁碟兩面都有); - 柱面數(
Cylinders
)表示硬碟每一面盤面有幾條磁軌(就是把磁碟橫過來,磁碟是有厚度的,具有相同編號的磁軌形成一個圓柱,稱之為磁碟的柱面。也可以說成磁軌就是一個柱面,有多個磁軌,就有多少個柱面數,磁碟的柱面數與一個盤面上的磁軌數是相等的。) - 扇區數(
Sectors
)表示每條磁軌上有幾個扇區;每個扇區的大小一般是512Byte
。
硬碟示例圖如下:
以上就是機械師硬碟,他的優點是,容量大,價格便宜。缺點,由於是物理結構的磁碟,需要轉動磁碟來存儲或者讀取數據的,轉速越快,存取效率越高。普通硬碟轉速一般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
(超級塊):記錄整個文件系統的資訊,包括block
與inode
的總量,已經使用的inode
和block
的數量,未使用的inode
和block
的數量,block
與inode
的大小,文件系統的掛載時間,最近一次的寫入時間,最近一次的磁碟檢驗時間等。date block
(數據塊,也稱作block
):用來實際保存數據的(相當於柜子的隔斷),block
的大小(1KB,2KB或4KB->默認)和數量在格式化後就已經決定,不能改變,除非重新格式化(製作柜子的時候,隔斷大小就已經決定,不能更改,除非重新製作柜子)。
每個blcok
只能保存一個文件的數據,要是文件數據小於一個block
塊,那麼這個block
的剩餘空間不能被其他文件使用;要是文件數據大於一個block
塊,則佔用多個block
塊。
Windows中磁碟碎片整理工具的原理就是把一個文件佔用的多個block
塊盡量整理到一起,這樣可以加快讀寫速度。inode
(i
節點,柜子門上的標籤,128位元組):用來記錄文件的許可權(r
,w
、x
),文件的所有者和屬組,文件的大小,文件的狀態改變時間(ctime
),文件的最近一次讀取時間(atime
),文件的最近一次修改時間(mtime
),文件的數據真正保存的block
編號。每個文件需要佔用一個inode
。
(2)Linux常見文件系統
ext
:Linux中最早的文件系統,由於在性能和兼容性上具有很多缺陷,現在已經很少使用。ext2
:是ext
文件系統的升級版本,Red Hat Linux 7.2
版本以前的系統默認都是ext2
文件系統。於1993年發布,支援最大16TB的分區和最大2TB的文件(1TB=1024GB-1024× 1024KB)。ext3
:ext2
文件系統的升級版本,最大的區別就是帶日誌功能,以便在系統突然停止時,提高文件系統的可靠性。支援最大16TB的分區和最大2TB的文件。ext4
:是ext3
文件系統的升級版。ext4
在性能、伸縮性和可靠性方面進行了大量改進。ext4
的變化可以說是翻天覆地的,比如向下兼容ext3
、最大1EB文件系統和16TB文件、無限數量子目錄、Extents
連續數據塊概念、多塊分配、延遲分配、持久預分配、快速FSCK
、日誌校驗、無日誌模式、在線碎片整理、inode
增強、默認啟用barrier
等。它是CentOS6.x
的默認文件系統。(說這麼多,意思就是ext4
文件系統比前三個強很多)xfs
:XFS最早針對IRIX作業系統開發,是一個高性能的日誌型文件系統,能夠在斷電以及作業系統崩潰的情況下,保證文件系統數據的一致性。它是一個64位的文件系統,後來進行開源並且移植到了Linux作業系統中,目前CentOS 7.x
將XFS+LVM
作為默認的文件系統。據官方所稱,XFS對於大文件的讀寫性能較好。
(以上都是Linux系統中的文件系統,知道越新越好就可以了。 )swap
:swap
是Linux中用於交換分區的文件系統(類似於Windows中的虛擬記憶體),當記憶體不夠用時,使用交換分區暫時替代記憶體。一般大小為記憶體的2倍,但是不要超過2GB,它是Linux的必需分區。NFS
:NFS
是網路文件系統(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公司的作業系統Solaris
和SunOS
所採用的文件系統。(用不著,了解一下即可)proc
:Linux中基於記憶體的虛擬文件系統,用來管理記憶體存儲目錄/proc
。(了解一下即可)sysfs
:和proc
一樣,也是基於記憶體的虛擬文件系統,用來管理記憶體存儲目錄/sysfs
。(了解一下即可)tmpfs
:也是一種基於記憶體的虛擬文件系統,不過也可以使用swap
交換分區。(了解一下即可)
3、整理一下對文件系統的認識
我們以前說一個分區,會分成兩個部分,一小部分為上半部分,下面大部分為下半部分。
上半部分會分成一個一個i
節點資訊,理論上每個文件都會有自己唯一的i節點資訊(如果遇到硬鏈接,兩個文件的i
節點就會一樣)。
下半部分會分成一個一個block
(數據塊),在Linux系統下默認是4KB,用於存儲數據。
如下圖:
上邊的圖今天要稍微變一下。
在我們的電腦上一般一個分區100GB,block
塊默認是4KB,所以100GB大小的分區,要有2500萬+個block
塊。可以說是一個非常大的數字,這樣會非常不好管理。
我們真正分區中系統文件的結構是如下:
首先一個分區,會在一個分區的開頭,用一部分很小的空間,組成一個超級塊。超級塊的作用看上邊,每個分區都會有一個超級塊。
查看超級塊資訊,用下面命令。
[root@localhost ~]# dumpe2fs -h + 分區號(/dev/sda1)
然後該分區中的block
塊太多了,就在該分區中形成一些塊組。在塊組中,在進行上面形式的劃分。
查看塊組資訊
[root@localhost ~]# dumpe2fs + 分區號(/dev/sda1)
Linux文件系統結構如下: