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


在了解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

提示:這里所說的是Linux文件系統的特性,不是很准確,應該是VFS虛擬文件系統(Virtual File System)的特性。具體可以看下面評論中有說明。

(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM