Linux中创建swap分区
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,设置就算生效了。