Linux文件系统基础(1)
本文首發(fā)于http://oliveryang.net,轉載時請包含原文或者作者網(wǎng)站鏈接。
1. 什么是文件系統(tǒng)
直接引用來自維基百科文件系統(tǒng)的定義,
A file system is a set of abstract data types that are implemented for the storage, hierarchical organization, manipulation, navigation, access, and retrieval of data.文件系統(tǒng)就是一套抽象的數(shù)據(jù)類型,實現(xiàn)了數(shù)據(jù)的存儲,層級組織,操作,瀏覽,訪問和取回。
2. 文件系統(tǒng)分類
Linux恐怕是內置支持文件系統(tǒng)最多的操作系統(tǒng)了。Linux v4.4源代碼里fs路徑下的文件系統(tǒng)目錄多達71個,
$ pwd /ws/linux/fs $ ls -dl */ | wc -l 712.1 文件系統(tǒng)的架構
按照文件系統(tǒng)的架構,文件系統(tǒng)大致上可以分為以下幾類,
2.1.1 Local file systems
即本地文件系統(tǒng)。典型的例子有Ext4, Btrfs, XFS, ZFS等。
通常是在主機本地可見的存儲介質上才能工作的文件系統(tǒng)。此類文件系統(tǒng)本身沒有網(wǎng)絡訪問的能力。因此,如需訪問遠程
介質,需要接觸底層協(xié)議(如iSCSI, Fiber Channel)才能管理和訪問數(shù)據(jù)。
Linux上的本地文件系統(tǒng)很容易支持POSIX語義的文件API。
2.1.2 Special purpose file systems
即特殊目的文件系統(tǒng)。
Pseudo and virtual file systems
實現(xiàn)操作系統(tǒng)內核的狀態(tài)查詢,管理控制,和文件抽象功能。例如,procfs, sysfs,tmpfs, debugfs, devfs。實現(xiàn)某種開發(fā)框架。例如FUSE(Filesystem in Userspace)提供了一種在用戶空間開發(fā)文件系統(tǒng)的通用機制。此外,由于近來Docker為代表的容器技術的興起,使verlayFS,Aufs這類支持對底層多個本地文件系統(tǒng)做union mount的文件系統(tǒng)技術得以廣泛應用。
Cryptographic file systems
專門用于文件系統(tǒng)級別的數(shù)據(jù)安全加密用途。例如,eCryptfs, SSHFS。
2.1.3 Network file systems
即網(wǎng)絡文件系統(tǒng)。例如,NFS,CIFS(SMB)。
此類文件系統(tǒng)被設計為client-server結構。客戶端的文件系統(tǒng)通過提供遠程文件的訪問協(xié)議,來訪問服務端的文件系統(tǒng)。
網(wǎng)絡文件系統(tǒng)一般很難支持完整的POSIX語義的文件訪問。例如NFS文件的客戶端可能緩存文件,導致數(shù)據(jù)在其它客戶端或者服務端不同步的問題。另外,NFSv3及以前版本是無狀態(tài)的協(xié)議,并不支持POSIX fcntl locks。NFS的文件鎖是通過Network Lock Manager (lockd后臺進程) 這個獨立程序實現(xiàn)的。直到NFSv4改為有狀態(tài)協(xié)議,才實現(xiàn)了文件鎖,不需要NLM協(xié)同工作了。
針對本地文件系統(tǒng)開發(fā)和測試的應用,在網(wǎng)絡文件系統(tǒng)上運行可能會有不同的行為,需要特別的處理。
NAS(Network Attach Storage)存儲是外置存儲設備的一大類,其中NFS和CIFS是支持的主要訪問協(xié)議。
2.1.4 Clustered file systemas
即集群文件系統(tǒng)。引用集群文件系統(tǒng)在維基百科的定義如下,
A clustered file system is a file system which is shared by being simultaneously mounted on multiple servers.同一文件系統(tǒng)能否在多個主機上被同時掛載使用是集群文件系統(tǒng)的本質。根據(jù)架構上的差異,集群文件系統(tǒng)又被分為以下兩大類,
Shared-disk file systems
即共享磁盤的文件系統(tǒng)。這架構的Block級別的訪問是集中共享式的。所有文件系統(tǒng)的主機通過同步和鎖原語訪問同一個Block Storage。
通常,塊存儲的共享是通過SAN(Storage Area Network)來實現(xiàn)共享的。
這一領域代表性的實現(xiàn)有,IBM的GPFS,Oracle的OCFS,中科藍鯨的BWFS,Red Hat的GFS(Global File System)。
Distributed file systems
即分布式文件系統(tǒng)。名字有些混淆。但和Share-disk類型的最大區(qū)別的,分布式文件系統(tǒng)的Block Storage不需要共享。每個節(jié)點都擁有自己私有的Block Storage。但文件系統(tǒng)集群對使用者依舊提供統(tǒng)一的視圖,即全局的命名空間(Global Name Space)。
分布式文件系統(tǒng)可以利用廉價的DAS(Direct Attach Storage)來架構一個高性能的文件集群。特別是當萬兆以太網(wǎng)和Flash/SSD技術在數(shù)據(jù)中心變得越來越普及,DAS做分布式文件系統(tǒng)的優(yōu)勢越來越明顯。
典型的分布式文件系統(tǒng)有Apache HDFS,Google的GFS(Google File System), Redhat的Ceph和Glusterfs,Lustre,微軟的DFS, EMC Isilon的OneFS。
2.2 存儲介質和使用場景
按照存儲介質和使用場景的不同,文件系統(tǒng)也可以劃分為以下類型,
Disk file systems
基于磁盤(HDD)特性設計的文件系統(tǒng)。例如,Ext4, UFS, XFS
Optical discs file systems
基于光盤特性設計的文件系統(tǒng)。例如,ISO 9660, UDF(Universal Disk Format)。
Flash file systems
基于Flash/SSD特性的文件系統(tǒng)。例如,JFFS2, YAFFS, F2FS. 傳統(tǒng)的磁盤文件系統(tǒng)也可用于SSD,但是由于SSD的一些獨有特性,并不能發(fā)揮出SSD的性能優(yōu)勢。因此,這類文件系統(tǒng)一般針對SSD的硬件特性,GC,Wear Leveling等做了特別的優(yōu)化和設計上的考慮。
Tape file systems
基于磁帶特性設計的文件系統(tǒng)。例如,LTFS(Linear Tape File System)。
Database file systems
為數(shù)據(jù)庫使用場景特別優(yōu)化的文件系統(tǒng)。例如,DBFS(Oracle Database file system)。
Transactional file systems
為支持多個文件操作的原子性設計的文件系統(tǒng)。例如, Transactional NTFS,目前多為研究實驗性質。
以上內容在互聯(lián)網(wǎng)上已有不少論述,在此不一一贅述
轉載于:https://www.cnblogs.com/ainima/p/6330780.html
總結
以上是生活随笔為你收集整理的Linux文件系统基础(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript中的的面向对象中的一
- 下一篇: Linux - 命令