好文分享:EXT文件体系机制道理详解
留意,在第(5)步之前,因为data block还未被标志为未行使,在superblock中如故以为这些data block是正在行使中的。这暗示尽量文件已经被删除了,但空间却还没有开释,df也会将其统计到已用空间中(df是读取superblock中的数据块数目,并计较转换为空间巨细)。 什么时辰会产生这种环境呢?当一个历程正在引用文件时将该文件删除,就会呈现文件已删除但空间未开释的环境。这时步调已经举办到(4),外界无法再找到该文件,但因为历程在加载该文件时已经获取到了该文件全部的data block指针,该历程可以获取到该文件的全部数据,但却暂且不会开释该文件空间。直到该历程竣事,文件体系才将未执行的步调(5)继承完成。这也是为什么偶然辰du的统计功效比df小的缘故起因,关于du和df统计功效的不同,具体内容见:具体说明du和df的统计功效为什么纷歧样。
同目次内重定名文件的举措仅仅只是修改地址目次data block中该文件记录的文件名部门,不是删除再重建的进程。 假如重定名时有文件名斗嘴(该目次内已经存在该文件名),则提醒是否包围。包围的进程是包围目次data block中斗嘴文件的记录。譬喻/tmp/下有a.txt和a.log,若将a.txt重定名为a.log,则提醒包围,若选择包围,则/tmp的data block中关于a.log的记录被包围,此时它的指针是指向a.txt的inode。
同文件体系下移动文件现实上是修改方针文件地址目次的data block,向个中添加一行指向inode table中待移动文件的inode指针,假如方针路径下有同名文件,则会提醒是否包围,现实上是包围目次data block中斗嘴文件的记录,因为同名文件的inode记录指针被包围,以是无法再找到该文件的data block,也就是说该文件被标志为删除(假如多个硬链接数,则另当别论)。 以是在同文件体系内移动文件相等快,仅仅在地址目次data block中添加或包围了一笔记录罢了。也因此,移动文件时,文件的inode号是不会改变的。 对付差异文件体系内的移动,相等于先复制再删除的举措。见后文。 ![]() 关于文件移动,在Linux情形下有一个很是经典网上却又没任何表明的题目:/tmp/a/a能包围为/tmp/a吗?谜底是不能,但windows能。为什么不能?见mv的一个经典题目(mv的本质)。 6.3 存储和复制文件
7 多文件体系关联在单个文件体系中的文件操纵和多文件体系中的操纵有所差异。本文将对此做出很是具体的声名。 7.1 根文件体系的非凡性 这里要明晰的是,任何一个文件体系要在Linux上能正常行使,必需挂载在某个已经挂载好的文件体系中的某个目次下,譬喻/dev/cdrom挂载在/mnt上,/mnt目次自己是在"/"文件体系下的。并且恣意文件体系的一级挂载点必需是在根文件体系的某个目次下,由于只有"/"是自引用的。这里要声名挂载点的级别和自引用的观念。 若是/dev/sdb1挂载在/mydata上,/dev/cdrom挂载在/mydata/cdrom上,那么/mydata就是一级挂载点,此时/mydata已经是文件体系/dev/sdb1的进口了,而/dev/cdrom所挂载的目次/mydata/cdrom是文件体系/dev/sdb1中的某个目次,那么/mydata/cdrom就是二级挂载点。一级挂载点必需在根文件体系下,以是可简述为:文件体系2挂载在文件体系1中的某个目次下,而文件体系1又挂载在根文件体系中的某个目次下。 再表明自引用。起主要说的是,自引用的只能是文件体系,而文件体系示意情势是一个目次,以是自引用是指该目次的data block中,"."和".."的记录中的inode指针都指向inode table中统一个inode记录,以是它们inode号是沟通的,即互为硬链接。而根文件体系是独一可以自引用的文件体系。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |