文件系統在正式使用之前需要經過兩次格式化:
低級格式化和高級格式化
低級格式化:硬盤在初始情況下,硬件廠商對硬盤所做的劃分磁道等一系列格式化工作;
高級格式化:用戶使用mkfs,mknod,tune2fs等命令對磁盤進行操作,將硬盤初始化爲指定的文件系統的過程。
Linux下常用的文件系統有:
FAT32: vfat NTFS(Windows下) ISO9660(光盤) CIFS ext2/3/4 xfs
reiserfs jfs nfs ocfs2 gfs2 swap
我們都知道,文件系統是爲了操作磁盤上的文件而存在的一種建立在硬件之上並存在與內核之中的一種軟件。
linux下支持的文件系統類型遠不止這幾種,然而LInux支持如此之多的文件系統類型,在對文件系統操作的過程中,相同的操作在不同的額文件系統上的有着不盡相同的用戶接口,所以在操作的時候就會類似的情況:
在不考慮VFS存在的情況下,在兩種不同的FS上創建同一個文件/目錄,ext3和xfs對應的操作並不一定都是mkdir,所以在不同的FS上創建一個文件/目錄就需要不同的指令來完成操作,這種指令取決與當前FS提供給用戶的接口,這就提高了用戶操作的難度。更何況linux下存在千百種各種不同的文件系統,因此誕生了VFS 這種神奇的東西:
VFS:虛擬文件系統,是一種存儲與內核之中,爲各種不同FS與用戶之間提供統一接口的軟件。
VFS沙漏模型:
VFS爲用戶操作文件系統提供了統一的接口,用戶可以使用統一的指令(cat)來讀取ext2,xfs和nfs文件系統上的內容,而不必考慮他們內部的實現機制。
VFS完整模型應該時醬紫滴: