#1 楼
您始终可以创建交换文件来添加更多交换空间。这与交换分区在各个方面都不尽相同,但它既简单又动态。在以下步骤中,将
/media/fasthdd/swapfile.img
更改为您喜欢的任何内容。例如,它也可以是/swap.img
。 /media/fasthdd/swapfile.img
只是一个示例文件名。如果使用的是该目录,那么当然必须有一个目录/media/fasthdd/
,该目录具有足够的可用空间来存储新的交换文件。使用任何终端应用程序来运行以下步骤的命令。所有命令都应以root特权运行。为此,可以将
sudo
添加到每个命令的开头,也可以在运行命令之前运行sudo bash
。创建一个空文件:
此文件将包含虚拟内存内容,因此使文件足够满足您的需求。这将创建一个1GiB文件,这意味着系统需要+ 1GiB交换空间:
dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M
如果要制作3GiB文件,则将计数值更改为
count=3M
。有关更多信息,请参见man dd
。烘烤交换文件:
以下命令将在新的交换文件中创建“交换文件系统”。
mkswap /media/fasthdd/swapfile.img
引导时启动:
要确保在引导计算机时激活了新的交换空间,应将其添加到文件系统配置文件
/etc/fstab
中。将其添加到文件末尾。推荐这样做是因为其他文件系统(至少一个包含交换文件的文件系统)必须以读写模式安装,然后才能访问任何文件。# Add this line to /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
–本
13年5月17日在18:01
如何停用新创建的交换文件?
–里卡
17年1月26日在11:42
得到它的交换!
–里卡
17年1月26日在12:49
使用命令“ swapon -s”查看状态,而不是“ cat / proc / swaps”。然后,“ free”命令还会提供交换使用情况信息。
– Paul M
18-2-15在13:28
要编辑/ etc / fstab,请在命令行中尝试:sudo nano / etc / fstab。它比sudo gedit / etc / fstab更安全。
–t0m
18-3-23在7:21
#2 楼
用于增加交换分区大小的GUI方法增加交换大小的另一种方法是使用GParted分区编辑器。简而言之,您可以调整交换分区的大小,然后右键单击它并选择“ Swapon”。如果您在18.04之前的某些版本中运行Ubuntu live磁盘,则可能需要通过运行以下命令来安装gparted:
sudo apt-get update
sudo apt-get install gparted && sudo gparted
只有在未分配空间的情况下,您才必须能够增加交换分区的大小。交换分区之前或之后的空间。如果在交换分区的上方或下方没有未分配的空间(我们尝试通过交换分区添加的空间),那么我们必须调整分区的大小并获取该未分配的空间。
案例1-之前存在未分配的空间或在交换分区之后
在上面的屏幕截图中,我在linux-swap之前有11.4 GB的未分配空间,在交换分区之后有12.8 GB的空间。
>要调整大小,请右键单击交换分区(此处为/ dev / sda9),然后单击“调整大小/移动”选项。外观如下:
左右拖动滑块箭头,然后单击“调整大小/移动”按钮。案例2-分区之间有未分配空间
在上面的屏幕截图中,未分配空间是分区之间的大小。我们要添加到交换分区
/dev/sda
和dev/sda7
之间。要将未分配的空间从其中移到交换分区的正上方,我们必须遵循下面给出的简单步骤,对-在/ dev / sda8分区上单击,然后单击“调整大小/移动”选项。
单击并将滑块移到最左端,以便未分配空间刚好位于
/dev/sda8
分区的上方,而位于/dev/sda8
下方。单击那之后,单击“调整大小/移动”按钮。现在未分配空间位于交换分区的上方,就像案例1一样。现在跟随案例1。
案例3-如果扩展分区外部存在未分配的空间)
我在扩展分区的正下方有18 GB的未分配空间。将此空间添加到linux-swap分区(内部存在)扩展分区),我们必须按照以下步骤操作,
右键单击扩展分区并选择“调整大小/移动”选项,就像下面的屏幕截图
单击并拖动到最右端的箭头,然后单击“调整大小/移动”,这样18 GB的未分配空间将位于扩展分区的底部。我的底部已经有14.80 GB的未分配空间,现在将18.34 GB的空间与它结合使用,可以在扩展分区的底部创建未分配的空间(18.34 + 14.80 GB)。
现在一切都变了位于交换分区下方的空间,就像情况1,然后是情况1。
注意:在继续操作之前,请不要忘记备份所有重要数据。以上操作。
评论
GUI工具的绝佳指南,应按原样使用++。但是,也许应该对分区编辑可能涉及的风险提出一些警告。简单的MBR备份指南或指向该指南的链接将是一个很好的补充,错误的发生可能性不大,但成本可能会更高+正确地进行MBR备份不会消耗太多的时间或空间,并且可以节省很多工作,空间和时间。
– Sampo Sarrala-codidact.org
2013年12月12日0:18
不要忘了交换,右键单击交换分区一个交换
–user3752281
16 Dec 4'在17:59
#3 楼
如果要为交换文件保留空间,也可以使用fallocate
,而无需通过dd
用0填充文件。从
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
创建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
单线:
$ 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文件中,请注意prev swap的优先级现在为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
删除其中一个交换空间(例如原始的256Mb)
编辑
/etc/fstab
删除与要删除的交换有关的行。
删除该交换
删除并删除交换文件。
sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile
资源:
官方的Ubuntu交换常见问题页面
评论
一键合一法则,如果fs支持,则比dd好得多。这些单行代码仍然难以阅读,如果将其分解为实际命令,可能会更容易学习吗?
– Sampo Sarrala-codidact.org
16年1月24日在8:49
这是一个完美答案的示例,非常易于理解,易于实现。在ubuntu 18中像魅力一样运作
–DamiánRafael Lattenero
18-10-13在1:40
很好的回答,谢谢!只有sudo swapoff / mnt / swapfile && sudo rm / mnt / swapfile应该是sudo swapoff / swapfile && sudo rm / swapfile以匹配sudo swapon -s的结果
–斯科特
20-05-28在12:55
#4 楼
将大小调整为8GB# 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
评论
像魅力一样工作!
– Philipp
19年11月22日在16:11
不适用于我swapon:/ swapfile:不安全权限0644,建议使用0600。 swapon:/ swapfile:正在跳过-似乎有孔。
– Uri
20 Jan 27'at 7:42
@Uri在我看来,您好像需要执行chmod 0644 / swapfile
–马丁·托马
20 Jan 27 '20在8:33
也许。也许是因为我有ZFS ...
– Uri
20年1月28日在13:06
#5 楼
就我而言,我已经有一个交换文件,我认为它是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,如预期的那样:评论
请勿将rm命令与-r标志一起使用以删除单个文件。 rm -f应该绰绰有余。
– Sampo Sarrala-codidact.org
16年9月5日在20:05
@SampoSarrala感谢您的注意,我相应地更改了脚本。
–贝西
16-9-5 '20:58
@Besi谢谢!这正是我需要在Ubuntu 18.04 LTS系统上增加交换文件大小的原因。它完全按照您编写的方式工作。出色的帮助!!!
– B自由基
18-10-19在16:36
我喜欢此解决方案,因为它是命令行的,不需要重新分区,并且说明了如果交换文件已存在该怎么办。
–cxrodgers
19年8月16日在2:20
#6 楼
如何添加交换文件创建.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
格式化.img文件
sudo mkswap /swap.img
启用交换文件
sudo swapon /swap.img
将交换文件添加到fstab
将此行添加到fstab(/ etc / fstab):
/swap.img none swap sw 0 0
评论
我通常在交换时设置标签,例如“ mkswap -L SWAP2”。
– Paul M
18年2月15日在13:30
注意:此答案与Sampo Sarria接受/最受好评的答案相同,但上下文较少,并且swap img直接添加到root而不是/ media / fasthdd
–钢
18年11月6日在16:34
#7 楼
我有zfs,这对我有用。sudo zfs create -V 8G -b $(getconf PAGESIZE) -o logbias=throughput -o sync=always -o primarycache=metadata -o com.sun:auto-snapshot=false rpool/swap
sudo mkswap -f /dev/zvol/rpool/swap
sudo swapon /dev/zvol/rpool/swap
在
/etc/fstab
中,我添加了这一行(以制表符作为空格):/dev/zvol/rpool/swap none swap discard 0 0
#8 楼
如果要调整交换分区的大小并且不想创建交换文件,请选择“尝试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
它没有改变。要更改它,请执行以下操作:
禁用交换:
$ sudo swapoff /dev/sda3
重新创建交换:
$ sudo mkswap /dev/sda3
mkswap: /dev/sda3: warning: wiping old swap signature.
Setting up swapspace version 1, size = 10 GiB (10788794368 bytes)
no label, UUID=2e315546-04f7-4db6-8ca9-25f36f4ee960
启用交换:
$ sudo swapon /dev/sda3
检查其大小:
$ free -m
total used free shared buff/cache available
Mem: 15948 13008 301 670 2638 2006
Swap: 10288 0 10288
>检查交换分区的UUID:
blkid | grep swap
用正确的一个替换
/etc/fstab
文件中的UUID替换交换分区:user@pc:~$ blkid | grep swap
/dev/sda3: UUID="e434f979-8861-4bd3-888c-824de39d739a" TYPE="swap" PARTUUID="3ca528d4-db6c-4ed6-ae95-94729e3f609c"
user@pc:~$ cat /etc/fstab | grep swap
#UUID=add18f30-c662-4e5c-bfc7-62f4d012fb2e none swap sw 0 0
UUID=e434f979-8861-4bd3-888c-824de39d739a none swap sw 0 0
我刚刚评论了较旧的记录,并通过
blkid
命令输出使用正确的UUID创建了新记录。#9 楼
我发现以下视频非常有趣,并且是增加交换文件大小的直接方法。观看这段简短的视频教程:如何在Ubuntu Linux上增加交换| Linux手册(从该视频中),以下是增加交换空间的方法(如果您的系统使用的是swapfile):
首先检查linux系统的交换大小:
swapon --show
样本输出:
NAME TYPE SIZE USED PRIO
/swapfile file 797.2M 0B -2
此输出显示正在使用的交换大小和交换类型。这里交换类型是“文件”类型(也可以是分区类型)。Ubuntu默认使用
swapfile
,增加和减小它的大小是相当容易的。首先将其关闭:sudo swapoff /swapfile
现在,如果您运行
swapfile
,则关闭它后将不会显示任何内容。现在更改交换大小(我将其设置为4GB,n GB将其设为nG):
sudo fallocate -l 4G /swapfile
现在,如果您检查文件,则会看到文件大小增加了。要查看它:
ls -lh /swapfile
现在告诉Linux系统将此文件用作交换系统:
sudo mkswap /swapfile
这将清除旧的交换签名并使用新的交换签名。 />现在打开交换空间(因为我们最初关闭交换空间):
sudo swapon /swapfile
完成!
现在使用
swapon --show
或swapon --show
查看更改。
评论
请打开Gparted,然后发布您在此处看到的屏幕截图。如果交换分区可以扩展到相邻的未分配空间,请使用gparted。如果此类空间不可用,则可能是因为您的活动(引导)分区正在使用所有非交换空间,则gparted将不允许您减小活动分区的大小以创建未分配的空间。在这种情况下,您可以重新安装Ubuntu以创建更大的交换空间。