使用磁碟為Linux新增swap

振宇要低調發表於2015-07-31

一.SWAP 說明
 
1、SWAP 概述
  當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前執行的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要執行時,再從Swap中恢復儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行Swap交換。
  以上是SWAP 交換分割槽的作用。 實際上,我們更關注的應該是SWAP分割槽的大小問題。 設定多大才是最優的。一般來說可以按照如下規則設定swap大小:
    

    4G以內的實體記憶體,SWAP 設定為記憶體的2倍。
    4-8G的實體記憶體,SWAP 等於記憶體大小。
    8-64G 的實體記憶體,SWAP 設定為8G。
    64-256G實體記憶體,SWAP 設定為16G。
  

  實際上,系統中交換分割槽的大小並不取決於實體記憶體的量,而是取決於系統中記憶體的負荷,所以在安裝系統時要根據具體的業務來設定SWAP的值。


2、系統在什麼情況下才會使用SWAP?
  實際上,並不是等所有的實體記憶體都消耗完畢之後,才去使用swap的空間,什麼時候使用是由swappiness 引數值控制。

[root@rhce ~]# cat /proc/sys/vm/swappiness
60

  該值預設值是60。swappiness=0的時候表示最大限度使用實體記憶體,然後才是 swap空間,swappiness=100的時候表示積極的使用swap分割槽,並且把記憶體上的資料及時的搬運到swap空間裡面。現在伺服器的記憶體動不動就是上百G,所以我們可以把這個引數值設定的低一些,讓作業系統儘可能的使用實體記憶體,降低系統對swap的使用,從而提高系統的效能。

二.使用磁碟為Linux新增swap

   檢視磁碟及分割槽資訊

[root@ip-192-168-31-161 ~]# fdisk -l

Disk /dev/xvda: 193.3 GB, 193273528320 bytes, 377487360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000da64d

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048   377487359   188742656   83  Linux

Disk /dev/mapper/docker-202:1-385876097-pool: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes


Disk /dev/xvdf: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


  新增新的分割槽

[root@ip-192-168-31-161 ~]# fdisk /dev/xvdf
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8fb93abe.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   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
   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): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-8388607, default 2048):  (直接回車)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-8388607, default 8388607):  (直接回車)
Using default value 8388607
Partition 1 of type Linux and of size 4 GiB is set

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

Calling ioctl() to re-read partition table.
Syncing disks.


  檢視磁碟及分割槽資訊

[root@ip-192-168-31-161 ~]# fdisk -l

Disk /dev/xvda: 193.3 GB, 193273528320 bytes, 377487360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000da64d

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048   377487359   188742656   83  Linux

Disk /dev/mapper/docker-202:1-385876097-pool: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes


Disk /dev/xvdf: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8fb93abe

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdf1            2048     8388607     4193280   83  Linux

 

  可以看到/dev/xvdf1是新建立的分割槽,注意這裡fdisk ID的編號。 這裡顯示的83,它代表這個分割槽是ext的分割槽,這個是不能用來做swap的。我們繼續更改

[root@ip-192-168-31-161 ~]# fdisk /dev/xvdf
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): l  (list known partition types)

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   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
   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
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'

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

Calling ioctl() to re-read partition table.
Syncing disks.


  檢視磁碟及分割槽資訊

[root@ip-192-168-31-161 ~]# fdisk -l

Disk /dev/xvda: 193.3 GB, 193273528320 bytes, 377487360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000da64d

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048   377487359   188742656   83  Linux

Disk /dev/mapper/docker-202:1-385876097-pool: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes


Disk /dev/xvdf: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8fb93abe

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdf1            2048     8388607     4193280   82  Linux swap / Solaris

 

  格式化swap分割槽:

[root@rhce /]# mkswap /dev/xvdf1 
Setting up swapspace version 1, size = 1060252 KiB
no label, UUID=39c73cf6-1848-4a78-83ec-35089f0eebcb

[root@ip-192-168-31-161 ~]# blkid

/dev/xvda1: LABEL="centos7_root" UUID="179c37d9-9ba3-47f2-ab50-cf76dec5ef8e" TYPE="xfs"
/dev/loop0: UUID="0c7e9760-c4df-4d5b-b0b6-b2f4487e757b" TYPE="ext4" 
/dev/mapper/docker-202:1-385876097-pool: UUID="0c7e9760-c4df-4d5b-b0b6-b2f4487e757b" TYPE="ext4" 
/dev/xvdf1: UUID="39c73cf6-1848-4a78-83ec-35089f0eebcb" TYPE="swap" 

 

  手工的啟動swap

[root@ip-192-168-31-161 ~]# swapon /dev/xvdf1

[root@ip-192-168-31-161 ~]# swapon -s

 

  將/dev/xvdf1新增/etc/fstab檔案,系統啟動自動載入swap

[root@ip-192-168-31-161 ~]# vi /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Tue Jul  8 16:48:19 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
LABEL=centos7_root /                       xfs     defaults        1 1
UUID=39c73cf6-1848-4a78-83ec-35089f0eebcb  swap     swap    defaults    0 0

 

相關文章