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