Raspberry Pi只有256 MB的RAM,所以我想使用交换空间(在SD卡或连接的USB存储设备上)。如何设置?

评论

在Pi(及类似设备)上的交换可能会非常缓慢,并且任何实际上大量使用交换而最终导致的操作实际上都会使系统陷入瘫痪。小心!

您知道USB RAM驱动器(不是闪存或SSD,而是实际以USB速度运行的易失性ram芯片)会是一个很好的选择。
@Tibor问题是“如何设置交换空间?”我认为,正确的答案应该描述如何做到,并应引起注意,并警告不要滥用。您的答案只是表明,“最受欢迎”答案仅告诉您为什么永远不应该“完全做到这一点”(这是愚蠢的,因为有使用它的正确方法,而且实际上很有用)。 >
在此页面上,大约有一百万个警告禁止将树莓派与swap一起使用,但是如果您需要构建一次,这是不可避免的。

@Archonic-+1。有时我的内存不足,无法编译文件。具有低互换性的小交换文件将是对当前情况的一种改进。

#1 楼

Raspbian使用dphys-swapfile,这是一个基于交换文件的解决方案,而不是基于“标准”交换分区的解决方案。更改交换的大小要容易得多。

配置文件是:

/etc/dphys-swapfile 


内容非常简单。默认情况下,我的Raspbian具有100MB的交换空间:

CONF_SWAPSIZE=100


如果要更改大小,则需要修改数字并重新启动dphys-swapfile:
/etc/init.d/dphys-swapfile restart


编辑:在Raspbian上,默认位置为/ var / swap,(当然)位于SD卡上。我认为这是一个坏主意,因此我想指出,/ etc / dphys-swapfile也可以具有以下选项:
CONF_SWAPFILE = / media / btsync / swapfile

我唯一的问题是,USB存储设备是自动安装的,因此在这里有潜在的竞争(自动安装与swapon)

评论


这是正确的答案。没有其他答案提到dphys-swapfile。

–野口健二
2014年11月18日在6:05

我认为这个答案是正确的。最近才了解到所有这些困难的方法,您的答案可以为我节省很多时间。 ;-)

–Drachenfels
2015年2月17日在22:08

您能否阐明为什么使用/ var / swap是一个坏主意?

– Andrey Portnoy
18年5月21日在0:24

安装R软件包,该软件包之前由于“系统调用失败而无法分配内存”而失败:设置CONF_SWAPSIZE = 1024。少是不够的。

–vertikalist
19 Mar 15 '19在10:29

由于这仅偶尔使用一次,因此单独的交换文件是更好的恕我直言的解决方案。查看user13的答案

–马可·苏拉(Marco Sulla)
3月5日15:51

#2 楼

您可以非常简单地设置交换空间。例如,如果您的USB驱动器是/dev/sdx,则可以使用(必须是root用户):

$ mkswap /dev/sdx
$ swapon /dev/sdx


请注意,这将使用整个设备,可能会丢失所有已存在的数据。 >当不再需要交换文件时(例如,如果要弹出USB驱动器),必须使用loop。不这样做可能会导致系统崩溃。

但是您应该小心。 SD卡的读/写限制有限,会缩短其使用寿命。如果您使用外部硬盘驱动器,则应该可以,但是会很慢。

评论


为什么要添加回送?当然没有必要吗?

– Popey
2012年6月12日21:47

您说得对,事实并非如此。我编辑了答案以反映这一点。

–user13
2012年6月12日在21:49

我认为您应该更改此设置,以避免用户复制和粘贴并在其根分区上意外运行mkswap。我认为sdx是个好习惯。

–活动
2012年6月12日23:21

选择启用SWAP的用户可能会对调整内核交换能力感兴趣。

–earthmeLon
2012年7月15日在8:25

@earthmelon Raspbian Jessie默认情况下具有swappiness 1。

–kaay
16年3月11日在13:40

#3 楼

完全不要执行此操作。

您不应该在Raspberry Pi上启用交换功能。 10类SDHC卡,速度太慢。此外,您还会缩短SD卡的使用寿命。

在任何基于闪存的存储设备(SD卡,SDD,USB拇指驱动器)上,当大容量存储组出现大范围停顿时,

可能的例外:


如果连接(磁性)硬盘驱动器(通过USB-SATA或USB-IDE适配器)
如果您使用ZRAM或类似的东西


评论


毫无疑问,更换USB随身碟会很快杀死您的密钥,即使更新的(第10类)SD卡可以更好地支持它,在SD卡上进行更换也是危险的。 ZRAM显然是您需要更多RAM的必经之路

– neofutur
2012年6月22日在16:05



为什么这个答案有这么多的投票?有很多使用交换的原因。在几天的过程中,我使用了外部驱动器上的交换文件来编译大型库。死猴子在糖蜜中漂浮时,速度很慢,但这并不意味着您“根本不应该这样做”。

–安德鲁·拉尔森(Andrew Larsson)
2013年12月17日20:31



@finnw您只需要小心,是的,通常有更好的选择,但是有时您只是做您必须做的事情。

–安德鲁·拉尔森(Andrew Larsson)
2013年12月17日在22:11

您的警告虽然含义深刻,但过于强烈。找出“为什么不”以及“为什么”正是Raspberry Pi的目的:尝试使用它,然后学习。也有一些很好的理由也可以使用外部驱动器进行交换,例如满足一次性库编译的峰值内存要求。将我带到这里的搜索。我学到的最多的时候是我弄错了一些小东西并意识到了原因。抱歉地说,您没有像您认为的那样乐于助人。

–克里斯·哈顿(Chris Hatton)
15年5月13日在11:05

太强了。 “也许不是最好的”,但是“不好,浪费,破坏性和无用的”是令人误解的。一切都随着使用而磨损,请记住氧气是有毒的,Raspbian确实使用了交换文件。放慢速度通常比崩溃好,并且可以让您每隔几个月编译一次大的事情。只需设置低交换性就可以了。

–kaay
16 Mar 11 '16 at 8:14

#4 楼

Raspbmc使用/etc/init/swap.conf通过/ swap文件配置交换。它首先检查/home/pi/.enable_swap的存在。

如果删除/home/pi/.enable_swap,则不会创建交换文件,如果需要打开交换并重新启动,则只需使用touch /home/pi/.enable_swap重新创建它。

#5 楼

遗憾的是,Raspberry Pis没有千兆以太网,但是从理论上讲,至少可以在网络设备上拥有交换空间-Linux Terminal Server Project可以根据其Wiki上的此项,将其从服务器提供给客户端。 。

我找到了一个基金会论坛主题“技巧:交换nfs”,该主题显示了已经安装了一些NFS的人如何在其中一个上使用交换文件并通过循环安装来安装(可能需要,因为Linux不允许直接使用NFS挂载)。鉴于远程交换文件将保存OS不会丢失的数据,我只考虑在有线以太网网络中使用它-无线链接太脆弱了,恕我直言。另外,当然,您必须不允许关闭远程服务器而不关闭交换,并先使其完全清空!

评论


由于Broadcom芯片和以太网控制器之间的带宽有限,RPi根本不会从GB以太网中受益。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
16年11月10日在15:28

...以及将以太网控制器作为USB芯片的附件!是的,但是我们可以想象一个假设的RPi设计,其中网络硬件是SoC核心设备的一部分。 8位

– SlySven
16年11月10日在16:09

以太网控制器通常是外部芯片,但是USB作为芯片间总线的确对速度和功耗都不利。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
16年11月10日在16:32