Linux系统中swap的重要性
Linux系统的Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
突破128M Swap限制
有些Linux安装手册上有这样的说明:Swap空间不能超过128M。为什么会有这种说法?在说明“128M”这个数字的来历之前,先给问题一个回答:现在根本不存在128M的限制!现在的限制是2G!
Linux系统中的Swap空间是分页的,每一页的大小和内存页的大小一样,方便Swap空间和内存之间的数据交换。旧版本的Linux实现Swap空间时,用Swap空间的第一页作为所有Swap空间页的一个“位映射”(Bit map)。这就是说第一页的每一位,都对应着一页Swap空间。如果这一位是1,表示此页Swap可用;如果是0,表示此页是坏块,不能使用。这么说来,第一个Swap映射位应该是0,因为,第一页Swap是映射页。另外,最后10个映射位也被占用,用来表示Swap的版本(原来的版本是Swap_space ,现在的版本是swapspace2)。那么,如果说一页的大小为s,这种Swap的实现方法共能管理“8 * ( s - 10 ) - 1”个Swap页。对于i386系统来说s=4096,则空间大小共为133890048,如果认为1 MB=2^20 Byte的话,大小正好为128M。
增加Swap空间
增加Swap空间,分以下几步:
1)成为超级用户
su - root
2)创建Swap分区
fdisk /dev/sda #在sda磁盘中分出2个G 作为swap分区
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) #分区类型
e #e为扩展分区
Selected partition 4 #默认编号为4 第四块分区
First cylinder (10330-26108, default 10330): #分区节点号 默认
Using default value 10330
Last cylinder, +cylinders or +size{K,M,G} (10330-26108, default 26108): +2G #2G空间
Partition number (1-4): t #切记选择分区类型
Partition number (1-4): L
Partition number (1-4): 4 #第四快分区类型
Hex code (type L to list codes): L
Hex code (type L to list codes): 82 #选项编号为82的Linux swap类型
Changed system type of partition 4 to 82 (Linux swap / Solaris)
Command (m for help): w # 保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
当保存后出现以下提醒时需要更新磁盘信息
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
以上为centos6 下提醒信息;使用以下命令更新磁盘信息 不然新创建的分区不会显示出来。
partx -a /dev/sda
在centos7中使用partprobe 跟新新加磁盘信息
partprobe
3)创建swap格式文件系统
mkswsp /dev/sda4 #对以上sda磁盘中新分区的sda4分区中创建swap文件系统
代码执行结果如下:
mkswap /dev/sda4
Setting up swapspace version 1, size = 2102572 KiB
no label, UUID=67d64cce-b14d-477f-a9e8-0d043d09d12a
4)mount(挂载)
1、
mkdir /mnt/swap #创建挂载点
2、使用blkid查看swap分区的uuid号 如下图 /dev/sda5 这里同/dev/sda4是一个道理
3、编辑挂载UUID
vim /etc/fstab
UUID=67d64cce-b14d-477f-a9e8-0d043d09d12a /mnt/swap swap defaults 0 0
5)对swap 生效
swapon -a
完成
取消swap虚拟内存方法
1、swapoff /dev/sdb1 (禁用swap)
2、删除配置vim /etc/fstab 中的swap文件
3、删除分区:fdisk /dev/sda5
希望对大家有所帮助。感兴趣的朋友可以继续参阅本博客号里其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对此Linux博客篇的支持!