首页 » Linux » 创建SWAP分区和把SWAP分区作为普通分区来使用

创建SWAP分区和把SWAP分区作为普通分区来使用

 

想想以下情况:

  • 系统安装时,没有创建swap分区
  • 服务器无法添加物理内存,而且swap分区不够用

此时,我们就需要手动的创建或者增大swap分区了。注意,虚拟内存必须是独立的文件系统,那么我们也必须为其提供单独的分区。

swap分区可以建立两个或更多,但都是单独的分区,用free -m查看的时候是两个大小之和。

查看磁盘各个分区的uuid,可以用blkid命令就可以查看。

1、创建一个单独的分区

[root@localhost ~]# fdisk /dev/sdb        
Command (m for help): p                # 打印分区表
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         123      987966   83  Linux
 
Command (m for help): n                # 创建新分区
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (124-652, default 124): 
Using default value 124
Last cylinder or +size or +sizeM or +sizeK (124-652, default 652): +512M
 
Command (m for help): p
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         123      987966   83  Linux
/dev/sdb2             124         186      506047+  83  Linux
 
Command (m for help): t                # 调整分区类型
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)
 
Command (m for help): p
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         123      987966   83  Linux
/dev/sdb2             124         186      506047+  82  Linux swap / Solaris
 
Command (m for help): w                # 写入到磁盘
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe /dev/sdb

2、使用mkswap命令创建swap文件系统

[root@7-node4 /]# mkswap /dev/sda2
mkswap: /dev/sda2: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=3caab240-a7ca-4fb8-890f-3298b4598a24
[root@7-node4 /]# blkid
/dev/sda1: UUID="32035c69-fe91-4fff-b293-2d23138b906d" TYPE="xfs" 
/dev/sda2: UUID="3caab240-a7ca-4fb8-890f-3298b4598a24" TYPE="swap" 
/dev/sda3: UUID="84e75afb-5fff-4b50-a0cc-c1cc81d6ed84" TYPE="xfs" 
/dev/sr0: UUID="2015-12-09-23-14-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/loop0: UUID="4e303d62-de13-4aba-8363-c729b82fb496" TYPE="xfs" 
/dev/sdb: UUID="bea6399b-ffac-4f38-bfd1-3a0f7a3a23b3" TYPE="xfs" 
/dev/mapper/docker-8:3-33624628-pool: UUID="4e303d62-de13-4aba-8363-c729b82fb496" TYPE="xfs" 
[root@7-node4 /]#

 

3、使用swapon命令激活swap分区

# swapon [device]

# swapon -a        # 开启所有标识为swap的分区

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           122        103         18          0          1         33
-/+ buffers/cache:         68         53
Swap:         1027         70        957
[root@localhost ~]# swapon /dev/sdb2
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           122        103         18          0          1         33
-/+ buffers/cache:         68         53
Swap:         1521         70       1451

4、设置开机自动挂载

 

我们可以编辑/etc/fstab配置文件,在文件末尾增加:

1
/dev/sda5      swap       swap    defaults        0 0

二、把swap分区去掉,作为普通磁盘来挂载

1、umount掉swap分区

swapoff /dev/sda2

2、重新格式化/dev/sda2,因为swap文件系统不能直接用,所以需要格式化。

[root@7-node4 ~]# mkfs -t xfs -f /dev/sda2
meta-data=/dev/sda2              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@7-node4 ~]#

3、挂载mount /dev/sda2  /data

[root@7-node4 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        15G  9.2G  5.3G  64% /
devtmpfs        483M     0  483M   0% /dev
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           493M  6.8M  486M   2% /run
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/sdb        5.0G   33M  5.0G   1% /glusterfs-storage
/dev/sda1       597M  246M  351M  42% /boot
tmpfs            99M     0   99M   0% /run/user/0
/dev/sda2      1014M   33M  982M   4% /data
[root@7-node4 ~]#

4、可以写入/etc/fstab开机自动挂载

 

三、当系统没有多余的磁盘给我们添加swap时怎么做

当前系统上,没有任何磁盘空间可以创建分区了,但是又必须要扩展swap时,该如何是好呢?

在类Unix系统中,/dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))是一种伪设备,这种设备使得文件可以如同块设备一般被访问。在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载。

那么意味着我们可以通过创建本地回环设备,来模拟磁盘分区使用。那么下面就来看看如何使用文件来模拟swap分区。

1、查看系统swap分区

1
2
3
[root@localhost ~]# cat /proc/swaps 
Filename                Type        Size    Used    Priority
/dev/sda2                               partition    1052248 71776   -1

2、使用dd命令创建大文件

使用下面这条命令,就可以创建一个512M大小的文件,名为swapfile

1
2
3
4
[root@localhost ~]# dd if=/dev/zero of=swapfile bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 15.0813 seconds, 35.6 MB/s

3、使用mkswap命令创建swap文件系统

1
2
[root@localhost ~]# mkswap swapfile
Setting up swapspace version 1, size = 536866 kB

4、使用swapon命令启用swap分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/sda2                               partition    1052248 71792   -1
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           122        119          2          0          0         50
-/+ buffers/cache:         68         54
Swap:         1027         70        957
[root@localhost ~]# swapon swapfile
[root@localhost ~]# cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/sda2                               partition    1052248 71792   -1
/root/swapfile                          file      524280  0   -6
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           122        119          2          0          0         50
-/+ buffers/cache:         68         53
Swap:         1539         70       1469

5、使用swapoff关闭swap分区

1
[root@localhost ~]# swapoff swapfile

6、设置开机自动挂载swap分区

编辑/etc/fstab文件,写入下面这一行

1
echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab

总结:

1. dd if=/dev/zero of=/path/swapfile bs=1k count=2048000

2. mkswap /path/swapfile

3. swapon /path/swapfile

4. 修改/etc/fstab使其启动时自动mount:

在/etc/fstab中增加如下语句:

/path/swapfile  swap  swap    defaults 0 0

 

 

原文链接:创建SWAP分区和把SWAP分区作为普通分区来使用,转载请注明来源!

0