[ext4]07 磁盘布局 - 块/inode分配策略
Ext4系統從設計上就認為數據局部性是文件系統的文件系統的一個理想品質。
在機械硬盤上,相關聯的數據存放在相近的blocks上,可以使得在訪問數據時減少磁頭驅動器的移動距離,從而加快IO訪問。
在SSD上,沒有像磁頭一樣的移動組件。但是數據局部性可以增大請求大小從而降低請求數量。同時可以盡可能的集中擦寫塊,從而提高重寫速度。對減少碎片也很有幫助。
Ext4解決碎片問題的第一個方法是,multi-block allocator。當創建文件時,塊分配器會分配8K的磁盤空間給文件,當然,這樣做有個假定——8K空間很快被寫數據。當文件被關閉后,沒有使用的空間會被釋放掉。但是,如果這種推測(就是剛才的假定)是正確的,那么這塊數據就被寫入了這個簡單的extent(8K空間)中。
Ext4解決碎片問題的第二個方法是,delayed allocation。根據這個策略,當文件需要更多的塊進行寫操作時,文件系統會推遲確定在磁盤上的寫入位置,直到臟數據要寫入磁盤。除非必要,否則不寫入磁盤(Timeout或sync或內核out of memory)。這樣可以更好的是文件進行位置決策。
Ext4解決碎片問題的第三個方法是,盡可能使得一個文件的數據和其inode在相同的塊組中。這種方法減少了data尋址耗時。特別是剛剛讀取inode后就訪問數據這種場景。
Ext4解決碎片問題的第四個方法是,整個卷被分割為大小為128M的groups。這樣可以最大限度的保證數據局部性。然而,當在根目錄創建文件時,inode分配器會掃描塊組,從inode最空閑的group中分配inode空間。這種方式會掃描整個卷。但是一般而言,都是按照順序往下創建的。
轉載于:https://www.cnblogs.com/youngerchina/p/5624481.html
總結
以上是生活随笔為你收集整理的[ext4]07 磁盘布局 - 块/inode分配策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nhibernate 多对多级联删除
- 下一篇: linux(centos)下mysql忘