1. 程式人生 > >swap分區擴容

swap分區擴容

swap

swap分區是在內存不夠用時才使用的,swap分區不夠時可以擴容


方法1:使用獨立的分區來實現


1. lsblk 查看是否有可用的磁盤分區,使用fdsik劃分磁盤分區


2. fdisk /dev/sdc 創建後的分區為/dev/sdc2,註意使用t選項修改分區id為82

3. 創建swap文件系統

mkswap /dev/sdc2 -L swap_sdc2

4. vim /etc/fstab

:r!blkid /dev/sdc2 #讀取命令輸出至文件,再次進行編輯

UUID="6f50983b-1452-41fc-8efd-2151e4613959" swap swap defaults 0 0

5. swapon -a 讓編輯後的/etc/fstab中的swap 分區生效

發散思維: 其實執行mount -a 是否生效不還是看選項是否有auto嗎,man 5 fstab中找到的(學會使用man 5 配置文件 來查看配置信息,你值得擁有!)

defaults

use default options: rw, suid, dev, exec, auto, nouser, and async.


noauto do not mount when "mount -a" is given (e.g., at boot time)


提取關鍵信息:defaults: rw, suid, dev, exec, auto, nouser, and async.

noauto: do not mount when "mount -a" is given (e.g., at boot time) 這句話取反你就知道啥意思了!


6. 重新讀取掛載信息後,使用swapon -s 查看swap文件系統的信息

[root@centos7 ~]#swapon -s

Filename Type Size Used Priority

/dev/sda3

partition 2047996 2800 -1

/dev/sdc2 partition 10484732 0 -2


註意一下還有優先級的,數值越大優先級越高

發散思維: 在使用是swap分區的時候要使用外磁道來使用(即磁道號較小的,最外圈的是0磁道),因為這樣數據的訪問效率會比內圈磁道高,具體的原因在此不再贅述。

7. 查看swap分區的狀態也可以使用 lsblk

[root@centos7 ~]#lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 100G 0 disk

├─sda1 8:1 0 1000M 0 part /boot

├─sda2 8:2 0 9.8G 0 part /

├─sda3 8:3 0 2G 0 part [SWAP] #原來的swap分區大小

├─sda4 8:4 0 1K 0 part

└─sda5 8:5 0 48.8G 0 part /data

sdb 8:16 0 20G 0 disk

├─sdb1 8:17 0 2G 0 part

├─sdb2 8:18 0 2G 0 part

├─sdb3 8:19 0 3G 0 part

├─sdb4 8:20 0 1K 0 part

└─sdb5 8:21 0 2G 0 part

sdc 8:32 0 20G 0 disk

├─sdc1 8:33 0 10G 0 part

└─sdc2 8:34 0 10G 0 part [SWAP] #新增加的swap分區的大小

sr0 11:0 1 3.7G 0 rom /run/media/root/CentOS_6.9_Final

sr1 11:1 1 8.1G 0 rom /run/media/root/CentOS 7 x86_64

8. 禁用新增的swap分

# swapoff /dev/sdc1



總結記憶: swapon -a 生效/etc/fstab 添加swap分區

fdisk分區的時候註意使用t 修改磁盤的id 為82

swpaon -s 查看swap分區信息

swapoff /dev/sdc1 禁用swap分區


方法2: 文件模擬分區創建swap文件系統


1. dd if=dev/zero of=/data/swap_file bs=1G count=5 創建5G空間的大小的文件

發散思維: dd if=/dev/zero of=/dev/sdc1 bs=512 count=1 可以幹掉MBR的信息,你可以這樣刪除分區信息,也可以使用fdisk /dev/sdc 來使用d選項來刪除

當然也可以不刪除bootloader的信息(446bytes),直接將64bytes的分區表信息填零,如:

dd if=/dev/zero of=/dev/sdc1 bs=64 count=1 seek=446 直接填充64bytes至 分區表,跳過目標 /dev/sdc1的前446bytes

葵花寶典的套路: 記住玩之前先要備份MBR啊!哈哈哈,dd if=/dev/sdc1 count=/data/mbr.bak bs=512 count=1 (默認單位是字節)

恢復的時候 可以直接 dd if=/dev/mbr.bak of=/dev/sdc1 不用給出bs和count了,因為只有512字節的備份信息,是吧。

也可以使用dd if=/dev/zero of=/dev/null bs=1G count=2 這方法可以測試磁盤的讀寫速度,有興趣的可以試試

2. mkswap -L swap_file /data/swap_file 創建swap文件系統

3. 為了永久生效,編輯配置文件/etc/fstab,永久生效配置修改配置文件似乎是linux的鐵律,你們覺得呢?因為使用的是文件模擬的分區,所以不要使用UUID喲!(難道我記錯了,一會試試)

vim /etc/fstab

/data/file2 swap swap defaults 0 0

4.swapon -a 讀取/etc/fstab中的swap分區信息

5.swapon -s 查看swap分區的信息,順便看看自己剛剛創建的swap分區是否生效

6.swapoff /data/swap_file 不想玩了,可以直接禁用


swap分區擴容