欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux中创建swap分区

程序员文章站 2022-06-03 07:50:49
...

swap分区其实就是将一部分的硬盘化出来充当内存的功能!其速度介于硬盘与内存之间,如果内存不足的话,swap分区能起到不错的作用!这就是为什么要划分swap分区的原因。有同事问LINUX操作系统下如何创建swap分区? 其实不同的操作系统下,比如说RedHat在安装操作系统的过程中,就会有提示创建swap分区,而且swap分区的大小一般为内存的1-2倍为佳。但有的操作系统在安装的时候没有swap分区,必须安装完操作系统之后再配置,Ubuntu,CentOS系统,创建方法也很简单快捷。方法主要有两种:

方式一:通过创建分区的方式来创建

1). fdisk /dev/sdd          # 创建分区、分区ID为82。 其他常用的83:Linux,8e:Linux LVM

2). mkswap /dev/sdd         # 格式化为swap格式,这里假设硬盘分区为/dev/sdd,一般SAS硬盘sd开头

3). swapon /dev/sdd         # 启动并挂载swap分区,这样的话就算创建好了!

备注: 

1. 创建分区,选择分区号为82代表swap分区

1.创建分区
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (641-1566, default 641):
Using default value 641
Last cylinder or +size or +sizeM or +sizeK (641-890, default 890):
Using default value 890
Command (m for help): p
Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1           6       48163+  83  Linux
/dev/sda2               7         515     4088542+  83  Linux
/dev/sda3             516        1566     8442157+   5  Extended
/dev/sda5             891        1015     1004031   83  Linux
/dev/sda6            1016        1566     4425876   83  Linux
/dev/sda7             516         640     1004031   83  Linux
/dev/sda8             641         890     2008093+  83  Linux
 
2.指定分区类型为linux swap。这里的/dev/sda5就是我们要做swap的分区。
Command (m for help): t
Partition number (1-8): 5
Hex code (type L to list codes): 82
Command (m for help): p
Disk /dev/sda: 12.8 GB, 12884901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1           6       48163+  83  Linux
/dev/sda2               7         515     4088542+  83  Linux
/dev/sda3             516        1566     8442157+   5  Extended
/dev/sda5             516         640     1004031   82  Linux swap
/dev/sda6             641         890     2008093+  83  Linux
/dev/sda7             891        1015     1004031   83  Linux
/dev/sda8            1016        1566     4425876   83  Linux

2. 创建前后内存的变化,注意用free命令观察swap的情况

1. 创建前
# free –m
              total       used       free     shared    buffers     cached
Mem:          1006         84        922          0         11         38
-/+ buffers/cache:         35        971
Swap:            0          0          0

2. 创建后
# free  -m
			  total       used       free     shared    buffers     cached
Mem:          1006        994         12          0          4        929
-/+ buffers/cache:         60        946
Swap:          999          0        999

方式二:通过创建临时文件的方式来创建

1). dd if=/dev/zero of=/tmp/swap bs=100M count=100  # 以dd命令创建swapfile,这里假设1G

2). mkswap /tmp/swap                                # 以mkswap将swapfile格式化为swap格式

3). swapon /tmp/swap                                # 以swapon来启动档案,使之成为swap

备注:

1. 如果要删除该临时性文件

$ swapoff /tmp/swap    # 先用swapoff命令卸载该分区
$ rm -rf /tmp/swap     # 然后再删除就可以了

2. 如果提示不安全的权限 0644,建议使用 0600

$ chmod -R 0600 /tmp/swap

3. 可以通过swaplabel命令来修改该swapfile的label

$ swaplabel /tmp/swap 

4. 如果想一启动就生效,就必须修改/etc/fstab文件

/tmp/swap   swap  swap  defaults  0  0
5. 更改swap配置

Linux 会使用硬盘的一部分做为swap分区,用来进行进程调度--进程是正在运行的程序--把当前不用的进程调成'等待(standby)',甚至'睡眠(sleep)',一旦要用,再调成'活动(active)',睡眠的进程就躺到swap分区睡大觉,把内存空出来让给'活动'的进程。如果内存够大,应当告诉Linux不必太多的使用swap分区, 可以通过修改swappiness的数值。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。在ubuntu里面,默认设置swappiness这个值等于60。
  
如果内存较小,而进程调度频繁,硬盘的响动就会大了!
  
现在一般1个G的内存可修改为10, 2个G的可改为5, 甚至是0。具体这样做:

1.查看系统里面的swappiness,默认为60
$ cat /proc/sys/vm/swappiness
2.修改swappiness值为10
$ sudo sysctl vm.swappiness=10
3.在sysctl.conf文档的最后加上这样一行:
$ sudo vi /etc/sysctl.conf
vm.swappiness=10
4. 保存后执行source /etc/sysctl,设置就算生效了。