http://os.51cto.com/art/201305/395826.htm
您所在的位置:操作系统 > 系统新闻 > 本地文件系统和分布式文件系统的特点(1)
本地文件系统和分布式文件系统的特点(1)
2013-05-27 14:46 麦子麦
麦子麦 字号:T | T
前言
文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data
type)(From Wikipedia)。
现在的文件系统多种多样,不管是接口、架构、部署都有巨大差异,本文试图总结一下本地文件系统和分布式文件系统以及它们的特点和技术点。
我试图用一个极其抽象的图来描绘本地文件系统和分布式文件系统。(PS: 好吧,结果就成了下面这个基本没啥意义的图。。。。)
专题推荐:回味那些经典的分布式文件系统
http://s8.51cto.com/wyfs01/M00/0B/47/wKioOVGjA4GgQ3ARAACxX6bMewE077.jpg
本地文件系统
本地文件系统主要是指Ext2,Ext3,Btrfs,XFS这类(很难概括,只好举例子),它们通常提供以下功能:
-
扩展性:随着系统容量的增加保持性能,不随容量变化而导致性能震荡。比如一个目录下的海量文件,在EXT2/3中由于目录设计问题会导致较大的性能问题。再比如EXT2/3中的Metadata的占用和inode的划分可能会导致空间的浪费。
-
数据一致性
-
Checksum: Checksum与对应的数据块分开放置,避免silent corruption
-
COW事务: COW事务参考文件系统特性 – COW事务
-
Log: Log被一些文件系统用作WAL模式来加快写操作,并且保证写操作的原子性
-
多设备管理:传统上Linux往往使用LVM进行多设备的管理,现代文件系统往往增加对多设备的支持。如ZFS和Btrfs会有存储池模型对应LVM的逻辑卷组,文件系统会对底层的多设备进行并行的访问。
-
快照和克隆:采用COW事务模型的文件系统通常具有这个特性
-
软件RAID支持:现代文件系统通过对多设备的管理可以很好的支持软件RAID,如Btrfs对Metadata进行RAID1的默认保护
-
针对SSD的优化:
除了SSD对于随机读这一特性的优化外,还有对SSD擦除操作的优化。另外,SSD在使用容量接近100%时会导致极差的写入性能,文件系统也可以对SSD的分配策略和重平衡进行一定的优化。
-
压缩和加密:
现在的IO速度远远跟不上CPU的发展,因此对磁盘文件进行压缩读写是个很好的选择,现代文件系统往往支持多种压缩格式,而且可以支持整个文件系统的加密或者某个文件和目录的加密
-
去重:
文件系统系统去重是个大话题,主要是计算块的checksum方法或者客户端计算文件的hash来决定是否是一个新文件。具体参考Deduplication。
加载中,请稍候......