Linux文件系统的演变

Linux文件系统的演变,第1张

说起文件系统的演变与发展,不得不从最早期的 Minix *** 作系统开始说起。

Minix(MINI-UNIX) 是早期的一个迷你版本的 「类UNIX *** 作系统」 ,由荷兰阿姆斯特丹自由大学计算机科学系的塔能鲍姆教授自行开发的可以与UNIX *** 作系统兼容的一个 *** 作系统,因其小型,该 *** 作系统被命名为 MINIX 。

MINIX 系统在设计之初,采用程序模块化的思想,将一众程序放在用户空间运行,而不是在 *** 作系统的内核中运行。如 「文件系统」 「存储器管理」 等程序均是如此。

受 MINIX *** 作系统的影响,早期的Linux *** 作系统也曾采用由塔能鲍姆教授开发的MINIX的文件系统

然而,不只因为早期的 MINIX *** 作系统并为真正意义上的开源软件(在保护著作的前提下进行收费),而且基于 MINIX 的内部使用16位的偏移量,使文件系统能够支持的最大空间只有64MB,支持的最大文件名为14字符,导致后来 Linux *** 作系统转而开发出了 ext(Extended File System) 第一代可扩展文件系统。

ext(Extended File System) 为Linux系统最早的扩展文件系统,采用 「UNIX文件系统」 的元数据结构,克服了 「MINIX」 *** 作系统性能不佳的问题。

ext 文件系统采用 虚拟文件系统(VFS) ,最大可支持2GB的文件系统。与 MINIX 文件系统不同的是, ext 可以使用最高2GB的存储空间并同时处理255个字符的文件名。

但,在 ext 文件系统中,文件创建时生成的 inode 信息是不变的,这导致文件发生修改后 inode 中储存的文件时间戳并不会发生变化;而且 ext 并不会为文件妥善分配空间,磁盘上的多个文件四散分布,严重制约了文件系统的性能。

ext 文件系统推出后不久,其开发者便意识到 ext 文件系统中存在很大缺陷( inode不变性 和 文件空间碎片化 ),并在一年后推出了 ext2 (Second Extened File System) 第二代扩展文件系统,用来代替 ext 文件系统。

ext2 吸取了 「UNIX文件系统」 的众多优点,并且因其良好的可扩展性( 为系统在磁盘上存储的数据结构预留了很多空间提供给开发者使用 ),在20世纪90年代众多文件系统中脱颖而出。

众多新的特性, POSIX(可移植 *** 作系统接口) 、 访问控制表 等都是在这一代扩展文件系统上实现的。直至今天, POSIX 仍被众多 *** 作系统所沿用。

不仅如此, ext2 还在 ext 的基础上进行了完善,能够最大支持的单个文件达到 2TB。

ext2 文件系统与20世纪90年代的众多文件系统一样,将数据写入到磁盘的过程中如果发生系统奔溃或断电,极容易导致文件损坏或丢失。

正是因为类似 ext2 等同时期的一众文件系统,在遭遇系统奔溃或断电时会出现文件损坏或丢失。尽管 ext2 文件系统拥有开机后对文件系统中文件的一致性校验,但校验的过程极为耗时,且校验的过程中, *** 作系统上的任何卷组都是不可访问的。

然而 ext2 遗留的问题在 ext3(Third Extended File System) 中得到了解决。

ext3 文件系统采用日志记录的方式,记录下了 *** 作系统运行中的所有事件,这意味着即便遇到 *** 作系统非正常关机后也无须对文件系统进行校验,从而防止了文件系统中数据丢失的可能。

尽管 ext3 使用日志系统进行记录文件系统的变化,但这并没有影响 ext3 文件系统处理数据的速度。基于日志系统在磁盘上的优化,在 ext3 中数据的传输效率是高于 ext2 的,并且可以通过重新设置日志的级别来提升文件系统的性能。

其次, ext3 在设计之初就吸收了 ext2 的很多思想,这使得 ext2 文件系统迁移到 ext3 变得极为便利。事实上, ext3 可以在从 ext2 迁移 ext3 的过程中,无须进行文件系统资料的备份,且无须担心升级后的数据恢复问题。

也正是因为 ext3 设计之初沿用了众多 ext2 的功能,这使得 ext3 缺乏变通。例如, 「inode的动态分配」 「可变块大小」 等问题并没有得到解决。不仅如此, ext3 文件系统在被挂载为写入时,无法对文件系统进行完整性校验。

第四代扩展文件系统( Fourth Extended File System, ext4 ) 是继 ext3 文件系统的后续版本,不仅支持 ext3 的日志文件体系 ,同样支持 大文件系统 ,不仅提高了文件系统对于存储碎片化的抵抗,而且改进了 inode固一化 的问题。

同时, ext4 文件系统在开发之初就考虑到很多问题,对众多问题的优化和改进也使得 ext4 拥有了众多新的特性。例如, 大文件系统 、 使用Extent文件存储的方式 、 预分配空间 、 延迟文件获取空间的时间 、 突破原有子目录限制 、 增加日志校验和 、 在线整理磁盘 、 文件系统快速检查 、 向下兼容其他ext文件系统`。

时至今天, ext4 文件系统已经成为Linux发行版默认使用的文件系统。

与 ext2 文件系统同一时期出现的,还有 xfs 文件系统。 xfs 文件系统是高性能的文件系统,最早在 IRIX *** 作系统上开发,后期被移植到 Linux *** 作系统上。现在所有的 Linux发行版 都支持 xfs 的使用。

相比 32位 Linux 的 *** 作系统来说,64位 xfs 的文件系统能够支持的单个文件系统要远远超出 32位 *** 作系统。

xfs 对文件系统元数据提供了日志支持,当文件系统发生变化后,总是会保证源数据在数据块写入磁盘之前被写入日志中,磁盘中有一处缓冲区专门用来存放日志,从而不会影响正常的文件系统。

xfs 同样支持 「条带化分配」 。在条带化RAID阵列上创建 xfs 文件系统时,可以指定 条带化数据单元。通过配置条带化单元,使 数据分配、inode分配、日志等与RAID条带单元对齐,来提高文件系统的性能。

与 ext4 文件系统不同的是, xfs 文件系统还支持在线恢复。 xfs 文件系统提供了 xfsdump 和 xfsrestore 工具协助备份 xfs 文件系统中的数据。

以下为各文件系统的出现时间及特性:

参考自: https://zh.wikipedia.org/wiki/Ext4

摘要:unix的历史

任何一门知识都是先研究它的历史开始的,因为任何一门知识都不是一下子出现和成熟起来的,研究过去,是为了更了解现在。对于unix更是如此,如果不知道它的历史,就会对现在五花八门的unix搅得眼花缭乱,看过很多关于unix历史的介绍,能真正讲明白的不多,因为it世界本来就变化的快,有的来不及进入历史就消失了。但这一篇讲unix历史的文章,读来一点也不枯燥,也不会把你搞蒙,甚至还很有趣,如果你也想知道现在许多种unix的来历(不至于老像个新手),那么还是看看吧!

1960年代末期,Bell Telephone Laboratories, General Electric 和

Massachusetts Institude of Technlogy合作研发一个多使用者的作

业系统, Multics.此计划於1969年三月取消. 取消后的故事大家有点

熟,又有点不熟,这里把key part点出来:

* Ken Thompson在DEC PDP-7上写了个叫Space Travel的电玩.

* PDP-7欠缺程式发展环境,so, Ken Thompson + Dennis Ritchie写了UNIX出来.

* Ken Thompson写了B语言(由BCPL演化而来的直译语言)

* Dennis Ritchie把B改成了著名的C语言.

* 1973年11月Unix version 4,使用C语言改写而成.

Unix的第一篇Paper "The UNIX Time Sharing System"由Ken Thompson和Dennis

Ritchie

提出,在1973年十月the ACM Symposium on OS (SOSP)中提出来.而在次年七月的

the Communications of the ACM发表.这是UNIX与外界的第一次接触.

UNIX免费流传的原因

1956年AT&T受到反托拉斯法调查.调查期间AT&T与联邦政府签订了一个协议,

不能经营与电话电报无关之业务.BTL隶属於AT&T.

UNIX在SOSP发表后,学术界对UNIX及其原始码索求不断,所以AT&T便免费的

提供原始码给学术界,此举造成了UNIX的广泛流传.

Berkeley的Computer Science Research Group, CSRG对UNIX的发展做了很多的贡献.

Berkeley的UNIX称为BSD UNIX. BSD对UNIX的贡献有virtual memory, TCP/IP, Fast

File System(FFS), reliable signals, socket介面.

4.4BSD把原来的VM换成Mach的VM,并引进了Logged File System. (LFS).

CSRG做完BSD4.4之后就关门大吉了.原因有:

* 补助的不足

* BSD的特色已经可以在商业系统上见到了(所以不用DIY了)

* 系统已经大到不是一个小组可以维护的程度了

有一家公司Berkeley Software Design, Inc.(BSDI)成立来继续行销4.4BSD,

从事商业行为.他们的BSD叫做BSD/386. BSDI宣称BSD/386经过了Berkeley

的改写,已经没有AT&T的原始码了.不过AT&T还是对Berkeley和BSDI提出告诉.

导火线是BSDI的电话: 1-800-ITS-UNIX.此一诉讼延后了4.4BSD的发表.

终於1994年二月四日,双方达成和解,撤销告诉. BSDI发表了不含AT&T宣称

的原始码的4.4BSD原始码,称为4.4BSD-Lite. 接下来的故事就是在网路上

的传奇,你可以在386BSD的讨论区看到.

UNIX System #

反拖拉司法调查结束后将AT&T拆成数个子公司, BTL改名为AT&T Bell Laboratories.

并且AT&T被允许进入电脑市场. AT&T发表的商业版UNIX计有System III,

System V, System V Release 2 (SVR2) System V Release 3, System V Release

4/4.2

System V引进了许多新的特色(相对於旧的UNIX),如regions架构的虚拟记忆体(和

BSD的不太相同), IPC, remote file sharing, shared libraries,

STREAMS架构等等.

UNIX的商业化

商业化的UNIX也为UNIX争添不少特色,如SunOS的Network File System (NFS),

vnode/vfs interface支援多重档案系统,一个新的VM架构(为SVR4所采用)

AIX是第一个支援journaling file system的商业UNIX. ULTRIX (DEC的旧UNIX)

是支援multiprocessor UNIX的先趋之一.

Mach

Mach是Carnegie-Mellon大学(CMU)的microkernel(微核心)作业系统.(1980年代)

随著功能越来越多,UNIX也日渐庞大复杂而难以掌握, microkernel的概念就是

把Kernel去芜存菁,仅留下重要的部分,其馀的功能都用user阶层的程式(称作

server)来达成就好了,藉此减低kernel的复杂度.

Mach设计目标有

* 与UNIX相容

* 在单处理器,多处理器上都能执行

* 适合分散式运算环境

最普遍的版本是Mach2.5,是许多商业UNIX如DEC OSF/1, NextStep的基础.

Mach3.0才是真正纯粹的完全Microkernel化版本.

标准何在

UNIX的标准就像他的版本一样多.本小节仔细的介绍了各个标准与其命运.

讨论到最新的资讯为Novell将UNIX商标卖给了X/Open,以及Sun Solaris 2.5版.

1986年IEEE指定了一个委员会制定了一个一个开放作业系统的标准,称为

POSIX (Portable Operating Systems Interface,最后加上个X,为了好听,也是因为

本质上是UNIX的标准).<-这是我听说的,不是书上写的.

X/Open是一个由国际性电脑厂商组成的机构,成立於1984.其目的比较务实,

不是为众多的UNIX标准再添加一个.而是把重心放在汇集现有的标准,

整理出一个共通的环境.XPG (X/Open Portability Guide)就是他的大作.

目前UNIX这个商标应该是由X/Open所拥有.

除了标准以外,UNIX厂商也有合纵联盟.

UI, Unix International,是AT&T和Sun为主的联盟.主要的产物有SVR4和OpenLook.

OSF, Open Software Foundation为以IBM,DEC,HP为首的公司投资的子公司.

OSF对UNIX的贡献有Motif标准,DCE (Distributed Computing Environment).

在NT出来搅局后,UI瓦解了,AT&T不要UNIX了(专心於他的plan9作业系统?),

SVR4的传人变成了Sun的Solaris,不过Sun也不再坚持OpenLook,同时支援CDE

(Common Desktop Environment,讲白话一点就是Motif).

Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)

的 *** 作系统(OS),在原代码级上兼容绝大部分Unix标准(指的是IEEE

POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性

较好的功能

强大而稳定的 *** 作系统.它可以运行在x86 PC,Sun Sparc,Digital Alpha

,680x0,PowerPC, MIPS等平台上,可

以说Linux是目前运行硬件平台最多的 *** 作系统. Linux最大的特点在于

它是GNU(Gnu's Not Unix----有点分形与混沌的意味----无限自包含,

简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承

"自由的思想,开放的源码"的原则,成千上万的专家/爱好者通过Internet

在不断地完善并维护它,可以说Linux是计算机爱好者自己的 *** 作系统.

追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大

学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理

多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小

的Unix *** 作系统,主要用于 *** 作系统教学)得到灵感,进一步产生了

自认为狂妄的想法----写一个比Minix更好的Minix,于是开始写了

一些硬件的设备驱动程序,一个小的文件系统,......,这样0.0.1

版本的Linux就出来了,但是它只具有 *** 作系统内核的勉强的雏形,

甚至不能运行,你必须在有Minix的机器上编译以后才能玩.这时候

Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10

月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash

(the GNU Bourne Again Shell----一种用户与 *** 作系统内核通讯的软件)

和gcc(GNU C 编译器).从一开始,Linus就决定自由扩散Linux,包括原代码,

他在comp.os.minix新闻讨论组里发布Linux 0.0.2时写到:

"Do you pine for nice days of Minix-1.1, when mem were men

and wrote their own device drivers? Are you without a nice

project and just dying to cut your teeth on a OS you can

try to modify for your needs? Are you finding it frustrsting

when everything works on Minix? No more all-nighters to

get a nifty program working? Then this post might be just

for you.

"As I mentioned a month ago, I'm working on a free version

of a Minix-lookalike for AT-386 computers. It has finally

reached the stage where it's even usable(though may not be

depending on what you want),and I am willing to put out

the sources for wider distribution. It is just version

0.0.2 ... but I've successfully run bash,gcc,gnu-make,

gnu-sed,compress,etc.under it."

随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的

内核开发,Linux倾向于成为一个黑客的系统----直到今天,在Linux社区

里内核的开发被认为是真正的编程.由于一批高水平黑客的加入,使Linux

发展迅猛,到1993年底94年初,Linux 1.0终于诞生了! Linux 1.0已经是一

个功能完备的 *** 作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,

在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,

不过自从2.1.xx系列的内核Linux开始走高端的路子----硬件的发展太快了,

但是Linux不会失去它的本色.Linux具有良好的兼容性和可移植性,大约在

1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU---Digital

Alpha(至少目前主频是最高的).所以不要总把Linux与低档硬件平台联系

到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥

出来而已,Linux必将从低端应用横扫到高端应用!

在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共

版权许可证(GPL).此举大大加强了GNU和Linux,几乎所有应用的GNU

库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一

个根基,我现在也搞不清楚到底是GNU Linux呢还是基于Linux的GNU.

:-) 更重要的是遵循公共版权许可证,在继承自由软件的精神的前

提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形

式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发

商业软件.从此Linux又开始了一次飞跃,出现了很多的Linux发行版

,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且

还在增加,注意你不能说"Redhat Linux""Suse Linux""Slackware

Linux"等等,Linux主要指 *** 作系统内核,对所有发行版内核原代码

都是一样的(但集成的内核版本可能因发行时间不同而有所不同).

还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移

植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix

,Sysbase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的

加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计

算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希

望所在!!

Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十

分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等.

随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,

如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统.

.....常有新手问Linux能做什么,其实它不象那些中看不中用的 *** 作

系统,不在于你用它能干什么,而在于你想干什么!

Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,

又如自由软件的精神......

.

unix是祖宗。但是要收费的。

linux是参照unix重新写的免费 *** 作系统,是类unix系统,是unix的一个近亲分支。

mac也是从unix里面演化出来的另一个走的更远的一个分支,对图形等的支持特别好,一个创新型的 *** 作系统。

windows早就出来了,但是直到windows3.0之前,都不能跟现在的windows有太大的关联。3.0是一次革命,是微软崛起的标志。

从桌面上抄袭来看的话,windows抄mac linux 抄windows等.反正他们之间的关系复杂着呢。

还有某个白痴说linux是国产,纯凑热闹。国产的红旗除了把桌面改了和 windows桌面一模一样外,几乎所有的代码都是从国家拷贝来的。中国对linux的贡献接近于零。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7228204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存