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