当前位置: 首页 > 编程笔记 >

如何在Linux Ubuntu上增加交换空间?

翁阳曜
2023-03-14
本文向大家介绍如何在Linux Ubuntu上增加交换空间?,包括了如何在Linux Ubuntu上增加交换空间?的使用技巧和注意事项,需要的朋友参考一下

在本文中,我们将学习如何增加交换空间,这将解决应用程序中的内存错误。这将介绍如何将交换文件添加到Ubuntu Linux。

无论如何,建议使用旋转的硬盘驱动器进行交换,因为随着时间的推移SSD可能会导致硬件降级的问题。由于这个原因,请勿在提供SSD存储的云上启用交换。

什么是交换文件?

交换是操作系统可以存储临时数据的地方,因为它不再保存在RAM中。基本上,这将提高服务器在其工作内存期间可以保留的数据量的能力。硬盘驱动器上的交换空间将主要在RAM中有足够的空间来保存数据时使用。

写入磁盘的数据将比RAM慢,但是OS宁愿将正在运行的应用程序和数据保留在内存中,而将旧数据保留在交换中。

检查系统以获取交换信息

我们将首先检查已经具有交换空间的系统。我们可以有多个交换文件或分区。

请注意,通过使用以下命令,我们可以在系统中看到可用的交换–

# sudo swapon --show
[sudo] password for ubuntu:
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 1020M 0B -1

或者我们可以使用free -h命令显示交换空间。

$ free -h
total    used    free    shared    buffers    cached
Mem:     975M    254M    720M       4.8M       12M    133M
-/+ buffers/cache: 109M 866M
Swap:    1.0G    0B      1.0G

我们可以在计算机的输出中看到“交换”行。在这台机器上,我们分配了1.0 G交换空间。

检查硬盘分区上的可用空间

在Linux上分配交换空间的最常见方法是使用为交换分配的单独分区。我们无法更改不可能的分区方案,但我们可以轻松创建驻留在现有分区上的交换文件。

在执行此操作之前,我们将使用以下命令检查当前磁盘空间。

$ df -h
Filesystem    Size    Used    Avail    Use%    Mounted on
udev          473M       0    473M       0%     /dev
tmpfs          98M    4.9M     93M       5%     /run
/dev/dm-0      19G    3.1G     15G       18%    /
tmpfs         488M       0    488M       0%     /dev/shm
tmpfs         5.0M       0    5.0M       0%     /run/lock
tmpfs         488M       0    488M       0%     /sys/fs/cgroup
/dev/sda1     236M     51M    173M       23%    /boot
tmpfs          98M       0     98M       0%     /run/user/1000

/ dev下的设备是硬盘驱动器,这里我们有15 G的可用空间。

通常,为了良好启动,建议使用等于或大于计算机上RAM数量的内存。

创建交换文件

我们知道可用的硬盘空间,因此可以在文件系统中创建交换文件。另外,请注意,我们称为“ swapfile”的交换大小文件位于我们的根分区/目录中。

创建交换文件的最佳方法是使用名为“ fallocate”的文件,该命令将立即创建一个预分配大小的文件。

由于我们为计算机分配了1 GB RAM,因此我们将创建更多2 GB文件,以满足Linux的最低要求。

$ sudo fallocate -l 2G /swapfile

我们可以使用以下命令进行验证。

$ ls -lh /swapfile
-rw-r--r-- 1 root root 2.0G May 16 12:52 /swapfile

启用交换文件

我们已经创建了我们需求的交换文件,但是需要在该交换空间中将其打开。在打开交换文件之前,我们需要将文件的权限锁定为只能读取文件内容的root用户特权,这将阻止普通用户访问该文件。

我们可以使用下面的命令来做到这一点

$ sudo chmod 600 /swapfile

为了验证权限,我们可以使用以下命令查看

$ ls -lh /swapfile
-rw------- 1 root root 2.0G May 16 12:52 /swapfile

我们可以使用以下命令打开“交换文件”以用作交换空间

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=049218ad-50b4-4c78-98e4-7a1ea21ca77e

我们必须通过分配的空间量来验证交换是否可用。为此,我们可以使用以下命令–

$ sudo swapon --show
NAME       TYPE       SIZE    USED    PRIO
/dev/dm-1 partition   3068M    0B       -1

或使用以下命令–

$ free -h
total    used    free    shared    buffers    cached
Mem:     975M    255M    720M       4.8M       12M    133M
-/+ buffers/cache: 108M 867M
Swap:    3.0G    0B    3.0G

使交换文件永久存在

由于我们为当前会话更改了交换文件,因此我们还需要重新启动不会将交换设置保留为该永久设置的服务器。同样,我们可以自动将此交换文件设置添加到“ / etc / fstab”文件中。

$ sudo vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/server--vg-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=40f8b7fe-3195-414a-a0e4-a4443cceb78c /boot ext2 defaults 0 2
/dev/mapper/server--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
/swapfile none swap sw 0 0

我们可以使用上述步骤通过交换文件来增加交换空间,在该文件中我们可以解决与内存异常有关的问题。如果我们在任何Linux服务器上都用光了内存,那么以上内容将特别有用。

 类似资料:
  • 我可以在AWS Elastic Beanstek上配置Linux交换空间吗?(从2016年开始)的答案展示了如何使用配置文件为AWS Elastic Beanstek环境配置Linux交换空间。 但是,AWS 文档在 Linux 服务器上定制软件有以下说明:对于较新的 Amazon Linux 2 平台: 在 Amazon Linux 2 平台上,我们强烈建议您使用构建文件,而不是在 .eb 扩展

  • 问题内容: 这是第二简单的翻转效果,但我仍然找不到任何简单的解决方案。 想要的: 我有一个项目列表和一个相应的幻灯片(DIV)列表。加载后,第一个列表项应被选中(粗体),并且第一张幻灯片应可见。当用户将鼠标悬停在另一个列表项上时,应改为选择该列表项,并显示相应的幻灯片。 以下代码有效,但 很糟糕 。如何以一种优雅的方式获得这种行为?jQuery具有数十种动画效果和复杂的过渡效果,但是我没有想出这种

  • 问题内容: 根据官方的es文档,禁用交换是Elasticsearch可获得的最佳性能提升之一。 但是,事实证明配置起来很困难。我花了很多时间研究并尝试使用不同的方法来使用Kubernetes上的官方ES docker镜像禁用交换。 设置为环境变量时,映像无法启动,并显示错误:。正如文档所指出的那样,这是意料之中的。我什至用设置挂载了一个自定义,但是失败了。 在k8s上使用官方es映像时,建议的禁用

  • 我们使用apollo java客户端来使用graphQL服务,该服务在内部使用okhttp(3.12.11) 我们使用apollo客户端和okhttpclient的单例实例 我们面临的问题是上面的代码在多线程环境中运行,在可视化VM中,我可以看到okhttp只执行5个并行请求 我们没有使用aysnc功能。我们尝试了下面提到的方法,但没有一种有效 有人能告诉我如何提高okhttp中并行请求的限制吗?

  • 我有一个通过API rest POST请求上传文件的脚本。我只能上载大小小于1048576的文件 错误是 也许有人知道如何增加这个尺寸? 非常感谢。

  • 我想分配大约1GB的堆大小,但我似乎无法弄清楚。 如何做到这一点?