频道栏目
首页 > 资讯 > 其他 > 正文

文件系统那些事-第2篇 不可不知的文件系统特性

12-03-07        来源:[db:作者]  
收藏   我要投稿
判断一个文件系统是否具有某些特性,是听从不同方面区分和对比文件系统的一种有效方式。一些常见的文件系统的特性如下。
 
2.1   硬链接
硬链接是指向存储卷上文件的目录引用(reference)或者指针(pointer)。与该文件关联的名称是一个存储在目录结构中的标签。这个标签将操作指向文件的数据。通过这种方法,同一个文件就可以和多个名字相关联。当使用这些不同的名字时,所作的任何改动都将影响到同一个文件数据。使用硬链接有很多的限制。首先为了防止以防止无休止的递归,大多数现代操作系统不允许对文件夹创建硬链接。其次硬链接的链接数目也受到引用计数的位数限制。另外硬链接只能使用在和文件相同的文件系统上,如果需要链接到另一个的文件系统的文件,那么可能需要使用软链接。
 
2.2   符号链接
符号链接(symbolic link,或者symlink,软链接,soft link)是一种特殊种类的文件,该文件以绝对路径或者相对路径的形式,指向另外一个文件或者目录,并且影响路径名解析(pathname resolution)。符号链接与硬件连接不同之处在于:它本身是一个文件,可以独立于所指向的目标文件而存在。如果删除符号链接文件,其目标文件将不受任何影响;如果其目标文件被移动过、重命名或者删除,所有指向该目标文件的符号链接都将指向一个不存在的文件。这时称这个符号链接为孤儿(orphaned or dangling)。
 
2.3   日志文件系统
日志文件系统(journaling file system)是一种在将对文件的修改应用到主文件系统之前,先将修改记录到日志中去的文件系统。这种文件系统在发生断电和系统崩溃的时候,被损坏的可能性较小。
 
虽然日志系统增加了可靠性,由于日志要求所有的数据被写入两次,所以可能严重影响文件系统的性能。只在日志中记录文件的元数据的变化,即metadata-only journaling,是在可靠性和性能之间的折衷。这种方法仍然能够确保文件系统能够在下次安装时迅速恢复,但是由于不记录文件数据的变化,而使得可能出现数据损坏或者记录的元数据不同步。
 
例如,向一个Unix文件系统的文件添加内容涉及到如下三步:
 
1. 增加文件的索引节点(inode)上的文件大小。
 
2. 在空闲空间位图上为添加的内容分配空间。
 
3. 将附加的内容写入新分配的空间里。
 
在一个metadata-only journaling中,第3步也许没有记录在日志中。如果第3步没有执行,但是第1步和第2步却在恢复时重做,文件将会被附加垃圾信息。
 
2.4   日志结构文件系统
在日志文件系统(log-structured file system)中,所有对数据和元数据的更新都向一个连续的日志中顺序地写入。日志结构文件系统基于这样的假设:现代计算机中持续增长的内存容量使得写操作的代价较大,因为大多数的读操作能够通过内存高速缓存得到。因此,日志结构文件系统就将存储器看作是一个环状的日志,并在该日志的头部进行顺序地写入,这样就通过避免耗时的寻道而增加了写入的吞吐率。为了防止文件系统被存满,需要不断地从日志的尾部回收空闲空间。
 
日志结构文件系统产生了多个版本不断更新的文件数据和元数据。一些日志结构文件系统的实现中使得这些版本能够被存取,这种特性称为快照(time-travel,snapshotting)。这一点和版本文件系统很相像。日志结构文件系统使得从崩溃中恢复变得简单。
 
日志结构文件系统也有其缺点。尤其是在应用在磁盘媒介中时,寻道开销相对很大,它有可能使得读取速度变慢,因为它将在常规文件系统中连续存放的文件分离成许多碎片。
 
日志结构文件系统。DF,LFS和NILFS等文件系统是日志结构文件系统。
 
2.5   动态分配日志
动态分配日志(dynamically-allocated journal)。在日志结构文件系统中,并不需要承受两次写入而造成的性能损失,因为日志本身就是文件系统。大多数Unix系统的文件结构并不是日志结构,但是也有一些文件系统使用类似的机制来避免两次写入的性能损失。例如,Reiser4可以将许多分立的写入组合为一个单一的连续的大块写入,然后扩展日志的头部以附上新写的大块,而日志的尾部则在应用到存储中后回缩。
 
2.6   区分大小写
区分大小写(case-sensitive)。如果文件系统是区分大小写的,那么在这个文件系统中读取文件时,文件名字必须要严格地依照原文件的名字字母的大小写来给出。如果文件系统是不区分大小写的,那么给出的文件名的字母不论大小写均可。
 
2.7   保留大小写
保留大小写(case-preserving)。保留大小写指的是文件系统在存储文件的名字时,严格按照文件的字母大小写存储。如果一个文件系统不是保留大小写的,那么它一定不是区分大小写的;反过来说,如果一个文件系统是区分大小写的,那么它一定是保留大小写的。
 
2.8   文件更改日志
文件更改日志(file change log)跟踪文件系统的名字空间(文件和文件夹)的更改。根据实现情况的不同,文件更改日志会记录诸如创建、链接、解除链接(删除)、重命名文件、数据修改、元数据修改(例如ACL(存取控制列表,Accesscontrol list)和访问权限的修改)。需要注意的是,文件更改日志和文件系统的日志(journal)是不同的。通过使用文件更改日志,应用程序可以不需要重复扫描整个文件系统,而发现文件系统发生的变化。文件更改日志也可以作为文件系统活动的审计记录。
 
2.9   快照 www.2cto.com
快照(snapshot)是在过去的某一时刻,文件系统的一些文件和文件夹集合的复本。
 
2.10   就地执行
就地执行(execute in place,XIP)指的是直接在非易失性存储器中执行程序,而不需将程序复制到RAM中。由于就地执行需要存储器具有随机存取的功能,所以一般这里非易失性存储器指的是NOR型Flash,因为只有NOR型Flash才能方便地随机存取。
 
2.11   文件系统级加密
文件系统级加密(filesystem-level encryption)通常被称为文件或者文件夹加密(file or folderencryption),是一种文件系统本身对单独的文件或者文件夹进行磁盘加密的特性。这与全磁盘加密(full disk encryption)不同,全磁盘加密中文件系统所在的整个磁盘分区是加密的。
 
文件系统级加密的优点包括:
 
1. 灵活的基于文件的密钥管理。这样每个文件都能够通过不同的加密密钥进行加密。
 
2. 单独的加密文件管理,也即可以对单独的加密文件进行增量备份,而不是对整个加密卷进行备份。
 
3. 可以通过使用公钥加密来强制执行访问控制。
 
4. 解密密钥只保存在内存中,而它们解开的文件可以保持打开状态。
 
2.12   集成的逻辑卷管理
逻辑卷管理(logical volume manager,LVM)是一种比传统的分区机制更加灵活的对大容量存储设备进行空间分配的机制。尤其是逻辑卷可以将分区串联、组合在一起形成大的虚拟分区,这些虚拟分区可以在它们正在使用的时候,移动和调整大小。逻辑卷管理是诸多形式的存储虚拟化的一种。
 
当然引入逻辑卷管理会使得启动过程复杂,并使得灾后恢复困难,尤其当基础操作系统和其他必要的工具本身都处于逻辑卷上的时候。逻辑卷也会遭受外部碎片(external fragmentation)的影响,而导致I/O性能的降低。
 
其中,外部碎片指的是随着时间的推进,空闲的存储空间被分成许多个小块。而内部碎片(internal fragmentation)则指的是存储空间被分配后,却从未被打算使用。
 
2.12   文件系统的限制
文件系统存在一些限制,比如最长文件名长度、目录项允许使用的字母、最长路径名长度、最大文件大小、最大卷大小等。
 
其中长度和大小往往受使用的数据结构的比特数的限制。一些文件系统最长路径名长度没有任何限制。
 
另外,目录项允许使用的字母,首先受磁盘上目录项结构自身的限制。某些可安装文件系统(installable file system)驱动也有可能限制了文件名和文件夹名的命名。某些操作系统也有可能对所有使用的文件系统有所限制。例如MS-DOS、MicrosoftWindows和OS/2不允许任何文件系统在文件名或文件夹名种使用“\ / : ? *" > < |”和NULL字符。
 
2.13  元数据
元数据(metadata,meta data或者metainformation)就是关于数据的数据。文件系统使用元数据来管理文件。
 
文件系统的元数据可能包括的信息有:文件所有者、POSIX文件访问许可、创建时间戳、最近访问/读入时间戳、最近更改内容、最近元数据修改时间戳、最近存档时间戳、访问控制列表(access control list,ACL)、安全/强制访问控制(mandatory access control,MAC)标签、扩展文件属性(extended file attributes)、备用数据(alternate data)/分岔(fork)、校验码(checksum)/ 纠错码(error correcting code,ECC)。
 
其中强制访问控制指的是这样的一种访问控制方法,支持它的文件系统限制发起者对目的进行访问或者执行某些操作的能力。
 
扩展文件属性指的是文件系统支持用户对文件关联一些不需要文件系统解释的元数据。而通常的文件属性有着由文件系统严格定义的目的。
2.14   透明的压缩
有一部分文件系统支持透明的压缩,例如Btrfs、NTFS、Reiser4、JFS、NSS、NWFS、Fossil、ZFS等文件系统。
 
本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article
相关TAG标签
上一篇:文件系统那些事-第3篇 影响文件系统性能的关键因素:存储块分配和布局策略
下一篇:文件系统那些事-第1篇 丰富多样的文件系统
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站