Linux基礎命令—mkswap

一生有你llx發表於2018-10-30
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


相關文章