mkswap
在Linux設備或者文件中創建交換分區,創建完成之后必須使用swapon來使用它。一般在“/etc/fstab”中有一個交換分區列表,這樣開機的時候就可以使用它。
此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
mkswap [-c] [-f] [-p PSZ] [-L label] [-U uuid] device [size]
參數device通常是一個磁盤分區(類似於/dev/sdb7),但也可以是一個文件。Linux內核不查看分區ID,但是許多安裝腳本將假定十六進制類型82(Linux_SWAP)的分區是交換分區。(警告:Solaris也使用此類型。小心不要關閉Solaris分區。)
參數size是多余的,但為了向后兼容性而保留
PSZ參數指定要使用的頁大小。指定它幾乎是不必要的(甚至是不明智的),但是某些舊的libc版本是關於頁面大小的,所以mkswap有可能弄錯了它。症狀是后續Swapon失敗了,因為沒有找到交換簽名。PSZ的典型值為4096或8192。
2、選項列表
選項
說明
-c
創建交換分區之前,檢測壞塊。如果有,那么打印出數量。
-f
強制執行。如果沒有此選項,mkswap將拒絕擦除帶有分區表的設備上的第一個塊或整個磁盤上的第一個塊(例如/dec/sda)。
-p
設置頁大小,默認4096。一般是不需要指定這個參數的
-L label
指定一個label,方便swapon使用。只適用於新的風格交換區域
-v1
創建v1版本的swap分區,2.5內核之后只支持這種的
-U uuid
指定uuid,默認情況會生成uuid
3、說明
交換頭不觸及第一個塊。引導加載程序或磁盤標簽可以在那里,但不建議安裝。建議的設置是為Linux交換區域使用單獨的分區。mkswap和許多其他類似mkfs的實用程序一樣,擦除了第一塊,這樣就可以刪除磁盤上的舊系統。mkswap拒絕擦除帶有磁盤標簽的設備上的第一個塊,或者整個磁盤。
交換區域的最大有用大小取決於體系結構和內核版本,在i386、PPC、m68k、ARM、sparc上為1 GiB、MIPS上為512 MiB、alpha上為128 GiB、sparc64上為3 TiB。對於2.3.3以后的內核來說,沒有這樣的限制。請注意,在2.1.117之前,內核為每個頁面分配了一個字節,而現在它分配了兩個字節,因此使用中的交換區域2 GIB可能需要2個MIB內核內存。
目前,Linux允許32個交換區域(這是Linux2.4.10之前的8個)。使用中的區域可以在文件“/proc/swaps”中看到(自2.1.25以來)。mkswap拒絕10頁以下的區域。如果您不知道您的機器使用的頁面大小,您可能可以使用“cat /proc/cpuinfo”查找它。
若要設置交換文件,必須在使用mkswap初始化該文件之前創建該文件,例如使用以下命令:
# dd if=/dev/zero of=swapfile bs=1024 count=65536
注意,交換文件不能包含任何漏洞(因此,使用cp(1)創建該文件是不可接受的)
4、實例
1)創建交換分區,指定頁大小2048
[root@localhost ~]# mkswap -p 2048 /dev/sdb4 //這里指定頁大小2048,取代了系統默認的4096
Using user-specified page size 2048, instead of the system value 4096
Setting up swapspace version 1, size = 16382 KiB
no label, UUID=42f07b0e-0adb-47b6-a906-1209efabb981
2)創建交換分區,指定頁大小4096,指定label
[root@localhost ~]# mkswap -p 4096 -L wj /dev/sdb4 //筆者當前的系統,不能使用2048大小的頁
Setting up swapspace version 1, size = 16380 KiB
LABEL=wj,UUID=c458a15d-50ee-4e10-a49b-b59add4879d5
3)使用交換分區
[root@localhost ~]# swapon /dev/sdb4 //使用指定的分區
[root@localhost ~]# swapon–s //查看分區使用情況
Filename Type Size Used Priority
/dev/dm-1 partition 2940920 0 -1
/dev/sdb4 partition 16376 0 -2