您的位置:首页 > 运维架构 > Linux

3.linux文件操作跟磁盘存储对应过程

2016-04-28 14:00 691 查看
由于iNode太多了,从iNode中找一个特定的条目太麻烦了,所以我们要对iNode抽象一层索引出来。计算机最快的一种查找方式就是键值对查找。
添加是怎么完成的?
当文件系统创建完成之后,会在整个元数据区域为每一个iNode创建一个位图(bitmap)区域。每一个iNode都在bitmap中占据一位。已使用的iNode,其标志位置为1,未使用的iNode,其标志位置为0。当我们需要找一个空闲的iNode时,只需要扫描一下bitmap。同理数据区也是用bitmap来管理block。前者称为节点位图,后者称为块位图。
有了bitmap就大大加快了创建文件时的工作过程。

删除是怎么完成的?
删除文件时只需要在节点位图中把文件对应的iNode标记为0就可以了。
当要统计硬盘已使用空间时,扫描节点位图中iNode标志位为1的文件占多少个block,然后乘以每个block的大小。为什么删除了的文件能找回来,是因为数据在block中没有动,只是把block对应的块位图标记为0。当我们在存新的文件进来时,就把块位图标志位为0的block覆盖掉。这也就是为什么当我们删除了文件,如果添加好多新的文件进来后就不容易找回旧文件的原因。块位图标记为0后,块位图对应的iNode也要标记为0,这个iNode以后也可以被其他文件所使用了,再者,目录block中对应的条目也被删除了。
文件粉碎机的原理:生成一大堆随机数把以标志位为0的block覆盖掉。强行覆盖block。

剪切是怎么完成的?
本来文件放在/var/log/messages,把文件剪切到/var/test下,改名a.txt。
首先找到test目录,在test目录的路径映射表上建一个条目,名称叫a.txt,a.txt的iNode直接指向/var/log/messages的iNode,然后把/var/log目录上的messages条目删除掉就行了。剪切的过程就是在一个目录上把对应的条目删除,在另一个目录上创建新的条目。剪切既没有动数据也没用动iNode,只是更改的目录的条目。然而剪切到另一个分区是另一码事了。因为每一个分区都是独立。一个分区就是一个文件系统。跨分区剪切的过程是先复制再删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: