FC47 Linux实验室
出自Full Circle 中文项目主页
文件系统的种类比Unix的衍生版还要多,多到我都懒的描述它们了。为什么我们要关心它们呢?不幸的是,我们并不是完全生活在Linux的气泡中-闭塞的同事、家人和朋友都坚持使用其他的非原生文件系统,所以我们也不得不和它们打交道。微软公司为我们提供了FAT和NTFS,苹果公司提供了用在Macintosh上的HFS。
探究FAT
上次我们提到MS-DOS,而没有提到事实上支撑它的文件系统:最受限制的,但同时也是最普及的FAT文件系统。FAT之名由File Allocation Table(文件分配表)而来,它提供了文件索引,更准确地说,它是映射文件内容到磁盘上存储位置的翻译表。
FAT16和FAT32(分别有16位和32位的地址空间)都不是日志文件系统,也都不支持访问控制。但是,因为被微软使用,VFAT和FAT32借着Windows 95和98桌面系统主宰了世界。于是它们也成了闪存设备的默认文件系统-例如数码相机、USB记忆棒以及类似的东西。因为小而且便携,它们能够满足那些设备以及嵌入式程序的使用。如果我们想插入标准的相机、音乐播放器和其他的便携存储设备,就必须在Linux上安装FAT支持软件。
简单(或者说是缺少特性)是FAT16的优点也是缺点。它留给了我们八字符文件名,外加三字符的扩展名表示文件类型的传统。你会觉得发Twitter是个挑战,因为你必须在8个字符之内给文件起个有意义的名字,而且还要组织好文件夹-命名必须在11个字符之内。想象一下你就会明白,当我们能起个很长的文件名儿-最多255个字符-并且在VFAT(Virtual FAT)和FAT32中能够获得大容量磁盘支持时,会有多兴奋。大分区建立之后多数都能正常工作。但是,仍有某些软件不允许FAT32分区超过32GB,其中包括被大家熟知的Windows XP安装程序。
你肯定再也不想把它作为桌面文件系统了。即使它能够自我备份用以提供一些数据的安全性,FAT文件系统仍旧很脆弱,易崩溃。它需要例时的健康检查和清理碎片以保证性能。
NTFS由Windows NT(代表New Technology,其实不是)引入。NTFS是Windows现在使用的文件系统,在工作组和局域网中共享文件方面广泛使用。它是一个日志式、具有稳定的访问控制并且是基于Novell Netware的文件系统。它包括了网络文件分享操作、大容量支持还有不错的性能,但它仍旧独属于微软。更重要的是,Linux上支持开源NTFS。当你需要管理Windows磁盘或者创建兼容的共享文件夹时,它可以让你访问到Windows磁盘和新创建的NTFS分区。Linux里的文件共享工具Samba套件提供了绝大多数的基础架构,让你可以简单地和Windows共享资源,而不必熟谙文件系统。我还没弄坏过NTFS呢,真的从来没坏过。
我觉得你得熟悉NTFS才能给家人和朋友提供很多的技术援助(就像作为私人“电脑专家”一样,为家人和朋友提供技术援助)。
苹果就是苹果
苹果公司自己的HFS(Hierarchical File-system)层次文件系统,也叫做Mac OS Standard(Mac OS标准),使用在苹果电脑上(或者其他运行Mac OS的系统),现在已经升级到了HFS Plus,或者叫做HFS+、Mac OS Extended(但显然不是“HFS Extended”,这是个错误的叫法)。如果他们能够下定决心的话,也可以将HFS Plus作为iPods数字音乐播放器的文件系统格式。
作为Unix文件系统的另一个后裔,HFS Plus包括日志、访问控制、元数据、别名、符号链接(软链接)这些智能特性。但是人家是Apple,总是要和其他人有那么一点不同。一些原始的HFS总是因为缺乏日志功能而很容易、很频繁地坏掉。HFS Plus就略显优雅了。
如果你不得不或者只是简单地需要读取Mac,很庆幸,Linux内核支持HFS和HFS Plus的基本读取。但是,作为写入HFS的必需功能:日志功能相当于不存在(因为太多的授权和专利问题)。通常,大多数现代Mac设备都激活了HFS Plus的日志功能,你肯定也不希望在Linux上写入HFS Plus分区时丧失日志功能。
Mac OS也支持UFS(Universal File System)通用文件系统,一个基于BSD 4.4的FFS(Fast File System)快速文件系统的文件系统,所以它是一个严谨的工业强度日志式文件系统,但不适用于存储元数据。限与篇幅,不能再细讲了,而且我也该睡觉了。
死角峡谷
作为补充,IBM启动了OS/2用以和Windows竞争,它使用了HPFS(High Performance File-System)高性能文件系统。那时候算是一个高效执行者,但是没人用它。
闪亮、闪亮
有些尴尬地说我要写那些闪亮圆盘的东西-光盘。
ISO9660是一个符合ISO 9660标准的CD-ROM文件系统。很庆幸地说,Linux对CD-ROMs和ISO镜像支持的非常完美。你可以使用命令行或者点击(鼠标)的图形工具复制和挂载ISO镜像。这是在机器间移动数据最可靠的方法-或者说至少它曾经是,直到光盘退出江湖。
UDF是Universal Disk Format(通用磁盘格式),事实上它并不是。UDF几乎被作为标准开发。你可以通过一个无需关闭或创建多会话的“普通”文件系统刻录可重写光盘。理论上,UDF磁盘可以当作高容量软盘使用。事实上,不同的可重写光盘驱动硬件以及Windows所支持的各个UDF版本之间的差异会导致你的文件映射表非常容易损坏,尤其是当你删除文件的时候。很多CD-ROM驱动器都不能读取、打开或关闭它们。Linux几乎没有类似的问题。只是,在这个格式下光盘会读得很慢。
总结
这篇文章讲了些你可能会在Linux计算科学课程中看到或接触过的长长的文件系统列表。眼尖的读者可能会问我漏掉的一个:NFS。我没有漏掉它。Network File System(网络文件系统)不是一个真正的文件系统,它是一个用于文件共享的像(但不是)Samba的协议。以后我们的杂志中可能会有介绍它的文章。