mkswap - 建立一個linux交換區
mkswap [-c] [-vN] [-f] device
[size]
mkswap
在一個裝置上或者在一個檔案裡建立一個linux交換區。
(該交換區建立後,必須使用
swapon
命令來啟用它。通常交換區被列在
/etc/fstab
中,從而使得在啟動時可透過某些啟動指令碼中的
swapon -a 命令來啟用。)
引數
device
通常是一個磁碟分割槽(類似於
/dev/hda4 或者
/dev/sdb7
),但也可以是一個檔案。
Linux核心不會著眼於分割槽號,但是一些安裝指令碼會假定型別為
16進位制的82(LINUX_SWAP)的分割槽意味著交換分割槽。
引數
size
是多餘的,但為了向相容性而被保留。(它指定期望的以1024
位元組為單位的交換區大小。如果它未被指定,
mkswap
將使用整個分割槽或者檔案。錯誤地使用"-a"選項將會損壞您的磁碟。)
Linux能理解兩種型別的交換區:舊型別和新型別。交換區第一頁的最後
10個位元組區分兩種型別:舊型別以"SWAP_SPACE",新型別以"SWAPSPACE2"
作標識。
在舊型別裡,第一頁的其它部分是一個位圖,每一位指出交換區中的可
用頁面。因為第一頁儲存點陣圖,所以第一位為0。同樣的,最後10位儲存
標識。所以,如果頁面大小為S,舊型別交換區可以描述最多8*(S-10)-1
個可用於交換的頁面。對於S=4096(象i386上),最大可用區域是
133890048位元組(如果1 MB=2^20
bytes,則差不多為128
MB),而其他部
分將被浪費。在alpha和sparc64上,S=8192,最大可用區域是535560992字
節(與上述同樣條件下,差不多為512
MB)。
因為零位表示壞的塊或者超過交換區末尾的塊,舊的設定浪費了大部分的
點陣圖頁面,一個簡單的整數就可以滿足指出交換區大小的需要,而且如果
有壞的塊,也可以簡單的列出來。沒有人想使用有許多壞塊的交換區(我
甚至不會使用包含一個壞塊的交換空間)。在新型別交換區正好是這樣做
的。現在交換區的最大可用數目取決於具體結構。大致來說,在i386,
PPC, m68k,
ARM上為2GB,在sparc上為1GB,在mips上為512MB,在alpha
上為128GB,在sparc64上為3TB。
注意在2.1.117核心之前,每一頁分配一個位元組,而現在為兩個位元組,所
以為了獲得2GB的可用交換區,可能需要2MB的核心記憶體。
目前,Linux允許8個交換區。這些正在使用的區域可從檔案
/proc/swaps
(從2.1.25起)中查到。
mkswap
不允許小於10個頁面的區域。
如果不知道您的機器所用的頁面大小,可以用"cat
/proc/cpuinfo"來查
看(或者不能檢視 -
這個檔案的內容取決於系統結構和核心版本)。
為了設定一個交換檔案,需要在執行
mkswap ,
前建立這個檔案,例如,象如下命令:
# dd if=/dev/zero of=swapfile bs=1024 count=65536
注意一個交換檔案必須不包括任何空洞(所以,不能使用
cp(1) 來建立該檔案)。
- -c
- 在建立交換區之前檢查裝置(如果是塊裝置)的壞塊。
如果發現任何壞塊,壞塊的總數將被打印出來。
- -f
- 強行向前執行,即使該命令是愚蠢的。該選項允許建立比
所在的檔案或者分割槽還大的交換區。在SPARC上,強行建立
交換區。無該選項的
mkswap
將拒絕在包含有效的SPARC超
級塊的裝置上建立vo交換區,因為那樣可能意味著將刪除
分割槽表。
- -v0
- 建立一箇舊型別的交換區。
- -v1
- 建立一個新型別的交換區。
如果未指定-v選項,而且交換區大小沒有超過舊型別交換區
的最大值,同時當前核心比2.1.117老(且PAGE_SIZE小於
2048),
mkswap
將預設建立舊型別的交換區。萬一您的引導分割槽或者磁碟卷
標在第一塊,新型別的頭部將不接觸那些部分,所以可能更
好(如果同樣交換區較小),
fdisk(8),
swapon(8)
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh