Linux中Swap空間的管理知識講解
經常看到有些Linux(國內漢化版)安裝手冊上有這樣的說明:Swap空間不能超過128M。為什么會有這種說法?在說明“128M”這個數字的來歷之前,先給問題一個回答:現在根本不存在128M的限制!現在的限制是2G!
Swap空間是分頁的,每一頁的大小和內存頁的大小一樣,方便Swap空間和內存之間的數據交換。舊版本的Linux實現Swap空間時,用Swap空間的***頁作為所有Swap空間頁的一個“位映射”(Bit map)。這就是說***頁的每一位,都對應著一頁Swap空間。如果這一位是1,表示此頁Swap可用;如果是0,表示此頁是壞塊,不能使用。
這么說來,***個Swap映射位應該是0,因為,***頁Swap是映射頁。另外,***10個映射位也被占用,用來表示Swap的版本(原來的版本是Swap_space ,現在的版本是swapspace2)。
那么,如果說一頁的大小為s,這種Swap的實現方法共能管理“8 * ( s - 10 ) - 1”個Swap頁。對于i386系統來說s=4096,則空間大小共為133890048,如果認為1 MB=2^20 Byte的話,大小正好為128M。
之所以這樣來實現Swap空間的管理,是要防止Swap空間中有壞塊。如果系統檢查到Swap中有壞塊,則在相應的位映射上標記上0,表示此頁不可用。這樣在使用Swap時,不至于用到壞塊,而使系統產生錯誤。
現在的系統設計者認為:
1.現在硬盤質量很好,壞塊很少。
2.就算有,也不多,只需要將壞塊羅列出來,而不需要為每一頁建立映射。
3.如果有很多壞塊,就不應該將此硬盤作為Swap空間使用。 于是,現在的Linux取消了位映射的方法,也就取消了128M的限制。直接用地址訪問,限制為2G。
【編輯推薦】