色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用cp命令0.2秒就拷貝了100G文件是怎么回事

Linux愛好者 ? 來源:OSC開源社區 ? 作者:OSC開源社區 ? 2021-11-02 15:22 ? 次閱讀

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 1200.888871000 +0000 Modify: 2021-03-13 1246.562243000 +0000 Change: 2021-03-13 1246.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 = 26214400Block數組中每一項是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 能查找到所有離散的數據(保存了所有的索引);

最后,實現索引塊和數據塊空間的后分配;

這三點是層層遞進的。

后記

我把這點小知識給小伙伴講了一小時,看到他感動欲哭的表情,我覺得他學fei了,非常滿意。是我想太多了嗎?中午吃飯都沒叫我。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 命令
    +關注

    關注

    5

    文章

    688

    瀏覽量

    22057
  • 代碼
    +關注

    關注

    30

    文章

    4803

    瀏覽量

    68757

原文標題:0.2 秒居然復制了 100G 文件?

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    100G光模塊概述及應用前景

    100G光模塊作為高速數據傳輸的核心組件,具有重要地位。100G光模塊可以實現每秒100Gbps的數據傳輸速度,廣泛應用于數據中心和傳輸網等應用場景。本文將介紹100G光模塊的基本類型
    的頭像 發表于 11-25 12:04 ?263次閱讀

    如何使用SCP和Rsync遠程拷貝文件

    scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件命令,和它類似的命令cp,不過
    的頭像 發表于 09-29 15:54 ?449次閱讀

    基于VU9P的4路 100G光纖 6U VPX板卡

    基于VU9P的4路 100G光纖 6U VPX板卡
    的頭像 發表于 09-29 09:28 ?375次閱讀
    基于VU9P的4路 <b class='flag-5'>100G</b>光纖 6U VPX板卡

    大帶寬服務器推流延遲怎么回事

    大帶寬服務器推流延遲怎么回事
    的頭像 發表于 09-03 14:52 ?340次閱讀

    100G QSFP28雙纖單波光模塊的高性價比解決方案

    100G單波光模塊采用了更為先進的PSM4并行傳輸技術,將光發射和接收單元的數量從4個減少到1個,可使成本相對降低40%以上。由于100G單波技術采用了單通道PAM4技術,這一創新使得100G順利升級到4x
    的頭像 發表于 06-20 16:32 ?515次閱讀
    <b class='flag-5'>100G</b> QSFP28雙纖單波光模塊的高性價比解決方案

    100G Lambda MSA協議資源免費下載

    100G Lambda MSA
    的頭像 發表于 05-31 16:31 ?430次閱讀

    100G單纖和雙纖光模塊模塊對比

    近期,易天光通信升級更新系列100G光模塊,眾所周知,光模塊有著單纖和雙纖之分,那它們兩者有什么區別呢?本期文章我們就來看看易天100G單纖和雙纖光模塊的區別對比。
    的頭像 發表于 05-16 16:58 ?680次閱讀
    <b class='flag-5'>100G</b>單纖和雙纖光模塊模塊對比

    下一代光網絡單波100G光模塊

    100G Single Lambda (100G單波)是一種廣泛使用的基于PAM4調制的光學規范。100G單波用于通過單個波長光傳輸100G數據流。
    的頭像 發表于 05-13 10:56 ?621次閱讀

    100G ZR4 80KM光模塊產品亮點有哪些

    之前的文章我們介紹100G ZR4 80KM光模塊的產品特征以及技術原理等,那本期文章我們來了解一下易天第二代100G ZR4 80KM光模塊的產品亮點。
    的頭像 發表于 05-09 18:12 ?772次閱讀
    <b class='flag-5'>100G</b> ZR4 80KM光模塊產品亮點有哪些

    O-Band——真正的100G DWDM解決方案

    100G PAM4 DWDM O-BAND解決方案專為在中等長度距離需要多個100G連接的客戶而設計。易飛揚COLOR X光模塊采用PAM4 DWDM1 O-BAND硅光平臺, 可應用于5G前傳應用,傳輸距離達到10km,加外置
    的頭像 發表于 04-30 10:59 ?752次閱讀
    O-Band——真正的<b class='flag-5'>100G</b> DWDM解決方案

    FATFS操作SD卡,但沒法成功建目錄或文件,請問是怎么回事?

    FATFS (13a版本)操作SD卡(8G),但沒法 成功建目錄或文件,請問是怎么回事?SD卡的驅動正常。
    發表于 04-23 08:29

    網絡革新:ETU-LINK 100G AOC全系列產品驅動數字經濟的加速發展

    高效、穩定、高速的網絡連接成為各行業發展的基石。之前的文章內容小編為大家介紹ETU-LINK 100G DAC系列產品,本期文章我們來看看100G AOC產品,它在網絡技術革新中又起著什么作用呢?
    的頭像 發表于 04-16 17:40 ?853次閱讀
    網絡革新:ETU-LINK <b class='flag-5'>100G</b> AOC全系列產品驅動數字經濟的加速發展

    800G時代來臨,100G光模塊還有優勢嗎

    之一,100G光模塊也在不斷創新和升級。那么100G光模塊還有那些優勢呢?下面為大家介紹一下。 1、高速傳輸能力 100G光模塊是當前主流的網絡通信設備中使用的一種高速光模塊之一,其傳輸速率為
    的頭像 發表于 03-26 11:39 ?518次閱讀
    800<b class='flag-5'>G</b>時代來臨,<b class='flag-5'>100G</b>光模塊還有優勢嗎

    100G交換芯片和2.5G交換芯片介紹

    100G交換芯片是設計用于支持100 Gigabit Ethernet(100GbE)網絡通信的高性能集成電路。這類芯片對于滿足數據中心和高速網絡環境對帶寬和處理能力的日益增長的需求至關重要。
    的頭像 發表于 03-21 17:03 ?1499次閱讀

    100G QSFP28 LR4光模塊產品介紹

    100G QSFP28 LR4的由于其產品自身的高端性決定其應用的場景和領域的特殊,目前主要的應用場景有100G以太網鏈路、Infiniband QDR和DDR互連、客戶側100G
    的頭像 發表于 01-22 14:34 ?742次閱讀
    <b class='flag-5'>100G</b> QSFP28 LR4光模塊產品介紹
    主站蜘蛛池模板: 日韩午夜影院| 国产h视频免费观看| 男人插曲女人的叫声| 高h辣h双处全是肉一对一| 伊人久综合| 日产日韩亚洲欧美综合搜索| 久久re这里精品在线视频7| 成人无码在线视频区| 伊伊人成亚洲综合人网| 四虎成人影院| 欧美 国产 日产 韩国 在线| 精品欧美18videosex欧美| 高清午夜福利电影在线 | 欧美午夜理伦三级在线观看| 国语自产视频在线不卡| 国产 日韩 欧美 综合 激情| 99re6久久在热线视频| 伊人久久大香线蕉综合bd高清| 色欲AV亚洲永久无码精品麻豆| 男gv纯肉免费视频| 久久亚洲AV成人无码动态图| 国内卡一卡二卡三免费网站| 国产传媒18精品A片在线观看| JAVASCRIPTJAVA水多多| 91久久精一区二区三区大全| 伊人国产在线播放| 亚洲欧美中文在线一区| 天天躁夜夜踩很很踩2022| 人人模人人干| 欧美片第1页 综合| 名女躁b久久天天躁| 久久亚洲伊人中字综合精品| 狠狠色狠狠色综合日日2019| 国产女人视频免费观看| 国产精品久久久久秋霞影视| 高H高肉强J短篇校园| 丹麦1o一19sex性hdhd| 波多野结衣 无码片| thermo脱色摇床安卓下载| vivoe另类| 成年人免费观看的视频|