什麼是文件系統?
文件系統是操作系統對存儲設備上文件一種管理機制,不同的管理機制形成了不同的文件系統;
文件系統劃分
按IO棧的層級來分,可以分爲VFS和具體文件系統兩層。VFS屏蔽不同的文件系統,向上提供統一的訪問接口,具體的文件系統則爲具體的文件系統實現,比如ext4、overlayfs等;
按存儲介質的不同,文件系統可以分爲三類:
- 基於磁盤的文件系統,常見的有Ext4、XFS、OverlayFS 等文件系統;
- 基於內存的文件系統,比如常用的 /proc 文件系統;
- 網絡文件系統,也就是用來訪問其他計算機數據的文件系統,比如 NFS、SMB、iSCSI 等;
掛載點
查看文件系統掛載點
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-root 909G 565G 299G 66% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 785M 1.2M 784M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 62M 3.8G 2% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sda1 228M 98M 118M 46% /boot
查看目錄或文件所在文件系統的掛載點
df -h 文件/目錄
基本要素
- 超級塊(super_block):存儲文件系統的元數據,每個文件系統對應一個超級塊;
- 目錄項模塊:文件系統的目錄管理,比如一個路徑 /home/foo/hello.txt,那麼目錄項有home, foo, hello.txt。目錄項的塊,存儲的是這個目錄下的所有的文件的inode號和文件名等信息;
- 索引節點inode:存儲文件的元數據,比如 inode 編號、文件大小、訪問權限、修改日期、數據的位置等,每個文件對應一個inode(索引節點對應的緩存叫索引節點緩存);
- 邏輯塊Page:文件系統讀寫數據的基本單元,常見的邏輯塊大小爲 4KB,即8個連續扇區(邏輯塊對應的緩存叫頁緩存);
參考: