linux添加swap交换空间(虚拟内存)

目录

一、添加虚拟内存

方式一:通过swap文件创建虚拟内存

方式二:通过分区创建

二、取消虚拟内存

        1、以swap文件创建虚拟内存的删除方式

        2、通过分区创建虚拟内存的删除方式

三、swap分区扩容

方式一:通过swap文件扩容

方式二:通过分区扩容


一、添加虚拟内存

方式一:通过swap文件创建虚拟内存

## 选择路径

cd /var

dd if=/dev/zero of=swapfile bs=1M count=1024
  1. ## 为了安全建议将交换分区文件权限设为 0600 或 0644
chmod 0600 swapfile

## 将该文件设为 Swap 文件(格式化)

mkswap swapfile

## 激活swap文件(启用虚拟内存)

swapon swapfile

## 检测swap是否正确

swapon -s

## 添加开机自动挂载

vi /etc/fstab
#在文本内添加
/var/swapfile swap swap defaults 0 0

#或者直接echo写入
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

​

## 设置虚存用度(默认是30,一般不建议超过 60,值越高,使用虚存的优先级越高)

vim /etc/sysctl.d/swappiness.conf

vm.swappiness = 60

## 使配置生效

sysctl -p /etc/sysctl.d/swappiness.conf

方式二:通过分区创建

## 新增一块硬盘

[root@localhost ~]# fdisk -l

........

磁盘 /dev/sdc:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

## 给新增的磁盘分区

[root@localhost ~]# fdisk /dev/sdc


命令(输入 m 获取帮助):p  #查看当前有哪些分区

磁盘 /dev/sdc:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16721e57

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n #创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-8388607,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-8388607,默认为 8388607):
将使用默认值 8388607
分区 1 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):t   #选择分区,因为只有分区1,所以默认是分区1
已选择分区 1
Hex 代码(输入 L 列出所有代码):L   #查看所有分区格式

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
1e  隐藏的 W95 FAT1 80  旧 Minix
Hex 代码(输入 L 列出所有代码):82  #选择格式为swap
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

## 创建卷组,把刚分区的/dev/sdc1加入到swapfile卷

[root@localhost ~]# vgcreate swapfile /dev/sdc1  ## 卷名称为swapfile
  Physical volume "/dev/sdc1" successfully created.
  Volume group "swapfile" successfully created


[root@localhost ~]# vgdisplay   #查看卷组
  --- Volume group ---
  VG Name               swapfile
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <4.00 GiB
  PE Size               4.00 MiB
  Total PE              1023
  Alloc PE / Size       0 / 0
  Free  PE / Size       1023 / <4.00 GiB
  VG UUID               wtrefp-Vkrj-TCZn-buFx-p2cS-H85D-n7dDnX

## 创建逻辑卷,逻辑卷名为flie1,-l +100%free把卷组中全部空闲的空间加入到逻辑卷,也可以指定大小  -L xxG

[root@localhost ~]# lvcreate -l +100%free -n file1 swapfile
  Logical volume "file1" created.
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/swapfile/file1
  LV Name                file1
  VG Name                swapfile
  LV UUID                8upLCd-N8Kw-E8PO-1crx-XHHx-8fbe-F7z068
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2025-04-01 16:44:02 +0800
  LV Status              available
  # open                 0
  LV Size                <4.00 GiB
  Current LE             1023
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

## 格式化分区并启用

[root@localhost ~]# mkswap /dev/swapfile/file1
正在设置交换空间版本 1,大小 = 4190204 KiB
无标签,UUID=5eab3cc5-13b8-4983-9e45-6118a7ea2f33
[root@localhost ~]# swapon /dev/swapfile/file1

[root@localhost ~]# free -h   ## 可以看到swap分区已经被使用了
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.8G        398M         29M        1.5G        1.6G
Swap:          4.0G          0B        4.0G

##设置开机自启

[root@localhost ~]# vim /etc/fstab

##新增
/dev/swapfile/file1 swap                    swap    defaults        0 0

二、取消虚拟内存

1、以swap文件创建虚拟内存的删除方式

##首先需要将swap文件取消使用(操作前需谨慎,物理内存不足会导致内存溢出或者杀掉服务进程)

swapoff /var/swapfile

## 删除swap文件

rm -f /var/swapfile

## 将fstab文件里的自动挂载swap的配置删除

sed -i '/\/var\/swapfile swap swap defaults 0 0/s/^/#/' /etc/fstab

2、通过分区创建虚拟内存的删除方式

##首先需要将swap文件取消使用(操作前需谨慎,物理内存不足会导致内存溢出或者杀掉服务进程)

[root@localhost ~]# swapoff /dev/swapfile/file1

## 删除逻辑卷、卷组,物理卷

[root@localhost ~]# vgdisplay   #查看卷组
  --- Volume group ---
  VG Name               swapfile
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <4.00 GiB
  PE Size               4.00 MiB
  Total PE              1023
  Alloc PE / Size       1023 / <4.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               PhPO2l-qjNF-8Z4e-MB1X-HKgQ-N6iQ-tpJ2M2

[root@localhost ~]# lvremove /dev/swapfile/file1  # 删除逻辑卷
Do you really want to remove active logical volume swapfile/file1? [y/n]: y
  Logical volume "file1" successfully removed

[root@localhost ~]# sudo vgremove swapfile  # 删除卷组
  Volume group "swapfile" successfully removed

[root@localhost ~]# pvdisplay
"/dev/sdc1" is a new physical volume of "<4.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name
  PV Size               <4.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ZIpqID-CjND-9C4c-EntM-1h3Z-xEPO-m80cC8

[root@localhost ~]# sudo pvremove /dev/sdc1 # 删除物理卷
  Labels on physical volume "/dev/sdc1" successfully wiped.

## 格式化磁盘分区

[root@localhost ~]# fdisk /dev/sdc  
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):p 

磁盘 /dev/sdc:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16721e57

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     8388607     4193280   82  Linux swap / Solaris

命令(输入 m 获取帮助):d #删除分区
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdc:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16721e57

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

 ## 将fstab文件里的自动挂载swap的配置删除

sed -i '/\/dev\/swapfile\/file1 swap swap defaults 0 0/s/^/#/' /etc/fstab

三、swap分区扩容

方式一:通过swap文件扩容

ps:如果采用传统分区创建的swap可以扩容,具体方法参考添加虚拟内存的方式一

ps:如果已经用swap文件创建了虚拟内存,则无法通过该方法扩容,可以删除掉原有的swap文件,重新创建一个更大的。

方式二:通过分区扩容

## 目前已经有了swap分区的逻辑卷

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                X5ErhM-ifM1-hQEG-C5m7-OrRQ-k4MP-lz56rw
  LV Write Access        read/write
  LV Creation host, time localhost, 2023-02-22 10:24:20 +0800
  LV Status              available
  # open                 0
  LV Size                2.12 GiB
  Current LE             544
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

 ## 新增一块磁盘并分区

[root@localhost ~]# fdisk /dev/sdc


命令(输入 m 获取帮助):p  #查看当前有哪些分区

磁盘 /dev/sdc:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16721e57

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n #创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-8388607,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-8388607,默认为 8388607):
将使用默认值 8388607
分区 1 已设置为 Linux 类型,大小设为 4 GiB

命令(输入 m 获取帮助):t   #选择分区,因为只有分区1,所以默认是分区1
已选择分区 1
Hex 代码(输入 L 列出所有代码):L   #查看所有分区格式

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
1e  隐藏的 W95 FAT1 80  旧 Minix
Hex 代码(输入 L 列出所有代码):82  #选择格式为swap
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

## 创建物理卷

[root@localhost ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.

## 扩展到centos卷组

[root@localhost ~]# vgextend centos /dev/sdc1
  Volume group "centos" successfully extended

## 给卷扩容

[root@localhost ~]# lvresize -l +100%free /dev/mapper/centos-swap
  Size of logical volume centos/swap changed from 2.12 GiB (544 extents) to 6.12 GiB (1567 extents).
  Logical volume centos/swap successfully resized.

## 需要取消交换空间的时候并格式化后重新挂载
 

[root@localhost ~]# swapoff /dev/mapper/centos-swap
[root@localhost ~]# mkswap /dev/mapper/centos-swap
[root@localhost ~]# swapon /dev/mapper/centos-swap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值