/media/fasthdd/swapfile.img
更改为任何你喜欢的名称。例如,它也可以是/swap.img
。 /media/fasthdd/swapfile.img
只是一个示例文件名。如果你使用这个文件名,那么当然必须有一个具有足够空闲空间的目录/media/fasthdd/
来存放你的新交换文件。sudo
,或者在运行命令之前运行sudo bash
。
创建一个空文件:
这个文件将包含虚拟内存的内容,所以要根据你的需求创建足够大的文件。下面的命令将创建一个1GiB的文件,也就是为系统提供+1GiB的交换空间:
dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M
如果你想创建一个3GiB的文件,只需要将count的值改为count=3M
。更多信息请参考man dd
。
制作交换文件系统:
下面的命令将在你的新交换文件中创建一个"交换文件系统"。
mkswap /media/fasthdd/swapfile.img
开机自动挂载:
为了确保在计算机启动时激活新的交换空间,你应该将其添加到文件系统配置文件/etc/fstab
中。将其添加到文件末尾是推荐的,因为其他文件系统(至少包含一个交换文件的文件系统)在我们访问任何文件之前必须以读写模式挂载。
# 在/etc/fstab中添加以下行
/media/fasthdd/swapfile.img swap swap sw 0 0
激活交换空间:
你可以重新启动计算机,或者使用以下命令手动激活新的交换文件:
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
。 - Bendd
将覆盖现有文件。如果您想替换现有的交换文件,则应首先使用 swapoff
命令禁用它。 - Sampo Sarrala - codidact.org/etc/fstab
,请在命令行中尝试以下操作:sudo nano /etc/fstab
。这比使用sudo gedit /etc/fstab
更安全。 - t0mswapon
对我因权限问题大声呵斥,但是通过 sudo chmod 0600 /media/fasthdd/swapfile.img
命令解决了这个问题。 - JBis/media/fasthdd
手动创建了一个文件,但是无论是在之前还是之后都没有任何线索! - user3769778swapon
骂了?我被mkswap
骂了! - Jashafstab(5)
里面不是说第二个字段应该是 none
吗? - Nick S# 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
# Set the correct permissions
sudo chmod 0600 /swapfile
sudo mkswap /swapfile # Set up a Linux swap area
sudo swapon /swapfile # Turn the swap on
grep Swap /proc/meminfo
将以下行添加到您的 /etc/fstab
文件的末尾:
/swapfile swap swap sw 0 0
swapon:/swapfile:不安全的权限 0644,建议使用0600。
swapon:/swapfile:跳过 - 看起来有空洞。
- Urichmod 0644 /swapfile
- Martin Thoma/etc/fstab
中添加以下内容来添加此交换文件:/swapfile swap swap sw 0 0
(正如Sampo Sarrala所提到的)。 - Mitrakov Artem/swapfile
仍然存在)。 - Garrett/etc/fstab
中注释掉另一个交换文件,请查看一下。 - Sir hennihau/swapfile
文件在哪里?万一我需要清理它呢? - Dimitris Sfounis/etc/fstab
文件中有一行内容:/dev/mapper/vgubuntu-swap_1 none swap sw 0 0
。我应该将这行注释掉然后再尝试这个解决方案吗? - Garrettgrep SwapTotal /proc/meminfo
时,返回的结果是SwapTotal: 0 kB
。我的/etc/fstab
文件当前的状态可以在这里找到。还有其他的想法吗? - Garrett/swapfile swap swap sw 0 0
的内容(请参考原始答案)。确保指向正确的文件。这个答案还告诉你如何创建这个文件。 - Sir hennihaufstab
中没有注释掉上面的交换行 (/dev/mapper/vgubuntu-swap_1 none swap sw 0 0
),它也可以正常工作。 - Garrett/swapfile none swap sw 0 0
比这个答案的建议/swapfile swap swap sw 0 0
更可取,因为man fstab
中提到(在/etc/fstab
行的第二个字段):“对于交换分区,此字段应指定为`none'。” - Jashacount=2
会有效吗? - alpermkswap: cannot open /swapfile: Permission denied
的问题,原来是我使用了 mkswap /swapfile
而不是 sudo mkswap /swapfile
(我忘记加上 sudo
)。 - linkerdd if=/dev/zero of=/swapfile bs=1M count=20000
在云主机上非常快速。 - Amanda增加交换分区大小的另一种方法是使用GParted分区编辑器。简而言之,您可以调整交换分区的大小,然后右键单击它并选择“启用交换”。
更容易的方法是启动gparted-live-disk或Ubuntu live disk(这样所有/dev/sda
分区将被卸载)。如果您在18.04之前的某些版本中运行Ubuntu live disk,则可能需要通过运行以下命令安装gparted:
sudo apt-get update
sudo apt-get install gparted && sudo gparted
dev/sda7
和/dev/sda8
。为了将未分配空间从那里移动到交换分区的正上方,我们需要按照以下简单步骤进行操作:
右键点击/dev/sda8分区,选择调整大小/移动选项。
点击并将滑块移动到极左侧,这样刚好位于/dev/sda8
分区上方的未分配空间将会出现在/dev/sda8
下方。然后点击调整大小/移动按钮。
现在,未分配空间就位于交换分区的正上方,就像情况1一样。现在按照情况1进行操作。
右键单击扩展分区,选择调整大小/移动选项,如下所示:
点击并拖动箭头到极右侧,然后点击调整大小/移动,这样18 GB的未分配空间将出现在扩展分区底部。我已经有14.80 GB的未分配空间位于底部,现在18.34 GB与其相结合,形成了(18.34+14.80 GB)的未分配空间。
现在,在交换分区下方有一个未分配空间,就像情况1一样,然后按照情况1进行操作。
注意:在执行上述操作之前,请不要忘记备份所有重要数据。
/
)的一侧移动到另一侧,类似于案例2? - zean_7swapon
之前,您可能需要运行sudo mkswap /dev/mapper...
。否则,操作系统仍然只会使用旧的交换空间量。 - Dan Dascalescu如果你想为交换文件保留空间,而无需通过 dd
填充文件,你也可以使用 fallocate
。
从 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.
$ 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
$ 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
更好,如果您的文件系统支持的话。那些一行代码仍然感觉难以阅读,如果这些能够分解为实际的命令,可能会更容易学习。 - Sampo Sarrala - codidact.orgsudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile
改为sudo swapoff /swapfile && sudo rm /swapfile
,以匹配sudo swapon -s
的结果。 - scottswapon
文档不鼓励使用fallocate。这里有一场讨论关于背后的原因。 - nocibambiswapon --show
示例输出:
NAME TYPE SIZE USED PRIO
/swapfile file 797.2M 0B -2
sudo swapoff /swapfile
swapon --show
,它不会显示任何内容,因为它已经关闭。sudo fallocate -l 4G /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
完成!
现在使用swapon --show
或free -h
来查看变化。
Errno::ENOMEM: Cannot allocate memory - nodejs
/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
ls -lia /swapfile
使用768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile
free -m
命令,我可以看到文件现在是512 MB,正如预期的那样。通过选择尝试Ubuntu启动Ubuntu安装媒体的实时会话
如果您使用Kubuntu、Lubuntu等,请打开GParted或其他分区管理器
通过缩小主分区(在我的情况下是/dev/sda2
)来调整其大小
调整交换分区的大小,使其变大
使用相同的上下文菜单和Swapon按钮启用交换空间
重新启动到常规的Ubuntu会话
打开终端并查看交换空间的大小是否已更改:
$ sudo swapon --show
[sudo] password for user:
NAME TYPE SIZE USED PRIO
/dev/sda3 partition 2G 129.3M -2
blkid | grep swap
返回的UUID发生了变化。所以我不得不将其更新为新的UUID。 - pumbosudo 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
sudo mkswap /swap.img
sudo swapon /swap.img
/swap.img none swap sw 0 0
gparted
。如果没有这样的空间,可能是因为您的活动(引导)分区正在使用所有非交换空间,那么gparted
将不允许您减小活动分区的大小以创建未分配空间。在这种情况下,您可以重新安装 Ubuntu 以创建更大的交换空间。 - H2ONaCl