Linux文件系统(二)—— Linux上三个主要文件系统(EXT2、EXT3和ReiserFS)介绍和比较

来源:互联网 发布:知敬畏是什么意思 编辑:程序博客网 时间:2024/06/05 20:22
(引用本文内容请注明出处:wochi.cublog.cn,谢谢)
 
Linux上三个主要文件系统(EXT2EXT3ReiserFS)介绍
 
【摘要】如何把数据存放在存储设备上?又如何访问这些数据?这是文件系统必须回答的两个问题。现代文件系统种类繁多,良莠不齐。这些文件系统各有什么特征?有什么优缺点?适用的环境是什么?本文将详细介绍基于Linux系统的三个主要文件系统:ext2ext3ReiserFS
Introducing The Three Main FileSystems (ext2, ext3 and ReiserFS) on Linux
ABSTRACTHow to store data on storage devices? How to access these data which settle on storage devices? These two questions are just what the file system should answer. There are many sort of file systems on the fly, among which, some are better than others. What characteristics do they have respectively? And what advantages and disadvantages do they inherit? And which environment are they suitable for?The paper will discuss three popular file systems which are used widely on Linux operating system, they are ext2, ext3 and ReiserFS.
 
1          简介
文件系统是解决如何在存储设备上存储数据的一套方法,包括存储布局、文件命名、空间管理、安全控制等。Linux操作系统支持很多现代的流行文件系统,其中ext2ext3ReiserFS最普遍。ext2文件系统是伴随着linux一起发展起来的,在ex2的基础上增加日志就是ext3,这两个文件系统可以很容易的转换而不必重新格式化存储介质,它们是linux特有的。ReiserFS可以说是后起之秀了,最初它不是用于linux,所以对linux来说它是一个泊来品。ReiserFS采用了一个非常先进的新颖算法,最新的4版本真正做到了文件系统操作的原子性(类似数据库事务操作的原子性),据官方报道,ReiserFS“原子性算法优于现代数据库的原子性算法,做到了空间和时间复杂度的双优!一个文件系统能做到这个份上,我算是彻底服了:-)
现代Linux系统继续采用了早期(1992年前)发展的虚拟文件系统(Virtual File System,简写为VFS)理念,VFS是一个介于用户和实际文件系统之间,为用户提供了一个统一的编程接口,尽管处于其之下的各种文件系统类型千差万别,但对最终用户来说却是一样的。例如当用户张三输入命令cd /data后,他并没有意识到自己刚从ext3文件系统进入ReiserFS文件系统,他仍然使用命令ls –l列出当前目录下的所有文件,而且显示格式也是一样,但是幕后英雄VFS可忙坏了,它不得不启动一个算法找到ReiserFS文件系统提供的接口函数并调用它们,要知道ReiserFS提供的一套函数可不同于ext3的那一套。得益于VFS,其他文件系统可以采用热插拔的非常简便的方式加入或退出Linux操作系统,例如当第一次mount一个文件系统A时,相应地就把该文件系统对应的模块装载到内核(假设没有被直接编译进内核),当最后把文件系统A对应的设备umount时,对应的模块被卸载出去。
2          原理
LINUX的文件系统可以追溯到八十年代末的Minix文件系统,而Minix文件系统具有几个明显的缺点:文件系统不能超过64M,目录只能存放固定数目的文件,文件名长度不能超过14个字符,文件尺寸小于64M。之后由于继续沿袭传统技术,尽管linux的标准文件系统依次经历了VFS(1992年前)ext(1992)ext2(1993)和最新的ext3这一系列文件系统的传种接代,但基因没变,只不过新一代都是改进前一代的不足,或者加入一些新东东而已。但由于Linux几乎在一开始就引入VFS的概念(我个人认为非常英明^O^),Linux对其他第三方文件系统都是包容的,目前几乎所有先进的文件系统都支持,其中著名的ReiserFS已经成了NovellSuSe Linux发行版的缺省文件系统,但也由于IT界最臭名昭著的四字经向后兼容的要求,今日各种linux发行版中存在过多地包容早已经落伍的文件系统的现象,比如MinixFAT等,但对于一个富有理论和经验的系统管理员来说,所有的这些累赘都可以在弹指间一一化解。
下面我们先看看一块物理硬盘是如何分区的。三个主要的参数是柱面数、磁头数和每磁道扇区数,起始编号分别为0010柱面0磁头1扇区是主引导分区,上面存放引导代码和四个主分区表(如果一个物理硬盘多于4个,那么就放在扩展分区),0柱面0磁头上的其他扇区保留,真正的分区是从0柱面1磁头1扇区开始的。在linux中,用/dev/had/dev/hdb/dev/sda/dev/sdc等表示一个物理磁盘。实验:
1).      查看硬盘物理参数:hdparm /dev/sda; hdparm –i /dev/had(IDE硬盘)
2).      读入分区表信息:dd if=/dev/sda of=/tmp/mbr bs=1 count=64 skip=446
3).      查看主分区表信息:od –t x1 mar
4).      备份主引导区信息:dd of=/dev/sda if=/dev/sda bs=512 count=1 seek=1
 
2.1    VFS
自从邓小平南巡讲话那年之前VFS投胎于linux以来(Mr. Linus不愧为一个有远见的接生婆,@_@),VFS就一直与Linux形影不离,并且成了Kernel的一部分,在Kernel版本号如芝麻开花般节节攀升的同时自己也枝繁叶茂起来。
VFS就像一个一个默默无闻的公仆,它介于各种文件系统和用户进程之间(参见图〖一〗),一方面屏蔽下层的各种异构文件系统的个性,另一方面为上层用户提供一个统一的接口(如openread等),同时VFS还提供一些文件系统没有的操作,比如,没有哪个文件系统提供了函数lseek,此函数由VFS实现。
Kernel中存在一个全局指针变量file_systems,该变量指向一个元素类型为file_system_type的链表,当mount一个文件系统时装载对应的模块,而装载模块时触发的行为register_filesystem()会生成一个file_system_type结构并把它挂接到file_systems链表上,也就是说所有的已经mount的文件系统都挂在这个链表上,file_system_tpe结构中有一个指向超级块结构的指针,存储介质上的超级块在设备mount时被读入内存,直到umount时从内存中删除。
 
图〖一〗VFS在内核中的地位
2.2         EXT2EXT3
EXT2linux上标准的文件系统,EXT3是在EXT2基础上增加日志形成的,其思想还是可以追溯到早期UNIX家族发展的基于超级块和inode的经典概念。/dev/sda#n表示/dev/sda硬盘上的第#n个分区,如果一个分区备格式化为ext2ext3文件系统,那么整个分区的布局如图〖二〗所示:
 
 
图〖二〗:EXT2文件系统分区结构
分区上的扇区是从0开始编号的,每个扇区512bytes,一个块(block)大小一般是1k2k3k4k,具体大小可在创建文件系统时指定,如果不指定块大小那么会根据分区的大小自动相应选择一个。分区开始的1024bytes存放引导程序boot,接下来的1024bytes存放超级块super block,组描述字group descriptors起始于一个新块,并单独占用一个块空间,之后的所有块被组织成块组,块组才是真正存放文件的场所。超级块含有整个文件系统的一些全局参数,如:卷名、全局唯一标识符、状态、块大小、总块数、每组inode数,总i节点数、每组块数等等,super block在文件mount时被读入内存,直到umount时被释放,由于超级块对于文件系统来说至关重要,所以超级块一般在第13579组的首块中存有副本。
实验:
1).      创建一个ext2文件系统:mke2fs –c –c –L “Test Filesystem” /dev/sda2
2).      查看ext2分区开始部分的信息:od –t x1 /dev/sda2 | more;其中“aa55”之前的为boot,含有魔数“ef53”的区域为super block
3).      查看超级块中的内容:tune2fs –l /dev/sda2;例子见附件1
4).      查看详细的块组信息:dumpe2fs –x /dev/sda2;例子见附件2
一个块组描述字占用32个字节,其中三个主要指针分别指到到这个块组的i节点表、i节点位图和块位图。块组的设计是为了拉近inode和它的数据块的距离,这样就可以提高磁盘存取性能,一个块组的具体结构示意图见图〖二〗右边部分
inodeEXT2文件系统的精华,一个inode对应一个文件,inode编号是全局性的,从1开始,描述参考图〖三〗。
 
inode中存放文件的一些重要属性,如权限、文件大小、访问时间、修改时间、创建时间、文件属主ID、组ID、块数等。Inode包含15个指针,前12个直接指向数据块,后三个依次是一次间接、二次间接和三次间接指向数据块。
文件系统的目录不同于普通文件的结构,是一种固定格式的文件,里面的每一个条目代表目录中的一个文件,示意图见图〖四〗。
 
图〖四〗:目录条目示意图
ext2文件系统上增加一个特殊的inode(日志文件),用于记录文件系统元数据的变化,即日志journal,这就是EXT3文件系统。Ext3这种粗糙的实现日志的文法付出了很大的代价:写两次!
实验:ext2ext3文件系统之间的转换(不需要重新格式化)
1).      ext2转换成ext3文件系统:tune2fs –j /dev/sda2;如果sda之前已经mount,那么该命令执行完后在顶层目录创建了一个不能删除和dump的日志文件.journal,机器重启或umounte2fsck后该文件将被改变成隐藏的特殊日志文件inode。如果/dev/sda2是启动时自动mount的,那么还需手工修改/etc/fstab/dev/sda2所对应的文件系统类型,否则还是按ext2类型mount和使用。
2).      ext3转换成ext2文件系统:umount /dev/sda2; tune2fs –O ^has_journal /dev/sda2; e2fsck –y /dev/sda2; mount –t ext2 /dev/sda2 /mnt;对于自动mount的设备还需修改/etc/fstab
2.3              ReiserFS 3.6
在香港回归那年,Hans Reiser把他的基于平衡树结构(ReiserFS 3.6采用B*treeB*Tree查询速度比B+Tree要快很多,最近发布的ReiserFS 4采用独特的舞蹈树结构)的ReiserFS文件系统公布在网上,此后,ReiserFS文件系统一直在Hans Reiser领导的开发小组下开发和发展。ReiserFS是一个完全不同于ext2/ext3的文件系统,日志功能只针对于文件系统的元数据。由于其采用先进的日志机制,且空间复杂度和时间复杂度都优于诸如ext2等其他文件系统,性能直逼高档unix(如AIX)上的高级文件系统,所以迅速走红(目前得到许多linux发行商的支持,而 SuSe linux干脆直接把它作为缺省安装的文件系统)。ReiserFS那帮狂热的维护者每一次升级都会为我们带来惊喜,正是这种跨越式的发展使得ReiserFS几乎抛弃了那个臭名昭著的向后兼容的理念,每一次的升级都必须重新格式化分区,这成了受他人攻击的唯一理由(我冤枉啊 !_!)。
ReiserFS 是根据面向对象的思想设计的,由语义层(semantic layer)和存储层(storage layer)组成。语义层主要是对对象命名空间的管理及对象接口的定义,以确定对象的功能。存储层主要是对磁盘空间的管理。语义层与存储层是通过键(key)联系的。语义层通过对对象名进行解析生成键,存储层通过键找到对象在磁盘上存储空间,键值是全局唯一的。
目前正在使用的是ReiserFS 3.6版本,在32位机器上最大可支持2^32-4个对象,每个对象包含一个对象ID和一个键。ReiserFS3.6文件系统分区的物理布局是这样的:首先余留64k(全清0),然后依次是super block(占用1block)、位图块(1block)、日志(如果日志和数据同在一个设备上,缺省大小为8193blocks)、根和其他节点区(参考图〖五〗)。缺省块大小是4k,开始时树高为23.6版树高不能超过5
 
保留(64k)
超级块(1block)
位图(>0block)
日志(<8193blocks)
非根节点区
图〖五〗:ReiserFS文件系统分区物理布局
B+Tree的内部节点(占一个磁盘块)定义如下:
一些小文件(<4KB)直接存放在内部节点中,而大文件存放在叶子节点。
B+Tree的叶子节点(占若干磁盘块)的结构如下:
对于具体的定义清阅读源代码,这里不做深入分析。
如果日志放在其他设备上,那么数据设备上就没有日志区,而根块就紧接着位图块存放。假如一块等于4k,那么超级块放在第16块(块编号从0开始),位图从第17块开始存放,紧接着是根。
ReiserFS超级块类似于ext2的超级块,里面含有整个文件系统的重要参数,如文件系统总块数、空闲块数、根所在的块号、日志起始块和大小、块大小、魔数(缺省日志设备ReIsEr2Fs,单独日志设备ReIsEr3Fs)、文件系统状态、树高、位图所占块数等等。
ext3一样,ReiserFS也有三种日志模式,即journal,ordered,writeback。同时,ReiserFS引入了两种日志优化方法: copy-on-capturesteal-on-capturecopy-on-capture:当一个事务要修改的块在另一个未提交的事务中时,就把这个块复制一份,这样这两个事务就可以并发进行了。steal-on-capture:当一个块被多个事务修改时,只有最晚提交的那个事务才把这个块实际写入文件系统,其他事务都不写这个块。
最近发布的ReiserFS 4更是给人带来了许多令人炫目的创新,比如采用舞蹈树算法进一步把性能推向极至,引入文件系统调用的原子性首次把文件系统操作带入类似于数据库的ACIDAtomiccityConsistencyIsolationDurability)领域(将来可能想破坏文件系统也难(-:),在同一时刻既可以把一个对象当作一个文件访问又可以视为一个目录给苛刻的用户带来无限自由,小文件捆绑存储导致近乎0%的磁盘碎块,内置磁盘写加密和压缩功能的想法近乎疯狂,漫游(wandering)日志法的运用从此不再写两次,支持无数个CPU,支持插件,通过刷新分配 (allocate-on-flush) 实现磁盘布局动态优化,……
实验:
1).      生成一个100M文件:dd if=/dev/zero of=/tmp/hda bs=1024 count=100000;
2).      与回环设备建立链接:losetup /dev/loop0 /tmp/hda;
3).      创建文件系统:mkreiserfs –l TestingReiserFs /dev/loop0;
4).      查看超级块内容:reiserfstune /dev/loop0;
5).      查看物理布局:od –t x2 /dev/loop0 | more;
6).      生成一个10M文件:dd if=/dev/zero of=/tmp/hdb bs=1024 count=10000;
7).      与回环设备建立联系:losetup /dev/loop1 /tmp/hdb;
8).      创建文件系统:mkreiserfs –l TestingReiserFs –j /dev/loop1 /dev/loop0;
9).      查看超级块内容:reiserfstune /dev/loop1 /dev/loop0;
10).   清除现场:losetup –d /dev/loop0;losetup –d /dev/loop1;rm –f /tmp/hd[a,b];
 
3          特征
3.1              特性比较表
特性
Ext2
Ext3
ReiserFS(不受oracle支持)
分区大小
60KB~4TB
1MB~32TB
33MB~16TB
文件大小
0~4GB
0~2TB
0~8TB
块大小
1KB~4KB
1KB~4KB
512b~8KB
文件名长度
255
255
255
支持超大型目录
×
×
(百万以上)
日志功能
×
ACL支持
稳定性
优秀
一般
一般
undelete功能
×
windows兼容性
×
×
修复速度
非常快
磁盘配额
×
支持不可变文件
×
注:Kernel 2.6开始增加了ACL支持,当用mount设备时如果加参数-o acl则开启相应文件系统的ACL支持,例如mount –t reiserfs –o acl /dev/sda2 /mnt。在Linux系统上能使用ACLs是许多linux管理员期盼已久的。
3.2        综合评价
Ext2linux上使用已经有很长的历史了,市面上已经出现了针对 Windows Mac OS X ext2驱动器,允许您直接从这些操作系统中读取和写入 ext2文件系统,这使它成为了共享设备(如移动硬盘)极好的格式。另外Ext2积累了可观的人气,与ext3ReiserFS相比尽管存在更多的不足,但毕竟成了许多it人士的习惯,而且正在许多机器上跑着,尽管跑得有点艰难,想让其在短时间内从我们眼中消失是不可能的,这一点还真有点类似windows桌面!有人说ext3ext2的唯一区别就是前者在后者的基础上增加了日志功能,这话有点偏激。Ext3的日志模式有三种,在mount时指定,journal模式日志功能同时作用于数据和元数据,写操作有点令人难以忍受(如果再在其上跑大型数据库,我敢肯定那一定是一个蹩脚的系统管理员干的^O^),ordered模式只对文件系统元数据的变化记录日志(数据先写入磁盘,然后元数据写入日志),它只对文件系统的完整性负责,而不顾用户数据,在这种模式下跑数据库效果不错,由数据库负责数据的完整性,双方各司其责,配合完美,writeback模式不能保证数据先于元数据写入磁盘,因此可能存在元数据已经更新但数据没有更新的情况,传言这是三种模式中最快的。
先进的日志机制、几乎0%的磁盘碎片、支持海量存储和无限CPU、轻松管理上亿的文件、光速小文件访问速度,快速的自修复功能,启动X Windowext2/330%以上,……,这就是目前ReiserFS 3.6给人留下的深刻影响。刚刚发布的ReiserFS 4更是绝,Benchmark结果几乎样样领先,ReiserFS 4加入kernel只是时间问题。据ReiserFS 4追随者感叹,你一旦使用它,想破坏文件系统也难。

 

=======================================================================

以下内容转自 http://www.linuxsir.org/main/?q=node/115

 

文件系统类型有很多,您可以在 《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.htmlFilesystemFile Size LimitFilesystem Size Limit

ext2/ext3 with 1 KiB blocksize16448 MiB (~ 16 GiB)2048 GiB (= 2 TiB)ext2/3 with 2 KiB blocksize256 GiB8192 GiB (= 8 TiB)ext2/3 with 4 KiB blocksize2048 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.52 GiB16384 GiB (= 16 TiB)ReiserFS 3.6 (as in Linux 2.4)1 EiB16384 GiB (= 16 TiB)XFS8 EiB8 EiBJFS with 512 Bytes blocksize8 EiB512 TiBJFS with 4KiB blocksize8 EiB4 PiBNFSv2 (client side)2 GiB8 EiBNFSv3 (client side)8 EiB8 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 PartitionsAn 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/data
192.168.1.4:/opt/sirnfs
                       63G   47G   17G  74% /mnt/sirnfs   注:这是挂载成功后的显示;


五、文件系统的特性;
Linux文件系统的特性决定文件的属性,比如我们通过chattr +i 来避免某个文件被改动,通过chattr+i 来改其为只读文件,在ext2和ext3下是可以的,但在reiserfs 这样做是不能起任何作用的;不同的文件系统有不同的特性,这种特性往往决定着在文件系统文件和目录的属性,这也是我为何本文的主要原因;通过本文,我能引出在Linux中文件和目录属性的的操作;每个文件系统都有一系列的工具,包括创建、修复、备份等,值得一说的是大多文件系统都有修复工具,在您的文件系统极为正常的情况下,最好不要用修复工具来检测和修复;比如最好不要用运行fsck工具,这个工具可能会使您的系统被破坏;请参考:《Linux 创建文件系统及挂载文件系统流程详解》

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击