Answers:
添加更多的交换空间。(在各个方面)这与交换分区不同(但是在每个方面),它都是容易且动态的。
更改/media/fasthdd/swapfile.img
为您喜欢的任何内容,例如也可以/swap.img
。/media/fasthdd/swapfile.img
只是示例文件名,如果您正在使用此文件名,则当然必须有目录/media/fasthdd/
,该目录具有足够的可用空间来存储新的交换文件。
使用任何终端应用程序来运行命令。所有命令都应以root特权运行,为此,您可以添加sudo
到每个命令的开头,也可以sudo bash
在运行命令之前运行。
1.创建一个空文件:
此文件将包含虚拟内存内容,因此,使文件足够大以满足您的需要。这将创建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
/etc/fstab
:尝试这在命令行sudo gedit /etc/fstab
增加交换大小的另一种方法是使用GParted分区编辑器。简而言之,您可以调整交换分区的大小,然后右键单击它并选择“ Swapon”。
引导gparted-live-disk或Ubuntu live磁盘更容易(以便所有/dev/sda
分区都将被卸载)。如果运行Ubuntu Live磁盘,则必须通过运行以下命令来安装gparted:
sudo apt-get update
sudo apt-get install gparted && sudo gparted
仅当交换分区之前或之后存在未分配的空间时,才必须能够增加交换分区的大小。如果在交换分区的上方或下方没有未分配的空间(我们尝试通过交换分区添加的空间),那么我们必须调整分区的大小并获取该未分配的空间。
在上面的屏幕截图中,我在linux-swap之前有11.4 GB的未分配空间,在swap分区后有12.8 GB的空间。
要调整大小,请右键单击交换分区(此处为/ dev / sda9),然后单击“调整大小/移动”选项。它看起来像这样:
向左或向右拖动滑块箭头,然后单击“调整大小/移动”按钮。您的交换分区将被调整大小。
在上面的屏幕快照中,我们要添加到交换分区的未分配空间在dev/sda7
和之间/dev/sda8
。要将未分配空间从该空间移到交换分区的正上方,我们必须按照以下简单步骤操作,
右键单击/ dev / sda8分区,然后单击“ 调整大小/移动”选项。
单击并将滑块移到最左端,这样/dev/sda8
分区上方的未分配空间就会出现在下方/dev/sda8
。之后,单击“调整大小/移动”按钮。
现在未分配空间就在交换分区的上方,就像案例1一样,现在跟案例1一样。
我在扩展分区的下方有一个18 GB的未分配空间。要将此空间添加到linux-swap分区(扩展分区中存在),我们必须执行以下步骤,
右键单击扩展分区,然后选择“ 调整大小/移动”选项,如下图所示
单击并拖动箭头到最右端,然后单击“ 调整大小/移动”,以便扩展分区的底部出现18 GB的未分配空间。底部已经有14.80 GB的未分配空间,现在是18.34 GB。 GB与之结合,在扩展分区的底部创建未分配的空间(18.34 + 14.80 GB)。
现在交换分区的下面有一个未分配的空间,就像情况1,然后是情况1。
注意:在进行上述操作之前,请不要忘记备份所有重要数据。
fallocate
如果要为交换文件保留空间,也可以使用,而无需用0到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将对其进行管理(通过定义swapon
优先级,甚至更好)。如果您想在不同设备,驱动器之间分散交换空间(根据它们的速度或其他自定义需求,请参阅StackExchange上多个交换文件的用途),这可能很有用。
fallocate
添加第二个交换文件的简单用法$ sudo swapon -s
Filename Type Size Used Priority
/swapfile file 262140 246276 -1
创建和激活交换文件的标准方法。
$ 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
文件中添加一行,以便交换将在下次重新启动时初始化(我们还将在此处更新新创建的交换空间的优先级,并更新旧交换文件的优先级)。
在/ etc / fstab文件中,请注意,上一次交换的优先级现在为10。
/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
/etc/fstab
删除与要删除的交换有关的行。
删除并删除交换文件。
sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile
fallocate
,比dd
您的fs支持好得多。这些单行代码仍然很难阅读,如果将它们分解为实际命令,可能会更容易学习吗?
以我为例,我已经有一个交换文件,我认为它是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,与预期的一样:
如何添加交换文件
创建.img文件
须藤dd if = / dev / zero of = / swap.img bs = 1M count = 1000
注意!:bs = 1M count = 1000 ==> 1GB
(bs *计数=大小(以兆字节为单位))
其他例子:
须藤dd if = / dev / zero of = / swap.img bs = 10M count = 100
格式.img文件
须藤mkswap /swap.img
启用交换文件
sudo swapon /swap.img
将交换文件添加到fstab
将此行添加到您的fstab(/ etc / fstab)
/swap.img none swap sw 0 0
# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a
# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
sudo mkswap /swapfile # Set up a Linux swap area
sudo swapon /swapfile # Turn the swap on
grep Swap /proc/meminfo