在瞭解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檔案系統結構如下: