如何增加交换空间?

默认情况下,我在Ubuntu中有250MB的交换空间,我想将它扩展到更大的尺寸。 我需要800MB,我认为这足以打开几个应用程序,而不必达到当前的交换限制。 我希望有一个人可以帮助我。

您始终可以创建交换文件

添加更多交换空间。 这与交换分区不同(在每个方面),但它将是简单和动态的。

/media/fasthdd/swapfile.img更改为您喜欢的任何内容,例如它也可以是/swap.img/media/fasthdd/swapfile.img只是示例文件名,如果您正在使用此文件名,那么当然必须有目录/media/fasthdd/并为您的新交换文件提供足够的可用空间。

使用任何终端应用程序运行命令。 所有命令都应该以root权限运行为此,您可以在每个命令的开头添加sudo ,也可以在运行命令之前运行sudo bash

1.创建空文件:
此文件将包含虚拟内存内容,因此make file足以满足您的需求。 这个将创建1Gb文件,这意味着系统的+ 1Gb交换空间:

 dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M 

如果要制作3Gb文件,则将计数值更改为count=3M 。 有关更多信息,请参阅man dd

2.烘焙交换文件:
以下命令将在您的新交换文件中生成“交换文件系统”。

 mkswap /media/fasthdd/swapfile.img 

3.开机:
要确保在启动计算机时激活新的交换空间,应将其添加到文件系统配置文件/etc/fstab 。 将其添加到文件末尾,建议这样做,因为在我们可以访问任何文件之前,必须以读写模式安装其他文件系统( 至少包含交换文件的文件系统 )。

 # Add this line to /etc/fstab /media/fasthdd/swapfile.img swap swap sw 0 0 

4.激活:
您可以使用以下命令手动重启计算机或激活新的交换文件:

 swapon /media/fasthdd/swapfile.img 

如果一切顺利的话

你应该看到更多的交换空间可供使用。 您可以使用以下命令检查新交换并确认它处于活动状态:

 cat /proc/swaps Filename Type Size Used Priority /media/fasthdd/swapfile.img file 8388604 2724 -1 grep 'Swap' /proc/meminfo SwapCached: 4772 kB SwapTotal: 8388604 kB SwapFree: 8355812 kB 

用于增加交换分区大小的GUI方法

增加交换大小的另一种方法是使用GParted分区编辑器 。 简而言之,您调整交换分区的大小,然后右键单击它并选择“Swapon”。

启动gparted-live-disk或Ubuntu live磁盘更容易(因此将卸载所有/dev/sda分区)。 如果你运行Ubuntu live disk,那么你必须通过运行以下命令来安装gparted:

 sudo apt-get update sudo apt-get install gparted && sudo gparted 

只有在交换分区之前或之后存在未分配的空间时,才能增加交换分区的大小。 如果在交换分区之下或之上没有未分配的空间(我们尝试使用交换分区添加的空间),那么我们必须调整分区大小并获得未分配的空间。

情况1 – 交换分区之前或之后存在未分配的空间

GParted分区

在上面的屏幕截图中,我在linux-swap之前有11.4 GB的未分配空间,在交换分区之后有12.8 GB。

  • 要resize,请右键单击交换分区(此处为/ dev / sda9),然后单击“resize/移动”选项。 它看起来像这样:

    在此处输入图像描述

  • 向左或向右拖动滑块箭头,然后单击“resize/移动”按钮。 您的交换分区将resize。


案例2 – 分区之间的未分配空间

在此处输入图像描述

在上面的屏幕截图中,我们要添加到交换分区的未分配空间位于dev/sda7/dev/sda8 。要将未分配的空间从那个移动到交换分区之上,我们必须遵循下面给出的简单步骤,

  • 右键单击/ dev / sda8分区,然后单击“ resize/移动”选项。

    在此处输入图像描述

  • 单击并将滑块移动到最左侧,以便/dev/sda8分区正上方的未分配空间将位于/dev/sda8下方。之后单击“resize/移动”按钮。

  • 现在,未分配的空间就在交换分区的上方,就像案例1一样 。现在按照案例1进行操作。


情况3 – 如果未分配的空间存在于扩展分区之外)

在此处输入图像描述

我在扩展分区下方有一个18 GB的未分配空间。要将此空间添加到linux-swap分区(存在于扩展分区内),我们必须按照以下步骤操作,

  • 右键单击扩展分区并选择“ resize/移动”选项,它将如下面的屏幕截图所示

    在此处输入图像描述

  • 单击并向右拖动箭头,然后单击“ resize/移动” ,以便18 GB的未分配空间将位于扩展分区的底部。我的底部已存在14.80 GB的未分配空间,现在为18.34 GB结合使用它在扩展分区的底部创建(18.34 + 14.80 GB)的未分配空间。

  • 现在交换分区下方有一个未分配的空间,它将类似于案例1 ,然后是案例1。

注意:在继续执行上述操作之前,请不要忘记备份所有重要数据。

如果要为交换文件保留空间,也可以使用fallocate ,而无需使用0到dd填充文件。

MAN页面:

 DESCRIPTION fallocate is used to preallocate blocks to a file. For filesystems which support the fallocate system call, this is done quickly by allocating blocks and marking them as uninitialized, requiring no IO to the data blocks. This is much faster than creating a file by filling it with zeros. 

如果您已经定义了swap ,则可以将其删除或保留,并且* nix将对其进行管理(通过定义swap优先级更好)。 这可能很有用,如果你想在不同设备之间传播交换,驱动器(根据它们的速度或其他自定义需求,请参阅StackExchange上多个交换文件的目的是什么 )。

用于添加第二个交换文件的简单fallocate用法

检查交换情况:

 $ sudo swapon -s Filename Type Size Used Priority /swapfile file 262140 246276 -1 

创建4G交换文件

创建和激活交换文件的标准方法。

 $ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap 

让你的交换永久

/etc/fstab文件中添加一行,以便在下次重新启动时初始化swap(我们还在这里更新新创建的交换空间的优先级,并更新旧交换文件的优先级)

 # in your /ets/fstab file /swapfile none swap sw,pri=10 0 0 /swapfile_4G.img none swap sw,pri=20 0 0 

重启后检查交换情况:

 $ sudo swapon -s Filename Type Size Used Priority /swapfile file 262140 0 10 /swapfile_4G.img file 4194300 0 20 

删除其中一个交换空间(例如原始256Mb)

编辑/etc/fstab

删除与要删除的交换相关的行

删除该交换

删除并删除交换文件。

 sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile 

资源:

  • 官方的ubuntu交换FAQ页面

在我的情况下,我已经有一个交换文件,我认为是1GB但是当我更仔细地查看它只有256 MB大,当预编译我的rails资产时,服务器将耗尽内存

 Errno::ENOMEM: Cannot allocate memory - nodejs 

我创建了我的交换文件,如下所述: https : //stackoverflow.com/a/34885004/784318

现在,创建名为/swapfile的空文件的行如下:

 sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k 

现在要调整交换文件的大小,我必须执行以下简单步骤:

 # Reboot the system to be able to switch swapping off sudo reboot # Turn swap off sudo swapoff -a # Delete the `/swapfile` rm -f /swapfile # Recreate the swapfile but with double file size memory sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k # Turn swap back on sudo swapon -s # Change the permission to non-world-readable sudo chown root:root /swapfile sudo chmod 0600 /swapfile # Use the swap file sudo mkswap /swapfile sudo swapon /swapfile 

文件已创建(536870912 / 1024/1024 = 512 MB):

 ls -lia /swapfile 
 768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile 

使用free -m命令我可以看到该文件现在是512 MB,如预期的那样:

如何添加交换文件

  1. creat .img文件

    sudo dd if = / dev / zero of = / swap.img bs = 1M count = 1000

注意!:bs = 1M count = 1000 ==> 1GB

(bs * count =以兆字节为单位的大小)

其他例子:

sudo dd if = / dev / zero of = / swap.img bs = 10M count = 100

  1. 格式.img文件

    sudo mkswap /swap.img

  2. 启用交换文件

    sudo swapon /swap.img

  3. 将交换文件添加到fstab

将此行添加到fstab(/ etc / fstab)

 /swap.img none swap sw 0 0