linux 如何增加swap分區,和刪除,移動swap

如何增加swap分區,和刪除,移動swap

由於我們在機器上添加了一條新內存,但是我按照swap容量是內存的1.5到2倍,但是現在不夠這個條件所以需要對swap進行擴容
1. 第一步創建一個適合的量的新的分區,或者文件
+ 需要注意一點swap分區和普通分區不同,在創建的時候要知道一下swap屬性

    [root@centos6 home]# fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (265-6527, default 265): 
Using default value 265
Last cylinder, +cylinders or +size{K,M,G} (265-6527, default 6527): +2G

Command (m for help): h
h: unknown command
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id  更改系統分區ID
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): t 這個選項是更改系統分區ID
Partition number (1-4): 3
Hex code (type L to list codes):     82 sawp分區ID是82,也可用L查看所有分區ID號
Changed system type of partition 3 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sdc: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63783858

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         132     1060258+  83  Linux
/dev/sdc2             133         264     1060290   83  Linux
/dev/sdc3             265         526     2104515   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos6 home]# 
[root@centos6 home]# 
[root@centos6 home]# echo $? 這個可以判斷是否有錯誤
0
[root@centos6 home]# 
  • 這樣我們的分區就創建好了,如果是老硬盤需要手動同步一下,6版本的系統用命令partx -a /dev/sdc,7版本的系統用partprobe 命令同步。創建完一定要檢查是否同步成功。
    1. 用mkswap 對剛剛創建的分區進行格式化和創建swap文件系統
[root@centos6 home]# mkswap /dev/sdc3
Setting up swapspace version 1, size = 2104508 KiB
no label, UUID=d0d47511-9cbb-4769-9430-6de164c74c62
[root@centos6 home]# blkid
/dev/sdb1: UUID="5fccd8fb-8c38-43ec-8d90-ff39938a8a9c" TYPE="ext2" 
/dev/sda1: UUID="bbfd63dd-da18-4ac9-affd-4724c571db21" TYPE="ext4" 
/dev/sda2: UUID="03352018-7cef-4ee3-9a05-b0833b67da19" TYPE="ext4" 
/dev/sda3: UUID="0bd51fa6-f577-427a-b0b2-1cb8a631ac16" TYPE="ext4" 
/dev/sda5: UUID="a8c19a79-3c21-4aa4-a648-27a069f25bde" TYPE="swap" 
/dev/sdb2: UUID="aabdedfc-beb9-4c9c-83ab-4a18cd6b24d4" TYPE="ext4" 
/dev/sdb3: LABEL="guo" UUID="581409f1-1db6-4fb5-b999-6ce074d1cec2" TYPE="ext4" 
/ddc: UUID="7a786bc8-c075-4c9a-acad-f042415a6b04" TYPE="ext4" 
/dev/sdc3: UUID="d0d47511-9cbb-4769-9430-6de164c74c62" TYPE="swap" 
  1. 在/etc/fstab 配置文件中添加對應的條目
UUID=d0d47511-9cbb-4769-9430-6de164c74c62       swap    swap    defaults        0       0
  1. 激活swap分區
查看一下現在的swap信息
[root@centos6 home]# free
             total       used       free     shared    buffers     cached
Mem:       2052688     424516    1628172       1284      24900     179200
-/+ buffers/cache:     220416    1832272
Swap:      2097148          0    2097148
從上面看到內存2G ,swap分區也2G.
現在激活剛剛創建的swap分區
[root@centos6 home]# swapon -a
[root@centos6 home]# free -h
             total       used       free     shared    buffers     cached
Mem:          2.0G       416M       1.6G       1.3M        24M       175M
-/+ buffers/cache:       216M       1.7G
Swap:         4.0G         0B       4.0G
  1. 這樣就擴容成功,現在查看一下swap分區詳細信息
[root@centos6 home]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2097148 0       -1
/dev/sdc3                               partition       2104508 0       -2
  • priority 這是優先級,越優先級越大就優先使用,想要指定優先級一定要先禁用swap 分區
[root@centos6 home]# swapoff /dev/sdc3
[root@centos6 home]# swapon -p 10 /dev/sdc3
[root@centos6 home]# swapon -a
[root@centos6 home]# swapon  -s
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2097148 0       -1
/dev/sdc3                               partition       2104508 0       10

我們要在/etc/fstab 中defaults位置上添加pri=value

UUID=d0d47511-9cbb-4769-9430-6de164c74c62       swap    swap    pri=10  0       0
  • 如何生效,先把swap分區禁用,然後在啓用就生效了
  • 雖然swapon -p 命令是可以設定優先值的,但是這是臨時的機器重啓會消失。
[root@centos6 ~]# swapoff /dev/sdc3
[root@centos6 ~]# swapon -a
[root@centos6 ~]# swapon -s        
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2097148 0       -1
/dev/sdc3                               partition       2104508 0       10

如何刪除swap分區
1.首先確認沒有swap分區沒有被使用,如何被使用我們刪除分區會導致內存裏面的數據會丟失切記

[root@centos6 home]# free -h
             total       used       free     shared    buffers     cached
Mem:          2.0G       416M       1.6G       1.3M        24M       175M
-/+ buffers/cache:       216M       1.7G
Swap:         4.0G         0B       4.0G
  1. 禁用要刪除的swap分區
[root@centos6 ~]# swapoff /dev/sdc3
[root@centos6 ~]# free
             total       used       free     shared    buffers     cached
Mem:       2038348     360052    1678296       1284      23780     128384
-/+ buffers/cache:     207888    1830460
Swap:      2097148          0    2097148
  1. 刪除/etc/fstab 對應行
  2. 刪除分區就好了

如果讓文件變成swap分區,然後把它移動到別的磁盤

  1. 用dd命令創建一個文件
[root@centos6 app]# dd if=/dev/zero of=swapfile bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 20.6218 s, 104 MB/s
[root@centos6 app]# ls
4  456  lost+found  mnt  oo  swapfile  we 
  • 這一步相對於創建分區了
    1. 用mkswap 命令格式變成swap分區
[root@centos6 app]# mkswap swapfile 
mkswap: swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=695dea75-3394-4932-8ddb-61806004aeea
[root@centos6 app]# blkid swapfile 
swapfile: UUID="695dea75-3394-4932-8ddb-61806004aeea" TYPE="swap"
  1. 寫入/etc/fstab
/app/swapfile      swap    swap    defaults        0       0
  1. 激活swap
[root@centos6 app]# swapon -a
[root@centos6 app]# free
             total       used       free     shared    buffers     cached
Mem:       2038348    1968472      69876       1288       6756    1703632
-/+ buffers/cache:     258084    1780264
Swap:      4194296          0    4194296
[root@centos6 app]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2097148 0       -1
/app/swapfile                           file            2097148 0       -2
  • 由於我們用的文件當swap ,然而文件的性能沒有真正磁盤分區性能好所以我們不要設優先級。
    1. 遷移文件swap分區到別的磁盤中
  • 確認現在沒有在使用swap,然後禁用swap分區
[root@centos6 app]# free
             total       used       free     shared    buffers     cached
Mem:       2038348    1968596      69752       1288       6804    1703672
-/+ buffers/cache:     258120    1780228
Swap:      4194296          0    4194296
[root@centos6 app]# swapoff swapfile 
[root@centos6 app]# free
             total       used       free     shared    buffers     cached
Mem:       2038348    1967372      70976       1288       6812    1703672
-/+ buffers/cache:     256888    1781460
Swap:      2097148          0    2097148
  • 把swapfile文件用cp命令複製別的磁盤
[root@centos6 app]# cp -p swapfile /
[root@centos6 app]# cd /
[root@centos6 /]# ls
app  boot  dev  home  lib64       media  mnt  opt   root  selinux  swapfile  tmp  var
bin  ddc   etc  lib   lost+found  misc   net  proc  sbin  srv      sys       usr
  • 改配置文件/etc/fstab
/swapfile       swap    swap    defaults        0       0
  • 然後在把原來文件刪除就成功了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章