<实训|第十天>从底层解释一下U盘内存为什么变小的原因附数据恢复的基本原理
[root@localhost~]#序言
我们平时不论是买一个U盘硬盘,或者自己在电脑上创建一个分区,大小总是比我们创建的要小一点,有些人会说,这个正常啊,是因为厂家规定的1M=1000k,真正的是1M=1024k,要是这样,我这篇文章就不用写了。厂家的规格可能是一部分原因,不过我现在是以U盘硬盘,或者分区的底层来分析这个问题。


开班第十天:
[root@localhost~]#今天的课程大纲:
- 真正了解文件系统
- 分析U盘变小了的原因
- 如何选择date block大小
- 软链接,硬链接
- 数据恢复的原理
详细讲解:
[root@localhost~]#真正了解文件系统
linux中叫创建文件系统,windows中习惯称呼为格式化,filesystem一种管理文件的方式,我们平时在linux中挂载本质上挂载的是文件系统。一个文件系统包括了inode block和date block,分别为索引节点块和数据块,这是在mkfs创建文件系统的时候就已经生成了。下面我用一张我手画的图来模拟一个分区的构成,不好看,大家不要介意。(实在看不清的就留言,单独给你发)![]()
再解释一下上面图,dir是一个目录索引表,这里假设我要执行cat a.txt文件,我怎么知道a.txt文件里的内容,这里我们先找到dir中a.txt对应inum是1,然后再在file中找到inum=1所对应的文件,可以看到block对应的是<10,11,12>,而在date block中是没有inum的,我写上为了方便理解,我们找到了<10,11,12>,那么我们就从date block中读取出数据,然后返回给cat,这样我们就能读取到a.txt文件内容了。
[root@localhost~]#分析U盘变小了的原因
看懂了上面的图,现在就很容易理解U盘,分区变小的原因了。在inode中,dir的一条记录占用一个inode,file中一条记录占用了一个inode,而且file中的一条记录还记录了这个文件的拥有者,所属组和属性等信息。这一部分总占用的资源就是我们U盘,分区少的那一部分,所以我们分区创建好之后,会变小,就是这个原因。
[root@localhost~]#如何选择date block大小
今天我闲的无聊用英文写了这个问题的解答,只过了四级,所以语法很多问题,不过搞IT嘛,能看懂就行,哈哈!
|
[root@localhost~]#软链接,硬链接
我们知道,在用ls -l查看文件权限的时候,第一位可能是 -,d,l,-代表的是普通文件,d代表目录,l代表链接文件。其实这样的属性还有很多个。今天来讲一下链接文件。
软链接做个比喻,其实就像windows中的快捷方式。如何来创建链接呢?
1.软链接:ln -s a.txt b.txt,b.txt是本来不存在的,现在b.txt就是a.txt的一个快捷方式。
2.硬链接:ln a.txt b.txt,表示硬链接,a.txt和b.txt互相为对方的硬链接。
这里说一下软硬链接的性质:
1.不能跨文件系统创建硬链接,因为不同的文件系统可能有相同的inode。
2.不能做目录的硬链接。
3.硬链接,删除其中一个硬链接,另外一个可以读取,软链接删除源文件,不能读取了。
4.两个硬链接都被删除,该inode会被重新分配。
5.软链接会占用磁盘空间,硬链接不会占用磁盘空间。
硬链接其实就是指向同一文件且inum相同的两条inode,所以他们都会占用一条inode。
[root@localhost~]#数据恢复的原理
我们知道,删除一个文件只是删除了这个文件的inode,而指向的date block却没有被删除,所以我们可以再次通过已知的inode值来找到date block,从而重新读取出里面的数据。但是我们常见的数据恢复软件都会友情提示,数据误删除之后,都不要再继续进行读写磁盘,因为可能重新写的数据会占用了你之前删除的inode,date block也会被占用,那么即时你找回了,要不是原来的数据了。
总结:
[root@lcoalhost~]#来自爱家人爱老婆的IT男:
好好揣摩一下文件系统的结构,这对我们今后走运维这条路很有帮助的,希望大家都能够越走越远,越走越顺利! 博客园:爱家人爱老婆的IT男
QQ群:,我会上传资源,同时会有很多大神跟你们讨论学习分享
微信公众号:程序猿的野生香蕉【获取文章中出现的工具】
<实训|第十天>从底层解释一下U盘内存为什么变小的原因附数据恢复的基本原理的更多相关文章
- 零基础自学Python十天的时候,写的一款猜数字小游戏,附源码和软件下载链接!
自学一门语言最重要的是要及时给自己反馈,那么经常写一些小程序培养语感很重要,写完可以总结一下程序中运用到了哪些零散的知识点. 本程序中运用到的知识点有: 1.输入输出函数 (input.print) ...
- Java企业实训 - 01 - Java前奏
前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...
- UML基础与Rose建模实训教程
目 录 第1章 初识UML. 1 1.1 初识UML用例图... 1 1.2 初识UML类图... 3 第2章 Rational Rose工具... 6 2.1 安装与配置Rational Ro ...
- 软件工程实训项目案例--Android移动应用开发
实训过程 角色分工 1.项目经理:负责项目的组织实施,制定项目计划,并进行跟踪管理 2.开发人员:对项目经理及项目负责 3.需求分析员:负责系统的需求获取和分析,并协助设计人员进行系统设计 4.系统设 ...
- <实训|第三天>Linux登录界面的修改以及Richard Stallman、自由软件运动
在写博客之前我想说两点: 承认一个错误,昨天写的实训第二天,我把redhat6.7写成了Linux6.7,感谢热心人士的指出! 昨天写的文章名字太长了,今天改善,内容感觉表述不全,希望各位谅解! 官方 ...
- Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!
Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...
- Java实训:实训一 ——长春职业技术学院 16级网络工程
Java实训:实训一 本文会解释一些设计思路. 想看具体过程,请转:https://www.cnblogs.com/lxwlxw/p/10114187.html 笑维的码云项目命名不太对,所以我来:h ...
- 实训第六天(mybatis)
今天实训第六天,我们学习了mybatis这个数据库框架,虽然说框架的环境搭建非常的繁琐,但是在了解原理和流程之后是非常的舒服的.因为有一个强大的工具被我掌握了,所以今天感觉非常的开心. 首先我们是在s ...
- <实训|第六天>偷偷让新手的Linux无限重启附linux主机名称不是随便乱改的!
先说个事情:这几天我正在忙一个项目的设计,8月1号之前要弄出来,所以每天都要弄到很晚,可能更新就有点跟不上了,不过我如果有时间的话,我就更新,没时间的话,我会在8月1号之后统一更新出来,希望大家谅解! ...
随机推荐
- JavaScript Patterns 4.9 Configuration Objects
Configuration Objects Passing a large number of parameters is not convenient. A better approach is t ...
- mysql metadata lock(三)
前言 MDL锁主要用来保护Mysql内部对象的元数据,通过MDL机制保证DDL与DML以及SELECT查询操作的并发.MySQL Meta Lock(一)和MySQL Meta Lock(二)已经讲了 ...
- Sql Server之旅——第六站 使用winHex利器加深理解数据页
这篇我来介绍一个winhex利器,这个工具网上有介绍,用途大着呢,可以用来玩数据修复,恢复删除文件等等....它能够将一个file解析成 hex形式,这样你就可以对hex进行修改,然后你就可以看到修复 ...
- windows 远程桌面研究
最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识. 1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server. 大家使用 ...
- 工作中常用的Linux命令:find命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6056571.html (转载请注明出处) 1.命令格式 find [-H] [-L] [-P] [-D deb ...
- 150922-写写博客监督下不自觉的自己-PPT,Linux,HTML
开始学PHP的日子里,总是懒散的有一天没一天的.无意间听闻写博客来展示代码(现在还远远做不到哇),来监督个人每天的学习进度,鉴于自己还是爱写一点文字,但愿可以坚持下去. 凡是都喜欢有个计划,骨子里的理 ...
- Scikit-Learn模块学习笔记——数据预处理模块preprocessing
preprocessing 模块提供了数据预处理函数和预处理类,预处理类主要是为了方便添加到 pipeline 过程中. 数据标准化 标准化预处理函数: preprocessing.scale(X, ...
- C# 格式化小总结
C#中几个常用的格式化标识符 C或c Currency 货币格式 D或d Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了) E或e Exponent 指数格式 F ...
- UVALive 5066 Fire Drill --BFS+DP
题意:有一个三维的地图,有n个人被困住,现在消防队员只能从1楼的一个入口进入,营救被困者,每一个被困者有一个价值,当消防队员找到一个被困者之后,他可以营救或者见死不救,如果救的话,他必须马上将其背到入 ...
- POJ1270 Following Orders[拓扑排序所有方案 Kahn]
Following Orders Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4885 Accepted: 1973 ...
