摘要: 本文通过文件系统的定义说起,然后通过引文简单的介绍了一下文件系统类型;对Linux常用的ext2、ext3及reiserfs 根据本人使用经验也泛泛的谈了谈,但并不是专业的。如何阅读本文,还是用马克思理论告诉我们的方法:一分为二,边看边批吧;目录索引 一、什么是文件系统 (Filesystem)
1、常见定义方法;
2、理解文件系统的关健词;
1)磁盘的分割:
2)文件系统的创建:
3)挂载(mount):
4)文件系统可视的几何结构:
二、文件系统的类型;
三、Linux 文件系统的选择和安全性;
1、Linux操作系统安装过程中的文件系统的选择;
1)ext2 文件系统;
2)ext3 文件系统:是由ext2文件系统发展而来;
3)reiserfs 文件系统;
4)ext3、reiserfs、ext2 文件系统对大文件支持的对比;
2、ext2、ext3及reiserfs文件系统的安全性;
1)ext2、ext3和reiserfs 文件系统自动修复能力对比;
2)ext2、ext3和reiserfs 反删除功能对比;
四、Linux 支持的文件系统;
五、文件系统的特性;
六、在Linux中,文件系统的创建和挂载; 七、关于本文;
八、参考文档;
九、相关文档;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一、什么是文件系统 (Filesystem);
1、常见定义方法;
什么是文件系统(filesystem),用一两句话解答出来,实在有点困难,这个问题只能留给文件系统的设计者或对文件系统精通的专业人士来答复;下面是关于filesystem的定义是我从 Google.com 上搜索到的;下面我们分析一下,对我们来说,了解一下也有好处。如果您是专业人士,如果您有自己的定义方法,请在本文后面留言;谢谢;定义一;
A directory structure contained within a disk drive or disk area. The total available disk space can be composed of one or more filesystems. A filesystem must be mounted before it can be accessed. To mount a filesystem, you must specify a directory to act as the mount point. Once mounted, any access to the mount point directory or its subdirectories will access the separate filesystem. 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点;一旦文件系统被挂载, freebooks.by.ru/view/ShellProgIn24h/31480175.htm
定义二;
A method of organising files on a disk, eg NTFS, FAT.
linux-ntfs.sourceforge.net/ldm/home/terms.html 文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区组织文件的方法,如NTFS或FAT;
定义三;
A data structure or a collection of files. In Unix, filesystem can refer to two very distinct things, the directory tree or the arrangement of files on disk partitions. 文件系统是文件的数据结构或组织方法。在Unix中,文件系统涉及两个非常独特的事情,目录树或在磁盘或分区上文件的排列; www.emulex.com/ts/docfc/glossary.htm
定义四;
the structure of files on a disk medium which is visible via the operating system, ie the structure of files which a Unix user can see using "ls" and other tools 文件系统是基于操作系统的,建立在磁盘媒质上的可见体系结构,例如这种结构对于一个Unix用户来说可以用ls 或其它工具可以看到; www.ucolick.org/~de/deimos/glossary.html
定义五;
A software mechanism that defines the way that files are named, stored, organized, and accessed on logical volumes of partitioned memory. 文件系统是基于被划分的存储设备上的逻辑上单位上的一种定义文件的命名、存储、组织及取出的方法; www.evestigations.com/html/glossary.html
定义六;
In computing, a file system is a method for storing and organizing computer files and the data they contain to make it easy to find and access them. File systems may use a storage device such as a hard disk or CD-ROM and involve maintaining the physical location of the files, or they may be virtual and exist only as an access method for virtual data or for data over a network (e.g. NFS). 在计算机业,一个文件系统是有组织存储文件或数据的方法,目的是易于查询和存取。文件系统是基于一个存储设备,比如硬盘或光盘,并且包含文件文件物理位置的维护;也可以说文件系统也是虚拟数据或网络数据存储的方法,比如NFS; en.wikipedia.org/wiki/Filesystem
2、理解文件系统的关健词;
0)存储介质:
硬盘、光盘、软盘、Flash盘、磁带、网络存储设备等;
1)磁盘的分割:
这是针对大容量的存储设备来说的,主要是指硬盘;对于大硬盘,我们要合理规划分区,所以要谈到硬盘的分割。硬盘的分割,Linux有fdisk、cfdisk和parted等,常用的还是fdisk 工具,Windows和dos常用的也有fdisk ,但和Linux中的使用方法不一样。硬盘的分割工具还有第三方程序,比如PQ;至于对分区的理解和操作请参考: 《实例解说 fdisk 使用方法》
《合理规划您的硬盘分区》
2)文件系统的创建:
这个过程是存储设备建立文件系统的过程,一般也被称为格式化或初始化,通过一些初始化工具来进行。一般的情况下每个类型的操作系统都有这方面的工具,也有多功能的第三方工具,比如PQ。我的建议是如果您不太懂操作系统自带的工具,可以用第三方工具来切割硬盘,把硬盘分割成若干分区,然后再用操作系统自带的工作来初始化分区,也就是格式化分区。在Linux中有 mkfs系列工具;
3)挂载(mount):
文件系统只有挂载才能使用,Unix类的操作系统如此,Windows也是一样;在Windows更直观一些,具体内部机制我们不太了解。但Unix类的操作系统是通过mount进行的,挂载文件系统时要有挂载点,比如我们在安装Linux的过程中,有时会提示我们分区,然后建立文件系统,接着是问你的挂载点是什么 ,我们大多选择的是/ 。我们在Linux系统的使用过程中,也会挂载其它的硬盘分区,也要选中挂载点,挂载点通常是一个空置的目录,最好是我们自建的空置目录;
4)文件系统可视的几何结构:
文件系统的是用来组织和排列文件存取的,所以她是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,他表现为由/ 起始的树形结构; [root@localhost ~]# cd /
[root@localhost /]# tree
二、文件系统的类型;
文件系统类型有很多,您可以在 《Linux 文件系统(filesystem)资源索引》 中查看;但我们在Linux中常用的文件系统主要有ext3、ext2及reiserfs ; Windows和Dos常用的文件系统是fat系列(包括fat16及fat32等)和ntfs 文件系统;光盘文件系统是ISO-9660文件系统;网络存储NFS服务器在客户端访问时,文件系统是nfs,这个比较特殊一点;至于您想了解的更多,请访问您所用的文件系统的官方网站,请在《Linux 文件系统(filesystem)资源索引》 查找相应的资源,谢谢;
三、Linux 文件系统的选择和安全性;
如果做为专业人士来说,应该说哪个文件系统都是安全的;用Linuxfish的话来说“哪个文件系统的设计者都不是傻子,他们应该明白自己的作品是怎么回事。”。做为文件系统的设计者来说,我们一般在使用的过程中所遇到的问题,他们都应该有解决办法。但我们毕竟不是专业从事文件系统研究的,所以我们有必要从使用角度来说明文件系统的安全性;对于初学Linux的弟兄,一定会遇到文件系统的选择左右为难的情况,因为大多新手并不知道哪个文件系统更好;现在我们来谈谈文件系统的选择;
1、Linux操作系统安装过程中的文件系统的选择;
1)ext2 文件系统;
ext2文件系统应该说是Linux正宗的文件系统,早期的Linux都是用ext2,但随着技术的发展,大多Linux的发行版本目前并不用这个文件系统了;比如Redhat和Fedora 大多都建议用ext3 ,ext3文件系统是由ext2发展而来的。对于Linux新手,我们还是建议您不要用ext2文件系统;ext2支持undelete(反删除),如果您误删除文件,有时是可以恢复的,但操作上比较麻烦; ext2支持大文件; ext2文件系统的官方主页是: http://e2fsprogs.sourceforge.net/ext2.html
2)ext3 文件系统:是由ext2文件系统发展而来;
ext3 is a Journalizing file system for Linux(ext3是一个用于Linux的日志文件系统),ext3支持大文件;但不支持反删除(undelete)操作; Redhat和Fedora都力挺ext3;至于ext3文件系统的更多特性,请访问 《Linux 文件系统(filesystem)资源索引》 ;
3)reiserfs 文件系统;
reiserfs 文件系统是一款优秀的文件系统,支持大文件,支持反删除(undelete);在我的测试ext2、reiserfs 反删除文件功能的过程中,我发现reiserfs文件系统表现的最为优秀,几乎能恢复 90%以上的数据,有时能恢复到100%;操作反删除比较容易;reiserfs 支持大文件;
4)Linux文件系统对大文件支持的对比;
请参考 http://www.suse.de/~aj/linux_lfs.html
Filesystem File Size Limit Filesystem Size Limit
ext2/ext3 with 1 KiB blocksize |
16448 MiB (~ 16 GiB) |
2048 GiB (= 2 TiB) |
ext2/3 with 2 KiB blocksize |
256 GiB |
8192 GiB (= 8 TiB) |
ext2/3 with 4 KiB blocksize |
2048 GiB (= 2 TiB) |
8192 GiB (= 8 TiB) |
ext2/3 with 8 KiB blocksize (Systems with 8 KiB pages like Alpha only) |
65568 GiB (~ 64 TiB) |
32768 GiB (= 32 TiB) |
ReiserFS 3.5 |
2 GiB |
16384 GiB (= 16 TiB) |
ReiserFS 3.6 (as in Linux 2.4) |
1 EiB |
16384 GiB (= 16 TiB) |
XFS |
8 EiB |
8 EiB |
JFS with 512 Bytes blocksize |
8 EiB |
512 TiB |
JFS with 4KiB blocksize |
8 EiB |
4 PiB |
NFSv2 (client side) |
2 GiB |
8 EiB |
NFSv3 (client side) |
8 EiB |
8 EiB |
Note Kernel Limitations: The table above describes
limitations of the on-disk format. The following kernel limits
exist:
- On 32-bit systems with Kernel 2.4.x: The size of a file and a
block device is limited to 2 TiB. By using LVM several block
devices can be combined enabling the handling of larger file
systems.
- 64-bit systems: The sizes of a filesytem and of a file are
limited by 263 (8 EiB). But there might be hardware
driver limits that do not allow to access such large devices.
- Kernel 2.6: For both 32-bit systems with option CONFIG_LBD set
and for 64-bit systems: The size of a file system is limited to
273 (far too much for today). On 32-bit systems
(without CONFIG_LBD set) the size of a file is limited to 2 TiB.
Note that not all filesystems and hardware drivers might handle
such large filesystems.
Note in the above:
1024 Bytes = 1 KiB;
1024 KiB = 1 MiB;
1024 MiB = 1 GiB; 1024 GiB = 1 TiB; 1024 TiB = 1 PiB; 1024 PiB = 1
EiB (check http://physics.nist.gov/cuu/Units/binary.html)
Maximum Number of Partitions An IDE disk has 64 minors, one is used for the full disk and therefore 63 partitions are possible. A SCSI disk has 16 minors and therefore only 15 partitions maximal.
2、文件系统的安全性;
任何一个文件系统在专家眼中都是安全的,就象MS说Windows是安全性是可靠的类似,如果MS专家来用Windows绝对没有任何问题,毕竟人家是专家,我们是使用者;专家和使用者还是有很大区别的;因为我们不是专家,所以我们才要选择更为安全易用的文件系统,下面我们对比一下ext2、ext3和reiserfs;
1)ext2、ext3和reiserfs 文件系统自动修复能力对比;
ext2、ext3及reiserfs 都能自动修复损坏的文件系统,也都是在开机时进行。从表现来看reiserfs更胜一筹;ext2和ext3文件系统在默认的情况下是“This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first”,也就是每间隔21次挂载文件系统或每180天,就要自动检测一次。通过实践来看ext2和ext3在auto check上是存在风险,有时文件系统开机后就进入单用户模式,并且把整个系统 “扔”进lost+found"目录,如果要恢复系统,就得用fsck 来进行修复;当然fsck 也同样存在风险;所以我们对ext2和ext3文件系统的使用,对新手来说的确需要心里准备;毕竟修复已经损坏的ext2和ext3文件系统是有困难的;另外ext2和ext3文件系统对于意外关机和断电,也可能导致文件系统损坏,所以我们在使用过程中,必须是合法关机;比如执行poweroff指令来关掉机器; reiserfs 文件系统也能自动修复,他在自动检测和修复上具有很强的功能,几乎很少出现ext2和ext3的情况,另外从速度来说他也比ext2、ext3文件系统的速度要快;通过我两个月的测试来看,reiserfs 对于意外断电表现最佳。为了验证reiserfs 文件系统的在意外断电的安全性上,我每天都直接断掉电源关机,但我们不应该说reiserfs 是安全的直接断电了事,直接断电有时也会造成硬盘物理损伤;reiserfs文件系统从未出现象ext2和ext3那样用手动方式来进行修复的情况。从这方面来说reiserfs 还是极为安全的;
2)ext2、ext3和reiserfs 反删除功能对比;
从文件系统的反删除来看,ext2和reiserfs 都支持反删除,对于一般使用者来说应该是安全的,但对于保密单位来说可能意味着不安全。从反删除角度来说明文件系统的安全性,也是有两方面;昨天和Linuxfish 讨论了这个问题,他说在Windows中引入了文件粉碎机这个可笑的工具,目的就是不让恢复已删除的文件。如果您的工作是从事比较机密的,用ext3比较好,因为ext3一旦删除文件,是不可恢复的,虽然网上也有几个关于反删除恢复操作在ext3中,但实践来看,并不是那么容易;因为反删除能恢复相应的绝秘资料的泄秘,所以ext3可能更适合您;如果您是一般使用者,我还是建议用reiserfs文件系统,他支持反删除功能,反删除操作也比较容易;但也会存在一点问题。比如在Fedora或Redhat中,有一个关于系统安全的selinux,在默认情况下,可能在reiserfs 中不支持selinux ;不过值得一说的是selinux是一个绝对庞大、功能丰富、涉及面极广的安全工具,selinux并不是一般使用者就能驾驭的了的;所以我们建议初学者在使用Linux系统时先关掉selinux 功能;但您可以慢慢尝试熟悉使用它;在Fedora和Redhat最新的版本中,reiserfs文件系统的确是不支持selinux,所以您在Fedora或Redhat中采用了reiserfs ,并且还想用selinux ,还是自己找解决办法,可能要打内核补丁才行;至于其它Linux发行版本是否存在这个问题,还得需要您来尝试;
四、Linux 支持的文件系统;
Linux目前几乎支持所有的Unix类的文件系统,除了我们在安装Linux操作系统时所要选择的ext3、reiserfs和ext2外,还支持苹果MACOS的HFS,也支持其它Unix操作系统的文件系统,比如XFS、JFS、Minix fs 及UFS等,您可以在kernel的源码中查看;如果您想要让系统支持哪些的文件系统得需要把该文件系统编译成模块或置入内核;关于如何编译内核,请参考《内核管理概述》;当然Linux也支持Windows文件系统NTFS和fat,但不支持NTFS文件系统的写入;支持fat文件系统的读写;请参考《在Fedora core 4.0 加载NTFS和FAT32分区详述》 Linux也支持网络文件系统,比如NFS等;挂载nfs文件系统的办法是: mount -t nfs 服务器地址:/目录 挂载点 下面是一个例子,比如我在192.168.1.4的机器做了一个NFS服务器,提供192.168.1.x网段上的所有机器都可以用NFS;具体做NFS服务器的过程省略,此处只讲怎么挂载; [root@localhost ~]# showmount -e 192.168.1.4 首先查看NFS服务器共享的文件文件夹;
Export list for 192.168.1.4:
/opt/sirnfs * 注:位于 192.168.1.4机器上的 /opt/sirnfs 目录
[root@localhost ~]# mkdir /mnt/sirnfs 注:在本地机器建一个目录,做为NFS挂载点;
[root@localhost ~]# mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs 注:挂载NFS;
[root@localhost ~]# df -h 注:查看本地机挂载NFS是不是成功了;
Filesystem 容量 已用 可用 已用% 挂载点
/dev/hda7 11G 7.4G 2.9G 72% /
/dev/shm 236M 0 236M 0% /dev/shm
/dev/hda9 22G 837M 22G 4% /opt/da
主要有:
A/UX | AIX | BSD | DragonFly BSD | FreeBSD | GNU | HP-UX | IRIX | Linux | LynxOS | Mac OS X | Minix | NetBSD | NEXTSTEP | OpenBSD | QNX | SCO OpenServer | Solaris | System V | Tru64 | Xenix | 更多... |
1974年,Thompson和Ritchie合作在ACM通信上发表了一片关于UNIX的文章,这是UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。
1975年,UNIX发布了4、5、6三个版本。1978年,已经有大约600台计算机在运行UNIX。1979年,版本7发布,这是最后一个广泛发布的研究型UNIX版本。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。此后这个方向上的研究导致了Plan 9的出现,这是一个新的分布式操作系统。
1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。
这个新的UNIX商业发布版本不再包含源代码,所以加州大学Berkeley分校继续开发BSD UNIX,作为UNIX System III和V的替代选择。BSD对UNIX最重要的贡献之一是TCP/IP。BSD 有8个主要的发行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及 4.4-lite。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX 和Microsoft Windows。
其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,Bill Joy,在BSD基础上开发了SunOS,并最终创办了Sun Microsystems。
1991年,一群BSD开发者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)离开了加州大学,创办了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常见的Intel平台上提供全功能商业BSD UNIX的厂商。后来Bill Jolitz 离开了BSDI,开始了386BSD的工作。386BSD被认为是FreeBSD、OpenBSD 和 NetBSD的先辈。
AT&T继续为UNIX System V增加了文件锁定,系统管理,作业控制,流和远程文件系统。1987到1989年,AT&T决定将Xenix(微软开发的一个x86-pc上的UNIX版本),BSD,SunOS和System V融合为System V Release 4(SVR4)。这个新发布版将多种特性融为一体,结束了混乱的竞争局面。
1993年以后,大多数商业UNIX发行商都基于SVR4开发自己的UNIX变体了。
现况
UNIX System V Release 4发布后不久,AT&T就将其所有UNIX权利出售给了Novell。Novell期望以此来对抗微软的Windows NT,但其核心市场受到了严重伤害,最终Novell将SVR4的权利出售给了X/OPEN Consortium,后者是定义UNIX标准的产业团体。最后X/OPEN和OSF/1合并,创建了Open Group。Open Group定义的多个标准定义着什么是以及什么不是UNIX。
实际的UNIX代码则辗转到了Santa Cruz Operation,这家公司后来出售给了Caldera Systems。Caldera原来也出售Linux系统,交易完成后,新公司又被重命名为SCO Group。
1127部门的解散
根据一项报导指出,当年负责研发UNIX与后续维护工作的贝尔实验室1127部门已于2005年8月正式宣告解散。Ken Thompson已退休,现居加州;Dennis Ritchie调到别的部门;Douglas McIlroy在达特茅斯学院担任教授等等。
标准
从1980年代开始,POSIX,一个开放的操作系统标准就在制定中,IEEE制定的POSIX标准现在是UNIX系统的基础部分。
自由的类Unix系统
Richard Stallman建立了GNU项目,要创建一个能够自由发布的类UNIX系统。20年来,这个项目不断发展壮大,包含了越来越多的内容。现在,GNU项目开发的产品,比如Emacs,GCC等已经成为各种其他自由发布的类UNIX产品中的核心角色。
1990年,Linus Torvalds决定编写一个自己的Minix内核,初名为Linus' Minix,意为Linus的Minix内核,后来改名为Linux,此内核于1991年正式发布,并逐渐引起人们的注意。当GNU软件与Linux内核结合后,GNU软件构成了这个POSIX兼容操作系统GNU/Linux的基础。今天GNU/Linux已经成为发展最为活跃的自由/开放源码的类Unix操作系统。
1994年,BSD Unix走上了复兴的道路。BSD的开发也走向了几个不同的方向,并最终导致了FreeBSD、OpenBSD和NetBSD的出现。
类Unix操作系统
A/UX | AIX | BSD | DragonFly BSD | FreeBSD | GNU | HP-UX | IRIX | Linux | LynxOS | Mac OS X | Minix | NetBSD | NEXTSTEP | OpenBSD | QNX | SCO OpenServer | Solaris | System V | Tru64 | Xenix | 更多... |