档案系统是作业系统用于明确存储设备(常见的是磁碟,也有基于NAND Flash的固态硬碟)或分区上的档案的方法和数据结构;即在存储设备上组织档案的方法。作业系统中负责管理和存储档案信息的软体机构称为档案管理系统,简称档案系统。档案系统由三部分组成:档案系统的接口,对对象操纵和管理的软体集合,对象及属性。从系统角度来看,档案系统是对档案存储设备的空间进行组织和分配,负责档案存储并对存入的档案进行保护和检索的系统。具体地说,它负责为用户建立档案,存入、读出、修改、转储档案,控制档案的存取,当用户不再使用时撤销档案等。
基本介绍
- 中文名:档案系统
- 外文名:file system
- 类别:作业系统
- 目的:为了管理空间
简介
在计算机中,档案系统(file system)是命名档案及放置档案的逻辑存储和恢复的系统。DOS、Windows、OS/2、Macintosh和UNIX-based作业系统都有档案系统,在此系统中档案被放置在分等级的(树状)结构中的某一处。档案被放置进目录(Windows中的资料夹)或子目录,在树状结构中你希望的位置中。
档案系统指定命名档案的规则。这些规则包括档案名称的字元数最大量,哪种字元可以使用,以及某些系统中档案名称后缀可以有多长。档案系统还包括通过目录结构找到档案的指定路径的格式。
档案系统是软体系统的一部分,它的存在使得套用可以方便的使用抽象命名的数据对象和大小可变的空间。
功能
档案的系统是作业系统用于明确磁碟或分区上的档案的方法和数据结构;即在磁碟上组织档案的方法。也指用于存储档案的磁碟或分区,或档案系统种类。因此,可以说"我有2个档案系统"意思是他有2个分区,一个存档案,或他用 "扩展档案系统",意思是档案系统的种类。
结构图

磁碟或分区和它所包括的档案系统的不同是很重要的。少数程式(包括最有理由的产生档案系统的程式)直接对磁碟或分区的原始扇区进行操作;这可能破坏一个存在的档案系统。大部分程式基于档案系统进行操作,在不同种档案系统上不能工作。
一个分区或磁碟在作为档案系统使用前,需要初始化,并将记录数据结构写到磁碟上。这个过程就叫建立档案系统。
大部分UNIX档案系统种类具有类似的通用结构,即使细节有些变化。其中心概念是超级块superblock,i节点inode,数据块data block,目录块directory block,和间接块indirection block。超级块包括档案系统的总体信息,比如大小(其準确信息依赖档案系统)。i节点包括除了名字外的一个档案的所有信息,名字与i节点数目一起存在目录中,目录条目包括档案名称和档案的i节点数目。i节点包括几个数据块的数目,用于存储档案的数据。i节点中只有少量数据块数的空间,如果需要更多,会动态分配指向数据块的指针空间。这些动态分配的块是间接块;为了找到数据块,这名字指出它必须先找到间接块的号码。
UNIX档案系统通常允许在档案中产生孔,意思是档案系统假装档案中有一个特殊的位置只有0位元组,但没有为这档案的这个位置保留实际的磁碟空间。这对小的二进制档案经常发生,Linux共享库、一些资料库和其他一些特殊情况。
孔有一定的用处。在笔者的系统中,一个简单的测量工具显示在200MB使用的磁碟空间中,由于孔,节约了大约4MB。在这个系统中,程式相对较少,没有资料库档案。
档案系统的功能包括:管理和调度档案的存储空间,提供档案的逻辑结构、物理结构和存储方法;实现档案从标识到实际地址的映射,实现档案的控制操作和存取操作,实现档案信息的共享并提供可靠的档案保密和保护措施,提供档案的安全措施。
档案的逻辑结构是依照档案的内容的逻辑关係组织档案结构。档案的逻辑结构可以分为流式档案和记录式档案。
流式档案:档案中的数据是一串字元流,没有结构。
记录档案:由若干逻辑记录组成,每条记录又由相同的数据项组成,数据项的长度可以是确定的,也可以是不确定的。
主要缺陷:数据关联差,数据不一致,冗余性。
代码
下面是档案系统的代码,根据这个代码我们可以更好地了解档案系统的工作流程
- main.cpp
#include"blockinodesuperblock.h"//-----------------------intmain(){control.open("control.txt",ios::in|ios::out|ios::nocreate);inti;control>>i;control.close();if(i!=0)//不为0就初始化{initial();}control.open("control.txt",ios::in|ios::out|ios::nocreate);control.seekp(0);control<<0;//默认是上次基础上继续下去不用再初始化control.close();strcpy(curname,"root");//当前目录档案名称为rootroad[0]=0;//当前目录路径(存放从根目录到这里的结点号)num=1;//最后位road[num-1]为当前目录档案i结点号cout<<"请登入系统\n";while(!login())//登入为止cout<<"wrong!!!\n";cout<<"loginsuccess"<<endl;cout<<"******Welcome"<<auser<<"******";readsuper();getcommand();//命令解析函式writesuper();return0;}
blockinodesuperblock.h
intialloc()//申请一个i结点返回结点号否则返回-1{if(superblock.fiptr>0){inttemp=superblock.fistack[80-superblock.fiptr];//当前可用superblock.fistack[80-superblock.fiptr]=-1;superblock.fiptr--;returntemp;}return-1;}//----------------------voidifree(intindex)//指定一个结点号,回收一个i结点{disk.open("disk.txt",ios::in|ios::out|ios::nocreate);//清空结点disk.seekp(514+64*index+2*(index/8));disk<<setw(64)<<'';disk.close();for(inti=80-superblock.fiptr;i<80;i++)//结点号找到合适位置插入空闲结点号栈{if(superblock.fistack<index)//小于它的前移一位{superblock.fistack[i-1]=superblock.fistack;}else//放在第一个大于它的结点号前面{superblock.fistack[i-1]=index;break;}}superblock.fiptr++;}//----------------------/*成组连结法*/intballoc()//申请一个盘块返回盘块号否则返回-1{inttemp=superblock.fbstack[10-superblock.fbptr];if(superblock.fbptr==1)//是栈底了==>;是记录盘块了{//是最后记录盘块最后号0(保留作栈底分配不成功)if(temp==0){return-1;}suprblock.fbstack[10-superblock.fbptr]=-1;superblock.fbptr=0;//盘块内容读入栈for(inti=0;i<10;i++){intid,num=0;disk.open("disk.txt",ios::in|ios::out|ios::nocreate);//先计算盘块内容个数num(最多10),最后盘块可能不到10个disk.seekg(514*temp);for(inti=0;i<10;i++){disk>>id;num++;if(id==0)break;}disk.seekg(514*temp);//盘块内容读入栈for(intj=10-num;j<10;j++){disk>>id;superblock.fbstack[j]=id;}superblock.fbptr=num;disk.close();}disk.open("disk.txt",ios::in|ios::out|ios::nocreate);//清空回收盘块disk.seekp(514*temp);disk<<setw(512)<<'';disk.close();//盘块使用掉returntemp;}else//不是记录盘块==>;盘块使用掉{superblock.fbstack[10-superblock.fbptr]=-1;superblock.fbptr--;returntemp;}}//----------------------
FAT
在Win 9X下,FAT16支持的分区最大为2GB。我们知道计算机将信息保存在硬碟上称为“簇”的区域内。使用的簇越小,保存信息的效率就越高。在FAT16的情况下,分区越大簇就相应的要大,存储效率就越低,势必造成存储空间的浪费。并且随着计算机硬体和套用的不断提高,FAT16档案系统已不能很好地适应系统的要求。在这种情况下,推出了增强的档案系统FAT32。同FAT16相比,FAT32主要具有以下特点:
- 同FAT16相比FAT32最大的优点是可以支持的磁碟大小达到32GB,但是不能支持小于512MB的分区。
基于FAT32的Win 2000可以支持分区最大为32GB;而基于 FAT16的Win 2000支持的分区最大为4GB。
- 由于採用了更小的簇,FAT32档案系统可以更有效率地保存信息。如两个分区大小都为2GB,一个分区採用了FAT16档案系统,另一个分区採用了FAT32档案系统。採用FAT16的分区的簇大小为32KB,而FAT32分区的簇只有4KB的大小。这样FAT32就比FAT16的存储效率要高很多,通常情况下可以提高15%。
- FAT32档案系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。
NTFS
NTFS档案系统是一个基于安全性的档案系统,是Windows NT所採用的独特的档案系统结构,它是建立在保护档案和目录数据基础上,同时照顾节省存储资源、减少磁碟占用量的一种先进的档案系统。使用非常广泛的Windows NT 4.0採用的就是NTFS 4.0档案系统,相信它所带来的强大的系统安全性一定给广大用户留下了深刻的印象。Win 2000採用了更新版本的NTFS档案系统NTFS 5.0,它的推出使得用户不但可以像Win 9X那样方便快捷地操作和管理计算机,同时也可享受到NTFS所带来的系统安全性。
NTFS 5.0的特点主要体现在以下几个方面:
- NTFS可以支持的MBR分区(如果採用动态磁碟则称为卷)最大可以达到2TB,GPT分区则无限制。而Win 2000中的FAT32支持单个档案的大小最大为2GB。
- NTFS是一个可恢复的档案系统。在NTFS分区上用户很少需要运行磁碟修复程式。NTFS通过使用标準的事物处理日誌和恢复技术来保证分区的一致性。发生系统失败事件时,NTFS使用日誌档案和检查点信息自动恢复档案系统的一致性。
- NTFS支持对分区、资料夹和档案的压缩。任何基于Windows的应用程式对NTFS分区上的压缩档案进行读写时不需要事先由其他程式进行解压缩,当对档案进行读取时,档案将自动进行解压缩;档案关闭或保存时会自动对档案进行压缩。
- NTFS採用了更小的簇,可以更有效率地管理磁碟空间。在Win 2000的FAT32档案系统的情况下,分区大小在2GB~8GB时簇的大小为4KB;分区大小在8GB~16GB时簇的大小为8KB;分区大小在16GB~32GB时,簇的大小则达到了16KB。而Win 2000的NTFS档案系统,当分区的大小在2GB以下时,簇的大小都比相应的FAT32簇小;当分区的大小在2GB以上时(2GB~2TB),簇的大小都为4KB。相比之下,NTFS可以比FAT32更有效地管理磁碟空间,最大限度地避免了磁碟空间的浪费。
- 在NTFS分区上,可以为共享资源、资料夹以及档案设定访问许可许可权。许可的设定包括两方面的内容:一是允许哪些组或用户对资料夹、档案和共享资源进行访问;二是获得访问许可的组或用户可以进行什幺级别的访问。访问许可许可权的设定不但适用于本地计算机的用户,同样也套用于通过网路的已分享档案夹对档案进行访问的网路用户。与FAT32档案系统下对资料夹或档案进行访问相比,安全性要高得多。另外,在採用NTFS格式的Win 2000中,套用审核策略可以对资料夹、档案以及活动目录对象进行审核,审核结果记录在安全日誌中,通过安全日誌就可以查看哪些组或用户对资料夹、档案或活动目录对象进行了什幺级别的操作,从而发现系统可能面临的非法访问,通过採取相应的措施,将这种安全隐患减到最低。这些在FAT32档案系统下,是不能实现的。
- 在Win 2000的NTFS档案系统下可以进行磁碟配额管理。磁碟配额就是管理员可以为用户所能使用的磁碟空间进行配额限制,每一用户只能使用最大配额範围内的磁碟空间。设定磁碟配额后,可以对每一个用户的磁碟使用情况进行跟蹤和控制,通过监测可以标识出超过配额报警阈值和配额限制的用户,从而採取相应的措施。磁碟配额管理功能的提供,使得管理员可以方便合理地为用户分配存储资源,避免由于磁碟空间使用的失控可能造成的系统崩溃,提高了系统的安全性。
- NTFS使用一个“变更”日誌来跟蹤记录档案所发生的变更。
CDFS
CDFS是大部分的光碟的档案系统,只有小部分光碟使用其他档案系统。这些档案系统只能在CD-R或CD-RW上读取。
exFAT
(全称Extended File Allocation Table File System,扩展FAT,即扩展档案分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于快闪记忆体的档案系统,为了解决FAT32等不支持4G及其更大的档案而推出。对于快闪记忆体,NTFS档案系统不适合使用,exFAT更为适用。相对FAT档案系统,exFAT有如下好处:
扩展档案分配表主界面

1·增强了桌上型电脑与移动设备的互操作能力
2·单档案大小最大可达16EB(就是理论值,16×1024×1024TB,1TB=1024G)
3·簇大小可高达32MB
4·採用了剩余空间分配表,剩余空间分配性能改进
5·同一目录下最大档案数可达65 536个
6·支持访问控制
7·支持TFAT
採用该档案系统的快闪记忆体盘不支持Windows Vista ReadyBoost。Windows Vista SP1支持该档案系统。
请注意:exFAT只是一个折中的方案,只为随身碟而生。
超过4GB的随身碟格式化时默认是NTFS分区,但是这种格式是很伤随身碟的,因为NTFS分区是採用“日誌式”的档案系统,需要记录详细的读写操作,肯定会比较伤闪盘晶片,因为要不断读写。
下面请看exFAT、NTFS、FAT分区的比较:
档案系统 | 作业系统 | 最小扇区 | 最大扇区 | 最大单一档案 | 最大格式化容量 | 档案数量 |
FAT32 | Win 95 OSR2之后 | 512bytes | 64KB | 2bytes-4GB | 2TB(但NT核心系统限制为32GB) | 4194304 |
NTFS | Win2000之后 | 512bytes | 64KB | 受最大分割容量 | 2TB~256TB(受MBR影响) | 无 |
exFAT | Win CE 6/Vista SP1/Win 8 | 512bytes | 32768KB | 16EB(理论值) | 16EB(理论值)(目前支持到256TB) | 至少可以大于1000 |
RAW
RAW档案系统是一种磁碟未经处理或者未经格式化产生的档案系统,一般来说有这几种可能造成正常档案系统变成RAW档案系统:
●没有格式化。
●格式化中途取消操作。
●硬碟出现坏道。
●硬碟出现不可预知的错误。
●病毒所致。
解决RAW档案系统的最快的方法是立即格式化,并且使用防毒软体全盘防毒。当然,如果档案很重要的话可以考虑用磁碟数据恢复软体先救出数据,然后再格式化和防毒,或者在网上查找一些有关于“raw档案系统恢复”的内容。
Ext
Ext2
Ext是 GNU/Linux 系统中标準的档案系统,其特点为存取档案的性能极好,对于中小型的档案更显示出优势,这主要得利于其簇快取层的优良设计。
其单一档案大小与档案系统本身的容量上限与档案系统本身的簇大小有关,在一般常见的 x86电脑系统中,簇最大为 4KB,则单一档案大小上限为 2048GB,而档案系统的容量上限为 16384GB。
但由于目前核心 2.4 所能使用的单一分割区最大只有 2048GB,实际上能使用的档案系统容量最多也只有 2048GB。
至于Ext3档案系统,它属于一种日誌档案系统,是对ext2系统的扩展。它兼容ext2,并且从ext2转换成ext3并不複杂。
Ext3
Ext3是一种日誌式档案系统,是对ext2系统的扩展,它兼容ext2。日誌式档案系统的优越性在于:由于档案系统都有快取层参与运作,如不使用时必须将档案系统卸下,以便将快取层的资料写回磁碟中。因此每当系统要关机时,必须将其所有的档案系统全部shutdown后才能进行关机。
如果在档案系统尚未shutdown前就关机 (如停电) 时,下次重开机后会造成档案系统的资料不一致,故这时必须做档案系统的重整工作,将不一致与错误的地方修复。然而,此一重整的工作是相当耗时的,特别是容量大的档案系统,而且也不能百分之百保证所有的资料都不会流失。
为了克服此问题,使用所谓‘日誌式档案系统(Journal File System) ’。此类档案系统最大的特色是,它会将整个磁碟的写入动作完整记录在磁碟的某个区域上,以便有需要时可以回溯追蹤。
由于资料的写入动作包含许多的细节,像是改变档案标头资料、搜寻磁碟可写入空间、一个个写入资料区段等等,每一个细节进行到一半若被中断,就会造成档案系统的不一致,因而需要重整。
然而,在日誌式档案系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。
Ext4
Linux kernel 自 2.6.28 开始正式支持新的档案系统 Ext4。Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日誌功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:
- 与 Ext3 兼容。执行若干条命令,就能从 Ext3 线上迁移到Ext4,而无须重新格式化磁碟或重新安装系统。原有 Ext3数据结构照样保留,Ext4作用于新数据,当然,整个档案系统因此也就获得了 Ext4 所支持的更大容量。
- 更大的档案系统和更大的档案。较之 Ext3 目前所支持的最大 16TB 档案系统和最大 2TB 档案,Ext4分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的档案系统,以及 16TB 的档案。
- 无限数量的子目录。Ext3 目前只支持 32,000 个子目录,而Ext4支持无限数量的子目录。
- Extents。Ext3 採用间接块映射,当操作大档案时,效率极其低下。比如一个 100MB 大小的档案,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而Ext4引入了现代档案系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述档案则表示为“该档案数据保存在接下来的 25,600 个数据块中”,提高了不少效率。
- 多块分配。当写入数据到 Ext3 档案系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 档案就要调用 25,600 次数据块分配器,而Ext4的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。
- 延迟分配。Ext3 的数据块分配策略是儘快分配,而Ext4和其它现代档案作业系统的策略是儘可能地延迟分配,直到档案在 cache 中写完才开始分配数据块并写入磁碟,这样就能最佳化整个档案的数据块分配,与前两种特性搭配起来可以显着提升性能。
- 快速 fsck。以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在Ext4给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 档案系统就可以跳过它们而只去检查那些在用的 inode 了。
- 日誌校验。日誌是最常用的部分,也极易导致磁碟硬体故障,而从损坏的日誌中恢複数据会导致更多的数据损坏。Ext4的日誌校验功能可以很方便地判断日誌数据是否损坏,而且它将 Ext3 的两阶段日誌机制合併成一个阶段,在增加安全性的同时提高了性能。
- “无日誌”(No Journaling)模式。日誌总归有一些开销,Ext4允许关闭日誌,以便某些有特殊需求的用户可以藉此提升性能。
- 线上碎片整理。儘管延迟分配、多块分配和 extents 能有效减少档案系统碎片,但碎片还是不可避免会产生。Ext4支持线上碎片整理,并将提供 e4defrag 工具进行个别档案或整个档案系统的碎片整理。
- inode 相关特性。Ext4支持更大的 inode,较之 Ext3 默认的 inode 大小 128 位元组,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 位元组。Ext4还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。
- 持久预分配(Persistent preallocation)。P2P 软体为了保证下载档案有足够的空间存放,常常会预先创建一个与所下载档案大小相同的空档案,以免未来的数小时或数天之内磁碟空间不足导致下载失败。Ext4在档案系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比套用软体自己实现更有效率。
- 默认启用 barrier。磁碟上配有内部快取,以便重新调整批量数据的写操作顺序,最佳化写入性能,因此档案系统必须在日誌数据写入磁碟之后才能写 commit 记录,若 commit 记录写入在先,而日誌有可能损坏,那幺就会影响数据完整性。Ext4默认启用 barrier,只有当 barrier 之前的数据全部写入磁碟,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)
Btrfs
Btrfs(通常念成Butter FS),是由Oracle于2007年宣布并进行中的copy-on-write档案系统。目标是取代Linux目前的ext3档案系统,改善ext3的限制,特别是单个档案的大小,总档案系统大小或档案检查和加入目前ext3未支持的功能,像是 writable snapshots、snapshots of snapshots、内建磁碟阵列(RAID)支持,以及 subvolumes。Btrfs 也宣称专注在“容错、修复及易于管理”。
ZFS
ZFS源自于Sun Microsystems为Solaris作业系统开发的档案系统。ZFS是一个具有高存储容量、档案系统与卷管理概念整合、崭新的磁碟逻辑结构的轻量级档案系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用CDDL协定条款授权的开源项目。
HFS
HFS档案系统概念
分层档案系统(Hierarchical File System,HFS)是一种由苹果电脑开发,并使用在Mac OS上的档案系统。最初被设计用于软碟和硬碟,同时也可以在在唯读媒体如CD-ROM上见到。
HFS档案系统开发过程
HFS首次出现在1985年9月17日,作为Macintosh电脑上新的档案系统。它取代只用于早期Mac型号所使用的平面档案系统Macintosh File System(MFS)。因为Macintosh电脑所产生的数据,比其它通常的档案系统,如DOS使用的FAT或原始Unix档案系统所允许存储的数据更多。苹果电脑开发了一种新式更适用的档案系统,而不是採用现有的规格。例如,HFS允许档案名称最多有31个字元的长度,支持metadata和双分支(每个档案的数据和资源支分开存储)档案。
儘管HFS象其它大多数档案系统一样被视为专有的格式,因为只有它为大多数最新的作业系统提供了很好的通用解决方法以存取HFS格式磁碟。
构成方式
分层档案系统把一个卷分为许多512位元组的“逻辑块”。这些逻辑块被编组为“分配块”,这些分配块可以根据卷的尺寸包含一个或多个逻辑块。HFS对地址分配块使用16位数值,分配块的最高限制数量是65536。
组成一个HFS卷需要下面的五个结构:
- 卷的逻辑块0和1是启动块,它包含了系统启动信息。例如,启动时载入的系统名称和壳(通常是Finder)档案。
- 逻辑块2包含主目录块(Master Directory Block,简称MDB)。
- 逻辑块3是卷点阵图(Volume Bitmap)的启动块,它追蹤分配块使用状态。
- 总目录档案(Catalog File)是一个包含所有档案的记录和储存在卷中目录的B*-tree。
- 扩展溢出档案(Extent Overflow File)是当最初总目录档案中三个扩展占用后,另外一个包含额外扩展记录的分配块对应信息的B*-tree。
HFS+
在1998年,苹果电脑发布了HFS+,其改善了HFS对磁碟空间的地址定位效率低下,并加入了其它的改进。
HFS+档案系统相对于HFS档案系统的特点1、採用32bit 记录分配块数量
HFS 和HFS+档案系统对磁碟卷採用分块进行分配,将一个卷分成等大的分配块。HFS档案系统採用16bit 来记录分配块的数量,最多只能描述216个分配块。而对于HFS+档案系统,採用32bit 来记录分配块的数量,最多能描述232 个分配块。对于Mac 系统上的非空数据,都必须占用整数个分配块,也就是说,即使一个数据只有一个位元组,也要占用一个分配块。而HFS+档案系统增大了每个卷分配块的数量,可以使分配块的单位空间更小,从而达到减少存储空间浪费的目的。
2、目录树节点大小增加到4KB
HFS 档案系统的目录树节点大小为512 位元组,由于HFS+档案系统目录树索引节点需要存储附加指针和节点描述符两个关键值,HFS+档案系统的目录树节点大小增加到4KB。
3、单一档案大小得到提升
HFS 档案系统的单一档案大小上限为2^31bit,而HFS+档案系统的单一档案大小最大可达到2^63bit。
4、支持长档案名称
HFS 档案系统对档案名称最长支持到31个字元,而HFS+档案系统对档案名称採用Unicode编码,最长达到255个字元。
HFS 和HFS+档案系统对磁碟卷採用分块进行分配,将一个卷分成等大的分配块。HFS档案系统採用16bit 来记录分配块的数量,最多只能描述216个分配块。而对于HFS+档案系统,採用32bit 来记录分配块的数量,最多能描述232 个分配块。对于Mac 系统上的非空数据,都必须占用整数个分配块,也就是说,即使一个数据只有一个位元组,也要占用一个分配块。而HFS+档案系统增大了每个卷分配块的数量,可以使分配块的单位空间更小,从而达到减少存储空间浪费的目的。
2、目录树节点大小增加到4KB
HFS 档案系统的目录树节点大小为512 位元组,由于HFS+档案系统目录树索引节点需要存储附加指针和节点描述符两个关键值,HFS+档案系统的目录树节点大小增加到4KB。
3、单一档案大小得到提升
HFS 档案系统的单一档案大小上限为2^31bit,而HFS+档案系统的单一档案大小最大可达到2^63bit。
4、支持长档案名称
HFS 档案系统对档案名称最长支持到31个字元,而HFS+档案系统对档案名称採用Unicode编码,最长达到255个字元。
ReiserFS
ReiserFS,是一种档案系统格式,作者是Hans Reiser及其团队Namesys,1997年7月23日他将ReiserFS档案系统在网际网路上公布。Linux核心从2.4.1版本开始支持ReiserFS。
ReiserFS 的命名是源自作者Hans Reiser的姓氏,这个日誌型档案系统发展比ext2/3 晚近许多。在技术上使用的是 B*-tree 为基础的档案系统,其特色为能很有效率地处理大型档案到众多小档案都可以用很高的效率处理;实务上 ReiserFS 在处理档案小于 1k 小档案时,甚至效率可以比ext3快约10倍。
ReiserFS原先是Novell公司的SuSE Linux Enterprise採用的预设档案系统,直到2006年10月12日其宣称将在未来的版本改採ext3为预设。Novell公司否认这与Hans Reiser被控杀妻案有任何关係。
JFS
JFS( JOURNAL FILE SYSTEM),一种位元组级日誌档案系统,借鉴了资料库保护系统的技术,以日誌的形式记录档案的变化。JFS通过记录档案结构而不是数据本身的变化来保证数据的完整性。这种方式可以确保在任何时刻都能维护数据的可访问性。
该档案系统主要是为满足伺服器(从单处理器系统到高级多处理器和群集系统)的高吞吐量和可靠性需求而设计、开发的。JFS档案系统是为面向事务的高性能系统而开发的。在IBM的AIX系统上,JFS已经过较长时间的测试,结果表明它是可靠、快速和容易使用的。2000年2月,IBM宣布在一个开放资源许可证下移植Linux版本的JFS档案系统。JFS也是一个有大量用户安装使用的企业级档案系统,具有可伸缩性和健壮性。与非日誌档案系统相比,它的突出优点是快速重启能力,JFS能够在几秒或几分钟内就把档案系统恢复到一致状态。虽然JFS主要是为满足伺服器(从单处理器系统到高级多处理器和群集系统)的高吞吐量和可靠性需求而设计的,但还可以用于想得到高性能和可靠性的客户机配置,因为在系统崩溃时JFS能提供快速档案系统重启时间,所以它是网际网路档案伺服器的关键技术。使用资料库日誌处理技术,JFS能在几秒或几分钟之内把档案系统恢复到一致状态。而在非日誌档案系统中,档案恢复可能花费几小时或几天。
JFS的缺点是,使用JFS日誌档案系统性能上会有一定损失,系统资源占用的比率也偏高,因为当它保存一个日誌时,系统需要写许多数据。
VMFS
VMware Virtual Machine File System (VMFS )是一种高性能的群集档案系统,它使虚拟化技术的套用超出了单个系统的限制。VMFS的设计、构建和最佳化针对虚拟伺服器环境,可让多个虚拟机共同访问一个整合的群集式存储池,从而显着提高了资源利用率。VMFS 是跨越多个伺服器实现虚拟化的基础,它可启用VMware VmotionTM 、Distributed Resource Scheduler 和 VMware High Availability 等各种服务。VMFS 还能显着减少管理开销,它提供了一种高效的虚拟化管理层,特别适合大型企业数据中心。採用 VMFS 可实现资源共享,使管理员轻鬆地从更高效率和存储利用率中直接获益。
XFS
XFS 是 Silicon Graphics,Inc. 于 90 年代初开发的档案系统。它至今仍作为 SGI 基于 IRIX 的产品(从工作站到超级计算机)的底层档案系统来使用。现在,XFS 也可以用于 Linux。XFS 的 Linux 版的到来是激动人心的,首先因为它为 Linux 社区提供了一种健壮的、优秀的以及功能丰富的档案系统,并且这种档案系统所具有的可伸缩性能够满足最苛刻的存储需求。
UFS
UFS档案系统:基于BSD高速档案系统的传统UNIX档案系统,是Solaris的默认档案系统。默认启用UFS 日誌记录功能。在早期的Solaris 版本中,UFS 日誌记录功能只能手动启用。Solaris 10在运行64位Solaris核心的系统上支持多TB UFS档案系统。以前,UFS档案系统在64位系统和32位系统上的大小仅限于约1 TB(Tbyte)。现在,所有UFS档案系统命令和公用程式已更新为支持多TB UFS档案系统。
UFS1档案系统是OpenBSD和Solaris的默认档案系统。UFS1也曾是NetBSD和FreeBSD的默认档案系统,但NetBSD2.0和FreeBSD5.0以后版本开始使用UFS2做默认的档案系统。UFS2增加了对大档案和大容量磁碟的支持和一些先进的特性。目前似乎还只有FreeBSD和NetBSD支持UFS2。Apple OS X和Linux也支持UFS1,但并不做为它们的默认档案系统。
VXFS
VeritasFileSystem(VxFS)是首个商业日誌记录档案系统。通过日誌记录功能,元数据更改首先写入到日誌,然后再写入到磁碟。由于无需在多处写入更改,且元数据是异步写入的,因此吞吐量的速度较快。VxFS也是基于扩展区的意向日誌记录档案系统。VxFS设计用于要求高性能和高可用性,并且可以处理大量数据的操作环境。
ReFS
ReFS(Resilient File System,弹性档案系统) 是在Windows 8.1和Server® 2012中新引入的一个档案系统。ReFS是与NTFS大部分兼容的,其主要目的 是为了保持较高的稳定性,可以自动验证数据是否损坏,并尽力恢複数据。
ReFS 的关键功能如下:
·带有校验和的元数据完整性
·提供可选用户数据完整性的完整性流。
·通过写入时分配事务模型实现可靠的磁碟更新(也称为写入时複製)
·支持超大规模的卷、档案和目录
·存储池和虚拟化使得档案系统可建立并易于管理
·通过数据条带化提高性能(频宽可管理)并通过备份提高容错性
·通过磁碟扫描防止潜在的磁碟错误
·藉助“数据打捞”实现损坏还原,以便在任何情况下儘可能提高卷的可用性
·跨计算机共享存储池,以提供额外的容错性和负载平衡
WBFS
WBFS档案系统全称为Wii Backup File System,是在进行任天堂家用机wii运行备份游戏的研究中产生的游戏备份模式。由黑客发明,在windows系统下不能识别,早期利用linux系统运作。主要为了改善USB存储设备的运行效率。
PFS
PFS全称Playstation File System,顾名思义就是索尼为其家用机PS2专用硬碟开发的档案系统,电脑上只有PFS Explorer和Winhiip可以读取,其余资料不明。