swap分区迁移

swap分区,交换分区,在Windows里也有这个概念,不过它叫做虚拟内存,是在内存不够使用的时候,拿硬盘的一块区域充当内存的地方。
生产中,为了提高服务器性能,让swap分区当内存时候运行更快,需要将swap放到磁盘的外圈,或者让swap分区更大,需要加大swap……这里介绍一下新加硬盘,在上面设置swap分区,实现分区迁移。

一、迁移方法

我们的需求和实际环境不一样,所用的方法也不一样。总共swap添加也就
两种方法:

1、使用文件创建swap分区。
如果没有硬盘,或者没有额外的磁盘分区,我们也想要增大swap分区,那么就要使用到文件,将文件格式化为swap分区,最后加入到系统中
2、在硬盘上 创建分区,然后在上面格式化为swap分区,将其加入到系统中。

生产中,最好不要在文件上创建文件系统,因为此方法创建的swap文件系统,是依靠在已经存在的文件系统比如ext4,xfs,这样就经历了从 磁盘》分区》ext文件系统》swap文件系统,中间多了一个环节,当然性能将大大降低。
最好的是使用固态硬盘,不分区直接在上面进行创建swap文件系统,这样就更少了一个中间环节(磁盘》分区》文件系统),少了分区环节,这样讲更有效率。
不过没有最好,只有更好,如果有钱,可以直接加大内存,岂不是更好_

二、加入分区

本处的实验环境是CentOS7,在虚拟机中进行。

硬盘分区方式

加入硬盘,此处添加一个2G的硬盘如下图:

可是怎么让系统识别新加入的磁盘呢,重启可以尝试,但是在实际生产中能重启吗,重启一下可就是钱啊。。。
那肯定有办法了

[root@CentOS7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
#如果不行把host2改成host0或者是host1

此处我新加的硬盘变为sdc而不是sdb,是因为我本来有一块硬盘,我把他去掉了,换掉了一块2G的磁盘,然后这里就没了sdb,而成了sdc。

文件分区方式

创建文件系统的方式,只需要使用dd命令,在某个目录下生成一个文件

dd if=/dev/zero of=/swapfile bs=1024 count=1M

#该命令将创建一个大小为1GB,文件名为swapfile的Swap空间文件;
#if=/dev/zero 代表从zero这个设备生成以0组成的文件
#of=/swapfile参数指定了文件的创建位置和文件名;
#count=1M指定了文件的大小。

后面的命令和使用硬盘分区当做swap,类似,只不过将分区名改为文件名即可,这里以硬盘分区来进行继续实验

创建分区

[root@CentOS7 ~]# fdisk /dev/sdc      #fdisk 设备名
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 0xd5495c65.

Command (m for help): m         #m选项可以查看帮助
Command (m for help): n         #n选项创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p             #p为创建一个主分区
Partition number (1-4, default 1): 1     #分区编号,可以设1-4直接任意数字
First sector (2048-4194303, default 2048): #因为是虚拟机,不知道为什么扇区数不是从1开始的
#直接回车就是默认数字
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w   
#最后写入修改,如果没有w,则分区数据是在内存中的,而没有写入到磁盘中

最后发现创建分区成功,如下图:


三、创建交换分区

创建swap文件系统

分区创建好之后,接下来就是格式化了,格式化可以设置文件系统类型等一些文件系统属性。
正常情况下,创建文件系统,可以使用fdisk 里面的t选项,可是我在这里发现,不需要在fdisk 里面指定分区id。任意格式即可。因为下面的命令并不关心原来的分区格式

[root@CentOS7 ~]# mkswap /dev/sdc1 -L sdc1-swap #-L选项指定设备标签 
[root@CentOS7 ~]#blkid 显示设备分区情况

四、加入/etc/fstab启动文件

创建了swap分区之后就是挂载了,挂载要涉及到/etc/fstab文件,下面就修改/etc/fstab文件以挂载swap分区


#
# /etc/fstab
# Created by anaconda on Wed May 17 14:51:00 2017
#
# 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
#
UUID=1486344f-499d-4423-9a88-00c2bec6dc94 /                       xfs     defaults        0 0
UUID=e28148e7-17f5-4144-ba86-6b3852cce0d2 /app                    xfs     defaults        0 0
UUID=6f590141-f3bb-4cb9-8265-36d23a373415 /boot                   xfs     defaults        0 0
UUID=ef4b86a3-5732-4283-9635-0e69bc137773 swap                    swap    defaults        0 0
UUID=e1fd56d3-7f6f-455d-b20c-0f3df04eee06 swap                  swap    defaults    0 0 
#最下面根据分区的UUID号,加入这个分区的挂载选项(这个id号要和上上面图片的UUID号一致)
#这里可以用UUID,或者设备标签,或者设备名称,但是不建议使用设备名称,因为设备名称是不稳定的(有时候添加硬盘,名字会发生改变)
#defaults:默认挂载参数。rw, nosuid, dev, exec, auto, nouser, async
#第一个0代表转储频率:0:不做备份 1:每天转储 2:每隔一天转储
#第二个0代表是否自检,不自检 1:首先自检;一般只有rootfs才用1

五、激活交换空间

接着就是激活交换分区swap了
使用swapon命令。很容易理解是swap on的连写。

[root@CentOS7 ~]# swapon /dev/sdc1 #指定设备名来激活是swap的设备
或者是
[root@CentOS7 ~]# swapon -a#根据/etc/fstab文件,来激活fstab文件中所以可激活的swap分区

六、移除原来的交换空间

可以选择是否移除原来的交换空间,如果移除,则实现了swap分区迁移的目的。
要是不移除,因为有多个swap分区,操作系统怎么知道先使用哪个来作为交换分区呢,那就是优先级的问题了,可以使用swapon -p来指定优先级。数越大,代表优先级越高。
此时查看一下swap情况:

[root@CentOS7 ~]# swapon
NAME      TYPE      SIZE USED PRIO
/dev/sda5 partition   2G   0B   -1
/dev/sdc1 partition   2G   0B   -2   #sdc1优先级低,因为是后加入的。

下面我来禁用/dev/sda5

[root@CentOS7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 97.7G  0 part /
├─sda3   8:3    0 48.8G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]  #注意这里的[swap]
sdc      8:32   0    2G  0 disk 
└─sdc1   8:33   0    2G  0 part [SWAP]
sr0     11:0    1  7.7G  0 rom  
[root@CentOS7 ~]# swapoff /dev/sda5
[root@CentOS7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 97.7G  0 part /
├─sda3   8:3    0 48.8G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part    #发现已经没有swap了
sdc      8:32   0    2G  0 disk 
└─sdc1   8:33   0    2G  0 part [SWAP]
sr0     11:0    1  7.7G  0 rom  

这时已经禁用了/dev/sda5这个交换分区.
如果我sda5这个swap并不想禁用,我们来看一下启用的结果

[root@CentOS7 ~]# swapon /dev/sda5
[root@CentOS7 ~]# swapon
NAME      TYPE      SIZE USED PRIO
/dev/sda5 partition   2G   0B   -2
/dev/sdc1 partition   2G   0B   -1   #sdc1优先级高,因为是后加入的

因此我们可以禁用启用来进行设置swap优先级。
也可以在/etc/fstab中设置优先级,如下:

image.png

这时我们进行mount是不行的,因为他们已经被挂载。所以要先禁用再启用,则可更改优先级。

[root@CentOS7 ~]# swapoff /dev/sdc1
[root@CentOS7 ~]# swapon -a
[root@CentOS7 ~]# swapon 
NAME      TYPE      SIZE USED PRIO
/dev/sda5 partition   2G   0B   -1
/dev/sdc1 partition   2G   0B   10

发现已经成功更改了优先级。

六、测试

可以使用dd if=/dev/zero /dev/null bs=1G来测试,如果你的内存较大或者较小可以更改bs的值。(不要写的太大,可能会让你内存崩溃的,可以慢慢往上加)我指定1G,因为内存是1G的,就用了好多69M,如下:


在停止dd命令后,依然有占用,是因为内存是由缓存的,本来是0,现在是69.5M。发现上面的sd5并没有被使用,因为它的优先级不高,当sdc1不够使用时候,才使用它来当内存。

到此,测试结束,有错误,欢迎指正_

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 98,456评论 9 468
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,011评论 2 34
  • Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。 内核、shell和文件系统一起形成了基本...
    请爱护小动物阅读 2,509评论 0 22
  • 特别喜欢这句话,“你不是很好吗。”在这个浮躁的时代,觉得有时自己就像没有灵魂一样每天无神地走在大街上,突然间就忘了...
    yilian妮阅读 461评论 0 0
  • 之前就看到不少朋友在简叔这里码字了,因为听秦王商学院的课程,不禁仰慕起简叔来。2017年1月13日,下载...
    远草常青阅读 353评论 0 0