1.linux系统可以支持很多中文件系统,例如ext2、ext3、ext4、NFS、ReiserFS以及FAT等等。其实,整个linux系统都是通过一个名为Virtual Filesystem Switch(虚拟文件系统,简写为VFS)的内核功能去管理和操作各个具体的文件系统。其中VFS在linux系统中的结构如下图:
2.ext2文件系统的示意图
Remarks:
a)Ext2文件系统将文件分成两部分数据,分别放在不同的块中。其中权限(rwx)与属性(所有者、用户组等信息)放置到inode中,实际数据放置到data block中,所以形成了inode/data block/super block的大致结构;
b)inode——记录文件的属性和权限,同时记录此文件的数据所对应的data block号码
data block——文件的实际数据
super block——记录每个块组系统(inode/data block/super block)的整体信息,例如inode/data block的总量、使用量以及剩余量等等
c)为了方便管理,在Ext2文件系统被格式化时,被分成多个块组(Block Group),每个块组都有一个独立的inode/data block/super block系统;
3.cp和mv对inode/data block的影响
(1)cp会对新增inode和data block
(2)如果mv的源文件和目标文件所在的文件系统相同,那么mv动作会沿用已有的inode和data block,不会新增inode和data block。如果mv的源文件和目标文件所在的文件系统不相同,那么mv动作就相当于cp+rm了
4.关于目录文件对应的inode/data block的一点闲话
a) 目录文件对应的inode,记录的是该目录的相关权限和属性等等,并记录了目录对应的data block号码;
b)目录文件对应的data block记录的是,在这个目录下的文件名与该文件占用的inode号码数据;
Remarks:
由此可以得知,某个文件的名字不是存放在文件对应的inode或者data block中,而是记录在目录文件的data block中