新闻资讯
看你所看,想你所想

UNIX档案系统

UNIX档案系统

UNIX档案系统

Unix档案系统是对存储设备上的数据和元数据进行组织的机制。UNIX档案系统是UNIX系统的心脏部分,提供了层次结构的目录和档案。

基本介绍

  • 中文名:UNIX档案系统
  • 外文名:UNIX file system
  • 学科:计算机套用
  • 套用:Unix/Linux系统
  • 物理结构:索引档案结构
  • 目录结构:採用多级树型目录结构

软体介绍

Unix系统的产生和流行推动了作业系统的革命,它的设计思想和在发展过程中积累的丰富经验及教训仍可为人们借鉴。档案系统负责系统内档案信息的管理,在整个系统中起着至关重要的作用,档案系统是Unix成功的关键。Unix系统採用树形档案结构、核心与外核的结合、设备与档案一样的管理机制和使用方法等技术和措施,使得Unix档案系统成为当代非常优秀的系统。

管理结构

Unix档案系统是通过“磁碟索引i节点”、“目录项”来进行管理的,在档案被打开或被引用后还需要“记忆体索引i节点”、“用户档案描述表”、“档案表”。档案系统磁碟结构如图。管理块主要管理磁碟结构中各部分区域的大小及资源(i节点,磁碟块)的使用情况与管理方式。i节点区用于存放该档案系统全部磁碟i节点结构,磁碟索引节点包含档案的重要信息如下:档案所有者标识符;档案类型;档案存取许可权;档案联结数目;档案存取时间;档案长度;档案地址索引表。
UNIX档案系统
Unix的每个目录项只存放档案名称和i节点号,共16个位元组,而档案中除名字以外的信息都存放到i节点中,优点是系统各级目录的规模大大减少。在Unix档案系统中,为了提高系统效率,减少记忆体空间的占用,当打开一个档案时,只是将与该档案相联繫的目录项和磁碟i节点拷贝到主存中,为了对打开的档案进行管理,因此又设定了打开档案管理机构,它又由下列三部分组成:
1、活动i节点(记忆体i节点)。作用是反映档案当前活动的情况,因此它添加了一些项目:记忆体索引节点状态、设备号、索引节点号、记忆体索引节点的访问计数。
2、打开档案表。i节点中只包含有档案的静态信息,但当一个档案被同一进程或不同进程、用同一或不同路径名、相同的或互异操作同时打开时,仅靠i节点就不能满足要求,因此,打开档案表记录了打开档案所需的一些附加信息:读写状态、引用计数、指向记忆体索引点的指针、读/写位置指针。
3、用户档案描述符表。每个用户进程有一个用户档案描述符表,每一个表项就是一个指针,并指向打开档案表的一个表项,这个表的作用就是保证每个进程能够打开多个档案,或者对同一个档案以不同形式操作打开。假定一个进程执行下列代码:
fd1= open(”/etc/pad”,O- RDONLY);
fd1= open(”/etc/pad”,O- RDWD);
则这三个表的作用和关係如图所示。
UNIX档案系统

物理结构

Unix档案系统採用的是索引档案结构,在索引节点中建立有13个地址项,如图。
UNIX档案系统
对于长度不超过10个物理块的小型档案,可直接找到该档案所在的盘块号;对于中、大型档案採用一次或两次间接定址;对超大型档案採用三次间接定址。索引节点的优点是:索引节点占用的空间小,对小档案的索引速度快,同时又允许组织大型和超大型档案。档案最多可占用的物理块数可达到10+ 256+256^2+ 256^3个。
Unix的统计数据表明,80%为小档案,20%为大档案(其中1%为超大档案),这组数据就更加说明了Unix档案系统设计的精妙和科学。为了提高磁碟空间的利用率,允许档案在磁碟上不连续存放,且其定址方式最多可达到三次。它的缺点是造成访问档案的寻道时间延长和多次访问磁碟。在非实时场合是可行的,但在实时场合,它的这一缺点就很突出。例如:假设磁碟的平均寻道时间为15ms,每个磁碟块的大小为512位元组,某档案大小为3kB,如果连续存放,寻道时间只需15ms;如果不连续存放,它要占用6个分散的磁碟块,可能位于不同的磁轨,因此寻道时间需90ms,比连续存放多浪费75ms。

空闲磁碟块

Unix档案系统通过管理块来实现空闲块管理。管理块的数据结构如下:
struct filsys{        int s- isize; /*i节点区总块数*/       int s- fsize; /*档案卷总块数*/      int s- nfree; /*直接管理的空闲块数*/       int s- free[100] ; /*空闲块号栈*/       int s- ninode; /*直接管理的空闲i节点数*/       int s- inode[100] ;/*空闲i节点号栈*/… …} 
空闲块的管理方法是:将空闲块从后向前,若干个空闲块(如100个)分为一组(最后一组为99块),每组最后一块作为索引表,用来登记下一组100的物理块号和块数,最前的一组物理块号和块数存放在管理块的s_free[100]和s_nfree中。这种对空闲块先分组,再把组与组进行连结的管理方法称为组连结法。对空闲块的分配和释放类似于栈,使用后进先出算法。但其管理机构分为两级,一级常驻记忆体(管理块的s-nfree和s-free[]),另一级则驻在各组的第一个盘块上。其优点是常驻记忆体的只有一个组,而不是将所有组的空闲表都调入记忆体,这样就大大的节省了记忆体空间,同时软体开销也小。缺点是可能导致物理块的利用率不均匀。例如:假设当前的s-nfree= 80,此时某进程释放一个档案块,其占用的物理块号为300,系统回收它后,s-nfree= 81,s-free[81]= 300。接着某用户又申请物理空间,档案系统总是从索引表中取最后一项的值,即s-free[81]出栈,将300号物理块又立即分配使用。可以想像,300号块还会面临再释放,再分配的可能。300号块多次被使用,而其它空闲块却未被分配使用,即有些物理块可能长期被使用,而有些物理块可能长期得不到使用,因此对外存储器的使用寿命不利。

结构和共享

Unix的档案系统採用多级树型目录结构,其优点是有效的解决了档案重名问题,又可以很方便地实现档案共享。基本档案系统和子档案系统是可安装和可拆卸的,但在多用户环境下,多用户间共享数据同样感到不方便,绝对路径名是档案的唯一符号名,用户难以用另外符号名使用已分享档案,因此Uinx档案又提供了如下两种连结机制。
1、硬连结技术。如果想为档案1.c建立一个硬连结2.c,则只需将2.c的目录项指针指到档案1.c的i节点,同时将i节点连结数加1即可。这样用户似乎是增加了一个物理拷贝,可实际却只有一个档案实体,当删除连结时,只要删除一个目录项和将连结数减1。
2、符号连结技术。如果想为usr/sxk/1.c建立一个符合连结2.c,则Unix通过read link读出档案内容,即找到原档案路径名,再通过原档案路径名去打开档案。符号连结相当于给档案增加了一个别名。也可为目录建立符号连结,并且可以跨档案系统。Unix档案连结的优点是用很小的开销为多用户已分享档案提供了有效方式,且能快速定位档案和目录;缺点是对多用户使用档案不能加以并发控制,易造成数据的不一致性。硬连结只适用于普通档案,而不适用于目录档案和不同档案系统。

安全性

Unix是多用户作业系统,且它的各种外围设备都由相应的档案表示,因此安全性就很重要,它的安全主要通过磁碟i节点的许可权设定来实现,每个Unix档案和Unix目录,都有3个允许的比特位设定,分别定义档案所有者、分组和其他人的使用许可权,如:允许读、允许写、允许执行、允许SUID、允许SGID等,系统对档案保护的支持是比较充分的,只要正确设定档案和目录的许可权,档案安全是有保障的。但需要注意的是,许可权为SGID和SUID的执行档。SGID(SUID)中的S指set,程式在运行时,其进程的EUID(Effective UserID)或EGID(Effective Group ID)会被设成档案拥有者的UID、GID,从而进程也具有了Owner或OwnerGroup的许可权。因此,如果使用不当,SGID和SUID程式会给系统安全性带来极大的危害。另外,在Unix系统中还应当留意设备档案,谨防它成为不安全的后门。例如,如果某个用户拥有/dev/lmem的读写许可权,他就可以使用debugger(或其它程式)修改优先权或其它属性,也可以读取系统缓冲区的数据。Unix中的日誌档案能够记录作业系统的使用状况,通过分析日誌档案可以发现攻击迹象。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com