8
2
2014
2

Linux文件系统,为什么设计group

前言:

linux内核是一个很伟大的东西。。。(好吧~我居然用“伟大”来形容了linux内核),不过说实话,内核代码绝对是c语言中经典的经典。里面的一些设计思想都值得反复推敲、琢磨(虽然我还看不大懂,在啃过程中)。。按照我导师的话来说:写linux内核的那帮人绝对是顶级聪明的人。

看聪明人的作品,熏陶 熏陶自己。

我们今天关注问题如下:why linux的文件系统设计group这个概念。有什么好处呢?linux文件系统已经够复杂了,为什么还要加上group这个管理单元?

那天导师问这问题时,我硬是没怎么反应过来,说了几个答案,但都没说到点上,这儿我总结一下:

面对问题的思考方法:

从多角度思考这个问题:

从用户角度:方便用户容量的扩充或减少

    很明显,有了group这个概念,我们的元数据区、数据区可以一个版块一个版块地管理,如果用户容量扩充,只需要在现有group后增加几个group,然后修改super block,GDT(块组描述符)等就可以了。减小容量也是如此;试想一下如下没有group这个概念,若要扩容,则inode bitmap,data bitmap,inode table所占的空间都要变大,那么整个数据区都要向后迁移,代价太大。

从计算机性能角度:一次IO能抓取所需元数据,提高访问速度

    首先我们要知道,在默认的配置中,一个group单元中的block bitmap的个数为32768,这个在格式化磁盘时,可以在输出信息上看到信息:32768 blocks per group。所以说block bitmap所需要的占用的存储空间大小刚好为1个block大小,即4k,所以说在一次IO读操作,我就可以把当前访问数据的bitmap区域的元数据一次性缓存,由于与访问的局部性,一段时间访问的数据很大概率都是位于这个block的,所以需要多次访问元数据,而这些元数据系统都cache住了,故性能得到很好地提高。

     上面说的是block bitmap为4k,默认一个group中inode bitmap为1k。也是可以一次IO都缓存下的。而且data区域4k*8*4k= 128M,这个大小都是一次调入Mem可以缓存下的。所以极大提高了cache命中率,也就提高了访问速率。

     其实上述的解释都可以类比于一个概念:对齐。在计算机系统结构中,一定要建立一个对齐的概念,对齐的概念我通过两个例子稍微解释。

例1:一个数据结构如果放在未对齐的内存中,则会引起两次访存操作。

例2:放在磁盘上一个4k的文件,如果跨了两个block,那么要进行两次访问disk的操作,效率大打折扣。

所以说计算机系统结构中,对齐是效率的一个关键点所在。

从磁盘寿命的角度:写均匀,延长寿命

元数据、数据写的区域因为布局方式的因素,因而把写均匀到了磁盘的各个区域。个人感觉有一定的延长寿命作用。

 

关于group概念还能带来什么好处,欢迎留言!

 

补充:

这里对group概念稍做介绍,文件系统结构图如下:

 

文件系统是以分区为单位的,所以说一个分区上的所有group的文件系统类型都相同。

整个分区group的inode是连续编号的,给定一个inode编号,可以通过取模、取余的方式可以知道该inode为那个group上的第几个inode。inode编号从1开始,故所在块组bg=inode_num -1)/ ext4_super_block.s_inodes_per_group 

所在 块组的index

index=(inode_num -1) % ext4_super_block.s_inodes_per_group 

Category: Linux | Tags: 文件系统 group | Read Count: 3262
Avatar_small
AP 10th computer Mod 说:
2022年9月11日 01:41

Since the Government of AP also provided Computer labs for students in all Government schools also.Computer Knowledge is very much essential nowadays. Even Checking the Results of various examinations, AP 10th computer Model Paper Downloading hall tickets and study materials for multiple exams and booking tickets etc ..need minimum Technical Knowledge is much more important for everyone. Since the Government of AP also provided Computer labs for students in all Government schools also.

Avatar_small
Alyssa 说:
2022年12月21日 21:19

There are many reasons to design a file system around groups. First, it allows for more flexible file permissions. For example, you can have a group for all the users who should have read access to a certain file, and another group for all the users who should have write access. Second, it makes it easy to add and remove users from groups. You can simply add or remove a user from a group, without having CBD Gummies to change the permissions on the file itself. Finally, it helps to keep the file system organized. For example, you can have a group for all the users who should have access to a certain directory, and another group for all the users who should have access to all the files in that directory.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com