Linux下swap(交换分区)的增删改 您所在的位置:网站首页 linux系统swap分区 Linux下swap(交换分区)的增删改

Linux下swap(交换分区)的增删改

2023-10-05 18:55| 来源: 网络整理| 查看: 265

swap介绍

Linux 的交换分区(swap),或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。交换分区的作用是,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,也就是说,当正常内存已经占满,不够用时,系统就会使用虚拟内存,以缓解服务器压力,避免崩溃,增强稳定性。但是其速度有限,常只是作为突发情况的缓冲。

使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降低操作系统的运行速率,这也是使用 swap 交换分区最大的限制。

使用 swap 必须要知道它存在的缺点,以便判断何时使用交换分区。使用交换分区的好处当然就是可以一定程度的缓解内存空间紧张的问题。然而,由于 CPU 所读取的数据都来自于内存,交换分区则是存放在磁盘上的,磁盘的速度和内存比较起来慢了好几个数量级,如果不停的读写 swap,那么对系统的性能肯定有影响,尤其是当系统内存很吃紧的时候,读写 swap 空间发生的频率会很高,导致系统运行很慢。

如果使用是桌面系统,由于系统会自动将不常用的内存数据移到 swap 上,对桌面程序来说,有可能会导致最小化一个程序后,再打开时小卡一下,因为需要将 swap 上的数据重新加载到内存中来。在部署了数据库的系统上,也不建议用交换分区,因为频繁地在内存和磁盘上相互导数据会影响数据库性能。

很多时候我们安装系统的时候并没有考虑到,并不会划分swap分区,而当需要用到时,可以通过命令手动增加,删除,修改swap虚拟内存。下面就详细记录介绍一下如何操作虚拟内存。

新增swap有两种方式: 磁盘上新增一个分区(lvm分区或直接分区),用分区作为swap。 磁盘上新增一个固定大小的文件,用文件作为swap。

推荐: 使用分区方式,新增一个分区。分区类型fdisk下为82,gdisk下为8200,partep分区标记没有定义swap,其实分区后不更改分区类型也行测试也可以用,但为了在分区工具下方便查看最好还是把分区类型改成swap对应的分区类型,本人理解分区类型就是分区软件下用来描述分区所要承载的文件系统的类型,比如分区类型为83表示为linxu分区,用于格式化成ext3 ext4等linux文件系统,分区创建的方法这里就不写了前面有分区创建的方法。

 准备环境

[root@localhost ~] # cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@localhost ~] # uname -r 3.10.0-862.el7.x86_64 [root@localhost ~] # free -m total        used        free shared  buff /cache available Mem:           3934         121        3474          11         338        3545 Swap:             0           0           0 [root@localhost ~] # df -Th Filesystem     Type      Size  Used Avail Use% Mounted on /dev/sda2 xfs        19G  1.1G   18G   6% / devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm tmpfs          tmpfs     2.0G   12M  2.0G   1% /run tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup /dev/sda1 xfs       297M  107M  191M  36% /boot tmpfs          tmpfs     394M     0  394M   0% /run/user/0 [root@localhost ~] # blkid /dev/sda1 : UUID= "0705b568-de2f-40dc-940f-ea2c91b3f059" TYPE= "xfs" /dev/sda2 : UUID= "57859f61-6df4-40dc-8da5-6998dc7df3a7" TYPE= "xfs" /dev/sr0 : UUID= "2018-05-03-21-07-04-00" LABEL= "CentOS 7 x86_64" TYPE= "iso9660" PTTYPE= "dos" [root@localhost ~] # ls -l /dev/sd[a-z] brw-rw----. 1 root disk 8, 0 Feb 25 10:26 /dev/sda 新增swap分区操作

  VMware Workstation添加一块硬盘

在"我的计算机"中选择该主机--右键--设置--添加--硬盘--下一步--下一步--下一步--完成 添加硬盘步骤。

 命令:echo "- - -" > /sys/class/scsi_host/host0/scan  1.新增添磁盘,还不能直接显示出来,要想出现要对磁盘进行扫描(实际生产环境中不需要,都是热插拔技术): 2.假如 fdisk -l 还是未发现新硬盘,则将上面命令中的host0,替换为host1,host2,....看看; 3.我们再查看系统日志/var/log/messages,发现对SCSI设备进行了一次重新扫描,用fdisk -l也看到了新增加的磁盘了。 查看新增的硬盘 [root@localhost ~] # echo "- - -" > /sys/class/scsi_host/host0/scan [root@localhost ~] # ls -l /dev/sd[a-z] brw-rw----. 1 root disk 8,  0 Feb 25 10:26 /dev/sda brw-rw----. 1 root disk 8, 16 Feb 25 10:51 /dev/sdb [root@localhost ~] # fdisk -l Disk /dev/sda : 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical /physical ): 512 bytes / 512 bytes I /O size (minimum /optimal ): 512 bytes / 512 bytes Disk label type : dos Disk identifier: 0x00094eb7 Device Boot      Start         End      Blocks   Id  System /dev/sda1 *        2048      616447      307200   83  Linux /dev/sda2 616448    40462335    19922944   83  Linux Disk /dev/sdb : 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical /physical ): 512 bytes / 512 bytes I /O size (minimum /optimal ): 512 bytes / 512 bytes 方式一:在/dev/sdb磁盘上使用lvm2创建分区

(lvm分区参考前文:Linux下使用lvm管理)

安装lvm2 [root@localhost ~] # yum install lvm2 -y [root@localhost ~] # rpm -qa |grep lvm2 lvm2-libs-2.02.187-6.el7_9.5.x86_64 lvm2-2.02.187-6.el7_9.5.x86_64 方式二:在/dev/sdb磁盘上直接创建物理分区 [root@localhost ~] # fdisk /dev/sdb 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 0x3d895f28. Command (m for help): n   // 创建分区 Partition type : p   primary (0 primary, 0 extended, 4 free ) e   extended Select (default p):    // 回车,默认p为主分区,e为扩展分区 Using default response p Partition number (1-4, default 1):    // 回车,默认分区号 First sector (2048-41943039, default 2048):    // 回车(默认) Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +8G   // 新增分区大小 Partition 1 of type Linux and of size 8 GiB is set Command (m for help): m   // 显示相关命令 Command action a   toggle a bootable flag b   edit bsd disklabel c   toggle the dos compatibility flag d   delete a partition g   create a new empty GPT partition table G   create an IRIX (SGI) partition table l   list known partition types m   print this menu n   add a new partition o   create a new empty DOS partition table p   print the partition table q   quit without saving changes s   create a new empty Sun disklabel t   change a partition's system id u   change display /entry units v verify the partition table w   write table to disk and exit x   extra functionality (experts only) Command (m for help): p   // 显示信息 Disk /dev/sdb : 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical /physical ): 512 bytes / 512 bytes I /O size (minimum /optimal ): 512 bytes / 512 bytes Disk label type : dos Disk identifier: 0x3d895f28 Device Boot      Start         End      Blocks   Id  System /dev/sdb1 2048    16779263     8388608   83  Linux Command (m for help): l   // 列出所有类型 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        1  FAT12           27  Hidden NTFS Win 82  Linux swap / 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 hidden C:  c6  DRDOS /sec (FAT- 4  FAT16 > /etc/fstab 重新生成挂载单元 /etc/fstab [root@localhost ~] # systemctl daemon-reload 删除swap交换文件操作 查看swap [root@localhost ~] # cat /proc/swaps Filename                Type        Size    Used    Priority /swapfile file 7999996 0   -1 [root@localhost ~] # free -m total        used        free shared  buff /cache available Mem:           3934         110        3687          11         136        3612 Swap:          7812           0        7812 禁用交换文件  [root@localhost ~] # swapoff -v /swapfile swapoff /swapfile 重新生成挂载单元 /etc/fstab [root@localhost ~] # systemctl daemon-reload 删除实际文件 [root@localhost ~] # rm /swapfile -rf 注释掉或删除 /etc/fstab 中的分区信息 [root@localhost ~] # sed -i_bak 's/^[^#].*swap*/#&/g' /etc/fstab [root@localhost ~] # sed -i_bak '/swap/d' /etc/fstab 再次检查swap [root@localhost ~] # free -m total        used        free shared  buff /cache available Mem:           3934         104        3693          11         136        3618 Swap:             0           0           0 [root@localhost ~] # cat /proc/swaps Filename                Type        Size    Used    Priority

附:在lvm2上使用swap【官方文档】



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有