范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

0。2秒居然复制了100G文件?

  cp 引发的思考
  今天同事用 cp 命令,把他给惊到了!
  背景是这样的:他用 cp 拷贝了一个 100 G的文件,竟然一秒不到就拷贝完成了!
  用 ls 看一把文件,显示文件确实是 100 G。  sh-4.4# ls -lh -rw-r--r-- 1 root root 100G Mar  6 12:22 test.txt
  但是copy起来为什么会这么快呢?  sh-4.4# time cp ./test.txt ./test.txt.cp real 0m0.107s user 0m0.008s sys 0m0.085s
  一个 SATA 机械盘的写能力能到 150 M/s (大部分的机械盘都是到不了这个值的)就算非常不错了,正常情况下,copy 一个 100G 的文件至少要 682 秒 ( 100 G/ 150 M/s ),也就是 11 分钟。
  实际情况却是 cp 一秒没到就完成了工作,惊呆了,为啥呢?
  更诡异的是:他的文件系统只有 40 G,为啥里面会有一个 100 G的文件呢?
  同事把我找来,看看这个诡异的问题。  分析文件
  我让他先用 du 命令看一下,却只有 2M ,根本不是100G,这是怎么回事?  sh-4.4# du -sh ./test.txt 2.0M ./test.txt
  再看 stat 命令显示的信息:  sh-4.4# stat ./test.txt   File: ./test.txt   Size: 107374182400 Blocks: 4096       IO Block: 4096   regular file Device: 78h/120d Inode: 3148347     Links: 1 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root) Access: 2021-03-13 12:22:00.888871000 +0000 Modify: 2021-03-13 12:22:46.562243000 +0000 Change: 2021-03-13 12:22:46.562243000 +0000  Birth: -
  stat 命令输出解释:  Size 为 107374182400(知识点:单位是字节),也就是 100G ;  Blocks 这个指标显示为 4096(知识点:一个 Block 的单位固定是 512 字节,也就是一个扇区的大小),这里表示为 2M;
  划重点  :  Size 表示的是文件大小,这个也是大多数人看到的大小;  Blocks 表示的是物理实际占用空间;
  同事问道:"文件大小和实际物理占用,这两个竟然不是相同的概念 !为什么是这样?"
  "看来,我们必须得深入文件系统才能理解了,来,我给你好好讲讲。"  文件系统
  文件系统听起来很高大上,通俗话就用来存数据的一个容器而已,本质和你的行李箱、仓库没有啥区别,只不过文件系统存储的是数字产品而已。
  我有一个视频文件,我把这个视频放到这个文件系统里,下次来拿,要能拿到我完整的视频文件数据,这就是文件系统,对外提供的就是存取服务。  现实的存取场景
  例如你到火车站使用寄存服务:
  存行李的时候,是不是要登记一些个人信息?对吧,至少自己名字要写上。可能还会给你一个牌子,让你挂手上,这个东西就是为了标示每一个唯一的行李。
  取行李的时候,要报自己名字,有牌子的给他牌子,然后工作人员才能去特定的位置找到你的行李
  划重点:存的时候必须记录一些关键信息(记录ID、给身份牌),取的时候才能正确定位到。  文件系统
  回到我们的文件系统,对比上面的行李存取行为,可以做个简单的类比;  登记名字就是在文件系统记录文件名;  生成的牌子就是元数据索引;  你的行李就是文件;  寄存室就是磁盘(容纳东西的物理空间);  管理员整套运行机制就是文件系统;
  上面的对应并不是非常严谨,仅仅是帮助大家理解文件系统而已,让大家知道其实文件系统是非常朴实的一个东西,思想都来源于生活。  空间管理
  现在思考文件系统是怎么管理空间的?
  如果,一个连续的大磁盘空间给你使用,你会怎么使用这段空间呢?
  直观的一个想法,我把进来的数据就完整的放进去。
  这种方式非常容易实现,属于眼前最简单,以后最麻烦的方式。因为会造成很多空洞,明明还有很多空间位置,但是由于整个太大,形状不合适(数据大小),哪里都放不下。因为你要放一个完整的空间。
  怎么改进?有人会想,既然整个放不进去,那就剁碎了呗。这里塞一点,那里塞一点,就塞进去了。
  对,思路完全正确。改进的方式就是切分,把空间按照一定粒度切分。每个小粒度的物理块命名为 Block,每个 Block 一般是 4K 大小,用户数据存到文件系统里来自然也是要切分,存储到磁盘上各个角落。
  图示标号表示这个完整对象的 Block 的序号,用来复原对象用的。
  随之而来又有一个问题:你光会切成块还不行,取文件数据的时候,还得把它们给组合起来才行。
  所以,要有一个表记录文件对应所有 Block 的位置,这个表被文件系统称为inode。写文件的流程是这样的:  先写数据:数据先按照 Block 粒度存储到磁盘的各个位置;  再写元数据:然后把 Block 所在的各个位置保存起来,即inode(我用一本书来表示);
  读文件流程则是:  先读inode,找到各个 Block 的位置;  然后读数据,构造一个完整的文件,给到用户;
  inode/block 概念
  好,我们现在来看看inode,直观地感受一下:
  这个inode有文件元数据和Block数组(长度是15),数组中前两项指向Block 3和Block 11,表示数据在这两个块中存着。
  你肯定会意识到:Block数组只有15个元素,每个Block是4K, 难道一个文件最大只能是 15 * 4K = 60 K ?
  这是绝对不行的!
  最简单的办法就是:把这个Block数组长度给扩大!
  比如我们想让文件系统最大支持100G的文件,Block数组需要这么长:
  (100  1024  1024)/4 = 26214400
  Block数组中每一项是4个字节,那就需要(26214400*4)/1024/1024 = 100M
  为了支持100G的文件,我们的Block数组本身就得100M !
  并且对每个文件都是如此 !即使这个文件只有1K!这将是巨大浪费!
  肯定不能这么干,解决方案就是间接索引,按照约定,把这 15 个槽位分作 4 个不同类别来用:  前 12 个槽位(也就是 0 - 11 )我们成为直接索引;  第 13 个位置,我们称为 1 级索引;  第 14 个位置,我们称为 2 级索引;  第 15 个位置,我们称为 3 级索引;
  直接索引:能存 12 个 block 编号,每个 block 4K,就是 48K,也就是说,48K 以内的文件,前 12 个槽位存储编号就能完全 hold 住。
  一级索引:
  也就是说这里存储的编号指向的 block 里面存储的也是 block 编号,里面的编号指向用户数据。一个 block 4K,每个元素 4 字节,也就是有 1024 个编号位置可以存储。
  所以,一级索引能寻址 4M(1024 * 4K)空间 。
  二级索引:
  二级索引是在一级索引的基础上多了一级而已,换算下来,有了 4M 的空间用来存储用户数据的编号。所以二级索引能寻址 4G (4M/4 * 4K) 的空间。
  三级索引:
  三级索引是在二级索引的基础上又多了一级,也就是说,有了 4G 的空间来存储用户数据的 block 编号。所以二级索引能寻址 4T (4G/4 * 4K) 的空间。
  所以,在这种文件系统(如ext2)上,通过这种间接块索引的方式,最大能支撑的文件大小 = 48K + 4M + 4G + 4T ,约等于 4 T。
  这种多级索引寻址性能表现怎么样?
  在不超过 12 个数据块的小文件的寻址是最快的,访问文件中的任意数据理论只需要两次读盘,一次读 inode,一次读数据块。
  访问大文件中的数据则需要最多五次读盘操作:inode、一级间接寻址块、二级间接寻址块、三级间接寻址块、数据块。  为什么cp那么快?
  接下来我们要写入一个奇怪的文件,这个文件很大,但是真正的数据只有8K:
  在[0,4K]这位置有4K的数据
  在[1T , 1T+4K] 处也有4K数据
  中间没有数据,这样的文件该如何写入硬盘?  创建一个文件,这个时候分配一个 inode;  在 [ 0,4K ] 的位置写入 4K 数据,这个时候只需要 一个 block,把这个编号写到 block[0] 这个位置保存起来;  在 [ 1T,1T+4K ] 的位置写入 4K 数据,这个时候需要分配一个 block,因为这个位置已经落到三级索引才能表现的空间了,所以需要还需要分配出 3 个索引块;  写入完成,close 文件;
  实际存储如图:
  这个时候,我们的文件看起来是超大文件,size 等于 1T+4K ,但里面实际的数据只有 8 K,位置分别是 [ 0,4K ] ,[ 1T,1T+4K ]。
  由于没写数据的地方不用分配物理block块,所以实际占用的物理空间只有8K。
  重点:文件 size 只是 inode 里面的一个属性,实际物理空间占用则是要看用户数据放了多少个 block ,没写数据的地方不用分配物理block块。
  这样的文件其实就是稀疏文件, 它的逻辑大小和实际物理空间是不相等的。
  所以当我们用cp命令去复制一个这样的文件时,那肯定迅速就完成了。  总结
  好,我们再深入思考下,文件系统为什么能做到这一点?  首先,最关键的是把磁盘空间切成离散的、定长的 block 来管理;  然后,通过 inode 能查找到所有离散的数据(保存了所有的索引);  最后,实现索引块和数据块空间的后分配;
  这三点是层层递进的。
  链接:https://it.cha138.com/nginx/show-231073.html

仅播出3集,全网热度第2,我断言悬疑剧庭外将很快火向全国俗话说得好老将出马,一个顶俩果然,能让一部作品发光的,还得是老将!庭外用时2天,在仅播出3集的情况下,就拿下了全网热度第2的成绩。放眼望去,能取得这种成绩的影视剧作品多如牛毛,但前聊斋故事男子帮蟒蛇渡劫,蟒蛇半夜托梦,三更时,要躲在床底下明朝年间,昆仑山中隐居着一个小伙,名叫徐良,年方二十,自幼就是孤儿,7岁时,在一个天寒地冻的晚上,被路过的无心道长所救,并收为关门徒弟。奈何,徐良生性好动,没有定性,耐不住寂寞,被别浪费时间了,不够强大不如努力做自己我很喜欢看鲁迅的书,其中一段话让我感慨颇深人一旦悟透了,就会变得沉默,不是没有与人相处的能力,而是没有了逢场作戏的兴趣。人到了一定年纪,就会明白放弃无用的社交,把更多的时间留给自己55岁港星谢天华晒庆生照,7岁儿子4岁女儿齐吻脸,红光满面气色好饿了吗?戳右边关注我们,每天给您送上最新出炉的娱乐硬核大餐!7月16日,港星谢天华晒出了自己的庆生照,因他许久未在社交平台发布动态,不少网友留言称终于看见新鲜的laughing哥了2022年陕西省农民去世后,丧葬费和抚恤金标准有多少?陕西省未参加城乡居民养老保险的,不能领取丧葬费用,但可享受城镇职工社会保障范围内的丧葬费用。陕西省农村老年人,无论是退休前还是去世后,只要参加城乡居民社会保障,都可以享受丧葬费。那港媒中国用芯片封装技术反击美国制裁据香港亚洲时报网站7月14日报道,中国正设法绕开美国的芯片制造禁令。中国大陆半导体行业在专利方面落后于美国,在制造方面落后于韩国和台湾,但中国希望通过采用革命性的新芯片设计技术来超同一省市养老金上调,8000涨了297,2600却能涨284,这是咋回事?(点击上方蓝色按钮,可同步收听全文,为您带来更好的阅读体验!)同一省市养老金上调,8000元的人每月涨了297元,2600元的也能每月涨到284元,这究竟是咋回事?为何养老金相差3从野战军军长到中共中央副主席,李德生的三度意外任职文水新营在1955年解放军首次授衔的千余名开国将军中,李德生有着相当不平凡的履历。他14岁参加中国工农红军,战争年代,九死一生,战功卓著。从开国少将到改革开放新时期恢复军衔制后的上16年,在澳留学的四川女孩被姨父杀害后抛尸,姨父我不记得了2016年4月25日,澳大利亚悉尼,一对神色慌张的夫妻迈着匆忙的步伐走进了坎普希警局,声称他们25岁的侄女冷梦梅于3天前失踪。然而就在他们报警的前一天,一名游客在距离悉尼市中心10今天入伏了,秋收啥样?老人说看入伏天气就知道打卡挑战局今天是公历七月十六,农历六月十八,按照咱们国家古老的历法,今天是入伏的日子,俗话说冬冷有三九,夏热有三伏,也就是说眼看就要进入一年之中最热的时候了,那么今年的伏天到底热不预售制后遗症来了,保速度还是保质量?央媒做出回应文咕哒近期,烂尾楼盘业主联名停贷出现了城传城的现象。据悉,江西省景德镇市较先开启业主联名停贷。随后,长沙新力铂园武汉绿地光谷星河绘南昌新力城郑州名门翠园等项目业主也向银行发出强制停
神奇的曲池穴,号称为中医降热大穴,为什么有人说没有效果?好内容我来评位于人体肘关节上的曲池穴,是中医清热泄火解毒的重要穴位。这一点,相信大家都已经很熟悉的了。但是也有人有所疑惑,为什么有人使用曲池穴来清热解毒降火治疗咽喉疼痛等热性疾患,坐月子不能吃哪些东西食物之间是会相斥的。如在坐月子吃了不洁或其他食物可能对自己以及胎儿都有不良的作用。为了避免以上情况发生,正在坐月子的女性在饮食上是应该有所禁忌的。接下来我们一起了解一下坐月子不能吃人类历史上的每一个伟人与罪犯,都在这一个暗淡蓝点上亲爱的宇宙,我想向你讲述地球的故事,这个坐落在猎户天鹅臂螺旋臂上的,太阳系中由内及外的第三颗行星,宇宙中人类已知唯一存在生命的天体,生命诞生的摇篮,所有人类的共同家园。1968年阿历史上的旅游达人(3)张骞的西域之旅历史开讲一我国的西行之旅很多年前在我们的市直礼堂剧院看过丝路花雨,甘肃敦煌艺术剧院的巡回演出,中国东方歌舞团也到我们家乡演出。丝路花雨就是讲述丝绸之路的故事,非常精彩。此舞只应天上历史的今天2月23日废止中医案1929年2月23号,民国发生废除中医案事件。从晚清开始,西方的医学大规模的进入中国,像解剖生理病理细菌临床诊断,西医在中国是大行其道,当时中国积贫积弱,而且西医大规模的进入中国,历史的角落八旗旗主到底是多大的官职?历史的角落八旗旗主到底是多大的官职?八旗制度的由来当年两手空空的努尔哈赤靠着挖自己家的祖坟,成功摆脱困境,寻找到了十三副铠甲,并就此走上了发家致富的道路。当时的努尔哈赤一定没想到,美哭观众!魅礼潮州T台秀将亮相2023春季中国跨交会3月18日20日,中国跨境电商交易会将在福州海峡国际会展中心举行。据中国跨境电商交易会官网消息,本次交易会设有潮州馆,并将在开幕当天上演魅礼潮州主题婚纱礼服T台秀,为观众献上一场婚CBA全明星首发公布易建联郭艾伦当选南北票王CBA联赛官方公布了2023年CBA全明星赛首发球员投票结果,易建联(649226票)郭艾伦(533582票)分获南北区票王。本次CBA全明星票选新增媒体投票环节,首发阵容将由球迷恩施的春天约起品味宣恩兴隆老街,轻松拍出古风写真!落日余晖中,白墙黑瓦小巷随处铺洒着金光,使这条老街弥漫着古朴而又新潮的韵味。走进兴隆老街,古风古韵扑面而来,闲看夏暑冬寒,独处闹市一隅,叙说一段悠悠往事。过去兴隆老街始建于乾隆年间为何他能创造历史?专访中国网球运动员吴易昺2月13日,ATP250巡回赛,也就是国际职业网球联合会达拉斯站决赛落幕。中国选手吴易昺苦战三局击败美国名将伊斯内尔,成为中国男单选手夺得ATP巡回赛单打冠军第一人。比赛之后,面对如何看待现在国乒谈一下我个人观点首先说女队,女队现在的实力可以说空前鼎盛,有孙颖莎陈梦王曼昱王艺迪陈幸同五朵金花,还有蒯曼,钱天一等强者。她们都保持着极高的对外胜率,可以说在未来十年中国女乒都会一