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