美文网首页
swap分区迁移

swap分区迁移

作者: ThinkerWalker | 来源:发表于2017-06-16 20:39 被阅读0次

    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不够使用时候,才使用它来当内存。

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

    相关文章

      网友评论

          本文标题:swap分区迁移

          本文链接:https://www.haomeiwen.com/subject/boapqxtx.html