【转载】深入理解Linux文件系统
1.rm-rf删除目录里的文件后,为什么可以恢复?

首先创建一个空目录test,目录的blocksize为4096字节

为了空目录还是4096?首先,目录的大小取决它所包含的文件的inode(访问时间,文件的字节数,uid和gid),4096的大小是在建立文件系统时规划的。可以使用dumpe2fs查看

看到根分区的blocksize是默认4096
下面继续,我们在新建的test目录里创建1000个文件
|
1
|
for ((i=0; i<1000; i++)); do touch file$i; done |

由于创建了1000个新文件,所以test目录的blocksize也变大了,随即我们把test目录下的所有文件删除,再次查看test目录发现,目录里为空,但是目录本身的bocksize仍然不变,这也就是我们“数据恢复”的原理:因为rm-rf只是删除了directoryentry相关的描述符(dirfd)而datablocks,inodes和metadata仍然存在磁盘里。

可以使用stace查看我的想法,rm-rf过程中主要调用unlinkat()和fstatat64()两个systemcall

fstatat()这个systemcall作用是getfilestatusrelativetoadirectoryfiledescriptor
unlinkat()这个systemcall作用是removeadirectoryentryrelativetoadirectoryfiledescriptor
可以看出删除的过程中只是获取与目录文件描述信息有关的文件状态并且删除directoryentry对应的文件描述符(其实“目录”的内容就是一长串directoryentry的数据结构,directoryentry用来描述文件名和inode地址)因为datablocks,inodes以及inodes里存放的metadata(文件大小、所属关系等)仍然存在磁盘里,所以目录的大小在删除目录里文件后没有任何变化。
所以使用photorec恢复一下被删除的文件,轻而易举的恢复了。
2.关于使用vim编辑文件大小问题
我们创建一个文件file,vim打开输入内容“1234567”共7个字节

查看file文件的大小为8个字节
使用od查看,vim会自动补上一个字节\n换行符,所以7个字节变成8个字节

3.软连接大小问题
首先给install.log文件创建一个软连接名为install,查看软连接install的大小为11字节,为什么是11字节呢?数数原文件的文件名字节数11字节,这就对了。

4.如何删除一个文件
1.删除文件描述符(filedescriptor),由第一个问题可以知道,执行rm-rf*后其实删除的文件是可以恢复的,也就是说文件的数据还是可以被访问的,是因为datablocks,inodes以及inodes里存放的metadata都在磁盘上。
2.删除元数据(metadata),可以使用>filename,datablock里的真实数据依然存在磁盘里。
3.删除真实数据(datablock),需要产生一些随机数填充文件,然后再删除文件
顺序是ddif=/dev/randomof=filename然后rm-rffilename
这样真实数据就会被删除。更快的方法是使用设备/dev/urandom,不过虽然没有/dev/random的随机性强,但已经能满足擦除磁盘数据的目的了。
为什么使用/dev/random设备比使用/dev/zero设备更好一些呢?
两者设备都会读取之前数据记录(datatrace),使用/dev/zero会比使用/dev/random设备更容易读取到之前的数据记录(datatrace)。
【转载】深入理解Linux文件系统的更多相关文章
- 理解Linux文件系统之inode
很少转发别人的文章,但是这篇写的太好了. 理解inode 作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...
- [转]理解Linux文件系统之inode
很少转发别人的文章,但是这篇写的太好了. 理解inode 作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...
- 理解Linux文件系统之 inode
一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会 ...
- 理解Linux文件系统挂载参数noatime nodiratime
很多线上服务器为了提供文件系统IO性能,会在挂载文件系统的时候指定“noatime,nodiratime”参数,意味着当访问一个文件和目录的时候,access time都不会更新.但是如果未指定上面的 ...
- [转载] 深入理解Linux修改hostname
原文: http://www.cnblogs.com/kerrycode/p/3595724.html 当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问 ...
- 深入理解Linux文件系统与日志分析
一.inode和bolck概述 二.链接文件 三.inode节点耗尽故障处理 四.EXT类型文件恢复 五.xfs文件备份和恢复 六.日志文件 一.inode和bolck概述 1.定义 文件数据 文件数 ...
- 深入理解Linux文件系统与日志文件
目录: 一.inode与block 二.inode内容 三.inode的号码 四.inode的大小 五.链接文件 六.inode节点耗尽故障处理 七.恢复EXT类型的文件编译安装extundelete ...
- Linux 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别 (2014-03-16 17:54:32) 转载▼ 标签: linux 文件系统缓存 cache dirt ...
- Linux文件系统十问---深入理解文件存储方式(rhel6.5,EXT4)【转】
本文转载自:https://blog.csdn.net/tongyijia/article/details/52832236 前几天在红黑联盟上看了一篇博客<Linux文件系统十问—深入理解文件 ...
随机推荐
- ocelot+consul+identity4的使用demo
Ocelot网关搭建 搭建core控制台项目 本demo采用2.1版本 命名为APPIGateWay 在Nuget包中添加Ocelot引用 选用8.0.0版本 添加Ocelot.json 文件 内容为 ...
- [转]Linux中进程内存与cgroup内存的统计
From: http://hustcat.github.io/about/ Linux中进程内存与cgroup内存的统计 在Linux内核,对于进程的内存使用与Cgroup的内存使用统计有一些相同和不 ...
- [Git]Please make sure you have the correct access rights and the repository exists
这个问题是这样,需要在已有github账号的A机器上,再创建一个github账号,新账号创建完毕,将代码通过机器A push上之后,再另一台机器B,clone 这个项目时报出了如下错误: Permis ...
- C++ Primer(第4版)-学习笔记-第3部分:类和数据抽象
第12章 类 每个类可以没有成员,也可以定义多个成员,成员可以是数据.函数或类型别名. 成员函数必须在类内部声明,可以在类内部定义,也可以在类外部定义.如果在类内部定义,就默认是内联函数. ...
- vue中axios设置
//设置默认全局baseURL axios.defaults.baseURL=process.env.BASE_API; //设置默认全局携带浏览器cookie axios.defaults.with ...
- Grid Convergence Index-- Post Processing in CFD
t Grid Convergence Index Table of Contents 1. Grid/mesh independence GCI 1.1. Richardson extrapola ...
- Spring MVC学习总结(8)——Swagger入门详解
前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...
- poj 2135最小费用最大流
最小费用最大流问题是经济学和管理学中的一类典型问题.在一个网络中每段路径都有"容量"和"费用"两个限制的条件下,此类问题的研究试图寻找出:流量从A到B,如何选择 ...
- swift bug 调试记(wsgi.input)
第一次指定纠删码策略,修改了一部分swift代码后,执行PUT object,就被一个bug拦住.产生bug代码段如下: try: with ChunkReadTimeout(self.client_ ...
- 救命(洛谷 U4525)
题目背景 XS中学的校长积劳成疾,最终由于无聊而卧病在沙发.需要药(pi)水(gu)拯救他的生活. 题目描述 现在有n种药水,编号分别为1..n,能拯救校长的药水编号为n 每个药水都可以购买到,但有的 ...