文件系統是操做系統用於明確存儲設備(常見的是磁盤,也有基於NAND Flash的固態硬盤)或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操做系統中負責管理和存儲文件信息的軟件機構稱爲文件管理系統,簡稱文件系統。文件系統由三部分組成:文件系統的接口,對對象操縱和管理的軟件集合,對象及屬性。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶創建文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶再也不使用時撤銷文件等。node
Linux最傳統的文件系統是EXT2!由於文件系統是創建在硬盤上面的,全部咱們得了解硬盤的物理組成才行!
linux
整顆磁盤的組成有:windows
圓形的磁盤盤(主要記錄數據的部分)數據結構
機械手臂,與在機械手臂上的磁盤讀取頭(可察寫磁盤上的數據)異步
主軸馬達,能夠轉動磁盤,讓機械手臂的讀取頭在磁盤上讀寫數據ide
磁盤上物理的組成:spa
扇區爲最小的物理儲存單位,每一個扇區爲512bytes操作系統
將扇區組成一個圓,那就是磁柱,磁柱是分和割槽的最小單位日誌
第一個扇區最重要,裏面有:MBR 和分割表,其中MBR是446bytes,分割表是64bytesorm
/dev/sd[a-p][1-15]:爲SCSI,SATA,USB,Flash隨身碟等接口的磁盤文件名
/dev/sd[a-d][1-63]:爲IDE接口的磁盤文件名
由於分割表只有64bytes而已,全部最多隻能記錄四筆分割槽的記錄!但分割槽能夠再分割出邏輯分割槽
分割的定義:
主要分割與延伸分割最多能夠有四筆記錄
延展分割最多隻能有一個
邏輯分割是由延展分割持續切割出來的分割槽
可以被格式化後,做爲數據存儲的分割槽爲主要分割與邏輯分割
磁盤分區完畢後爲何要格式化?
由於每種操做系統所設定的【文件屬性/權限】並不相同,爲了存放這些檔案所需的數據,所以須要將分割槽進行格式化,以成爲操做系統可以利用的【文件格式】
superblock:記錄文件系統的總體信息,包括indoe/block是總量,使用量,剩餘量,以及文件系統的相關格式
inode:記錄檔案的的屬性,一個檔案佔用一個inode,同時記錄此檔案的數據所在的block號碼
block:實際記錄檔案的內容,若檔案太大,會佔用多個block
windows下的碎片整理的緣由就是檔案寫入block太過離散,而後將同一個檔案所屬的blocks聚集在一塊兒,這樣讀取就會比較快!
EX2文件系統的block有什麼限制?
block的大小與數量在格式化完成就不能再改變
每一個block只能放置一個檔案的數據
若檔案大於block大小,則一個檔案會佔用多個block數量
若檔案小於block大小,則剩餘容量就不可以再使用(磁盤空間會浪費)
日誌式文件系統:在filesystem中規劃一個區塊,專門記錄寫入或修訂檔案時的步驟!萬一在數據的記錄過程當中發生了問題,能夠根據日誌記錄去修復filesystem!這是日誌式檔案最基礎的功能!
預備:當系統要寫入一個檔案時,會在日誌記錄中記錄某個檔案准備要寫入的信息
實際寫入:開始寫入檔案的權限和數據,開始更新metadata數據
結束:完成數據與metadata的更新後,在日誌記錄區塊中完成檔案的記錄
從ext2轉換到ext3的主要理由:
可利用性 (快速修復)
數據完整性
速度易於轉換(ext2轉爲ext3不需格式化)
linux文件系統的運做:
異步處理:當系統加載一個檔案到內存後,該檔案沒有更改,則被設定爲乾淨的(clean)
若已更改過的,則被設定爲髒的(dirty).此時全部動做還在內存中,沒有寫入到磁盤中!系統不會將髒的(dirty)的數據寫入磁盤!
其實,整個linux的文件系統是經過一個Virtual Filesystem Switch的核心功能去讀取的
掛載的意義:將文件系統與目錄樹結構結合的動做
*掛載必定是目錄
[root@localhost ~]# ls -lid /
2 drwxr-xr-x 28 root root 4096 11-05 10:00 /
文件系統最頂層的目錄inode通常爲2號