文件系统写入100G文件需要多久
這里面的
1、文件大小(SIZE):119000152(單位字節(jié));
2、塊(Blocks ):232424(通常的 Linux一個(gè)塊大小為 512 字節(jié),也就是一個(gè)扇區(qū)的大小)
文件系統(tǒng) ,簡單理解就是來存數(shù)據(jù)的一個(gè)容器,本質(zhì)和倉庫沒有啥區(qū)別,只不過文件系統(tǒng)存儲(chǔ)的是數(shù)據(jù)。
機(jī)械硬盤的寫入速度和讀寫速度一般約為120MB/S,500MB/s是usb接口的最大速度,機(jī)械硬盤能達(dá)到200MB/s的速度都十分優(yōu)秀了,大部分都是100MB/s~150MB/s 。SATA協(xié)議的固態(tài)硬盤速度約為500MB/S,NVMe協(xié)議(PCIe?3.0×2)的固態(tài)硬盤速度約為1800MB/S,NVMe協(xié)議(PCIe?3.0×4)的固態(tài)硬盤速度約為3500MB/S。
按機(jī)械硬盤的寫能力能 150 M/s,copy 一個(gè) 100G 的文件至少要 682 秒 ( 100 G/ 150 M/s ),也就是 11 分鐘。
所以通常要是導(dǎo)出或是導(dǎo)入100G文件都會(huì)超過機(jī)械硬盤寫入速度,具體多久還需要代碼和查詢數(shù)據(jù)量來定。
fdisk -l #查看block sizeiostat -d -k 1 10 #d 表示,顯示設(shè)備(磁盤)使用狀態(tài);#-k某些使用block為單位的列強(qiáng)制使用Kilobytes為單位;#1 10表示,數(shù)據(jù)顯示每隔1秒刷新一次,共顯示10次。寫文件流程:
先寫數(shù)據(jù):數(shù)據(jù)先按照 Block 粒度存儲(chǔ)到磁盤的各個(gè)位置;
再寫元數(shù)據(jù):然后把 Block 所在的各個(gè)位置保存起來,即inode;
讀文件流程則是:
先讀inode,找到各個(gè) Block 的位置;
然后讀數(shù)據(jù),構(gòu)造一個(gè)完整的文件,給到用戶;
文件 size 只是 inode 里面的一個(gè)屬性,實(shí)際物理空間占用則是要看用戶數(shù)據(jù)放了多少個(gè) block ,沒寫數(shù)據(jù)的地方不用分配物理block塊。
這樣的文件其實(shí)就是稀疏文件, 它的邏輯大小和實(shí)際物理空間是不相等的。?
文件系統(tǒng)為什么和實(shí)際物理空間不同?
首先,最關(guān)鍵的是把磁盤空間切成離散的、定長的 block 來管理;
然后,通過 inode 能查找到所有離散的數(shù)據(jù)(保存了所有的索引);
最后,實(shí)現(xiàn)索引塊和數(shù)據(jù)塊空間的后分配;
總結(jié)
以上是生活随笔為你收集整理的文件系统写入100G文件需要多久的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gitlub统计一个人提交代码行数
- 下一篇: 国内常用地图坐标系