題:
如何設置交換空間?
user13
2012-06-13 02:32:05 UTC
view on stackexchange narkive permalink

Raspberry Pi僅具有256 MB的RAM,因此我想使用交換空間(在SD卡或連接的USB存儲設備上)。如何設置?

在Pi(及類似設備)上的交換可能會非常緩慢,並且任何實際上大量使用交換而最終導致的操作實際上都會使系統陷入癱瘓。小心!
@MattJ同意。絕對不是一個好主意。
您知道USB RAM驅動器(不是閃存或SSD,而是實際以USB速度運行的易失性ram芯片)會很好的做法,這樣的交換會非常好。
@AndrewLarsson,因為反對的答案更多。
@Tibor問題是“如何設置交換空間?”我認為,正確的答案應描述如何做到,並應引起注意,並警告不要濫用。您的答案只是表明,而“最受歡迎”的答案僅告訴您為什麼您絕對不應該“完全做到這一點”(這很愚蠢,因為有使用它的正確方法,它實際上是有用的)。
在此頁面上,有大約一百萬警告禁止將樹莓派與swap一起使用,但是如果您需要構建一次,這是不可避免的。
@Archonic-*** + 1 ***。我[編譯文件的內存不足](http://www.google.com/search?q=cc1plus+out+of+memory)。具有[低交換性](http://askubuntu.com/q/103915)的小型交換文件將是對當前情況的一種改進。
五 答案:
#1
+152
asalamon74
2012-08-15 08:52:49 UTC
view on stackexchange narkive permalink

Raspbian使用 dphys-swapfile,它是基於交換文件的解決方案,而不是基於“標準”交換分區的解決方案。更改交換大小更容易。

配置文件為:

  / etc / dphys-swapfile  

內容非常簡單。默認情況下,我的Raspbian具有100MB的交換空間:

  CONF_SWAPSIZE = 100  

如果要更改大小,則需要修改數字並重新啟動phys -swapfile:

  /etc/init.d/dphys-swapfile restart  

編輯:在Raspbian上,默認位置為/ var / swap,即(當然)位於SD卡上。我認為這是一個壞主意,所以我想指出,/ etc / dphys-swapfile也可以具有以下選項:CONF_SWAPFILE = / media / btsync / swapfile

我唯一的問題是它會自動安裝USB存儲設備,因此在這裡有潛在的競爭(自動安裝與swapon)

這是正確的答案。沒有其他答案提到dphys-swapfile。
我認為這個答案是正確的。最近才了解到所有這些困難的方法,您的答案可以為我節省很多時間。 ;-)
您能說明為什麼使用`/ var / swap`是個壞主意嗎?
安裝R軟件包,該軟件包之前由於“系統調用失敗而無法分配內存”而失敗:設置CONF_SWAPSIZE = 1024。少是不夠的。
由於這僅偶爾使用一次,因此單獨的交換文件是更好的恕我直言的解決方案。參見[user13的答案](https://raspberrypi.stackexchange.com/a/75/115622)
#2
+38
user13
2012-06-13 02:37:05 UTC
view on stackexchange narkive permalink

您可以非常簡單地設置交換空間。例如,如果您的USB驅動器是 / dev / sdx ,則可以使用(必須是root用戶):

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

請注意,這將使用整個設備,並且您可能會丟失所有現有數據。

您還可以創建交換文件(通過使用 loop 設備),像這樣:

  $ dd if = / dev / zero of = / path / to / swapfile bs = 1M count = 1024#對於1GB交換文件$ mkswap / path / to / swapfile $ swapon / path / to / swapfile  

不再需要交換文件時(例如,如果要彈出USB驅動器) ,則必須使用 swapoff <device> 。不這樣做可能會導致系統崩潰。

您應該要小心。 SD卡具有有限的讀/寫限制,並且會縮短其使用壽命。如果您使用的是外部硬盤驅動器,則應該可以,但是會很慢。

為什麼要添加回送?當然沒必要嗎?
您說得對,事實並非如此。我編輯了答案以反映這一點。
我認為您應該更改此設置,以避免用戶複製和粘貼並在其根分區上意外運行`mkswap`。我認為sdx是一個很好的約定。
選擇啟用SWAP的用戶可能會對調整內核** [swappiness](http://www.hobbsknowledgebase.co.uk/wiki/How_To_Stop_Linux_Swapping_So_Much)**感興趣。
默認情況下,@earthmelon Raspbian Jessie具有swappiness 1。
重新啟動時啟用交換功能嗎?如果沒有,如何配置?
#3
+33
finnw
2012-06-19 05:49:30 UTC
view on stackexchange narkive permalink

完全不要執行此操作。

您應該不要在Raspberry Pi上啟用交換。

儘管如此即使在10類SDHC卡上,它也太慢了。

在任何基於閃存的存儲設備(SD卡,SDD,USB拇指驅動器)上,您也可能會看到系統範圍內的暫停,而同時

可能的例外:

  • 如果連接(磁性)硬盤驅動器(通過USB-SATA或USB-IDE適配器)
  • 如果您使用 ZRAM或類似的內容
毫無疑問,更換USB隨身碟會很快殺死您的密鑰,即使更新的(第10類)SD卡可以更好地支持它,在SD卡上進行更換也是危險的。如果需要更多的RAM,[ZRAM](http://raspberry.pi.gw.gd/t50-Using-ZRAM-Virtual-Swap-Compressed.html)顯然是解決之道。
您可能會認為,使用Windows中的ReadyBoost技術,有人可以製作一個使用實際RAM的USB驅動器(或eSata,不確定ReadyBoost是否可以使用它,對樹莓派沒有用,但很有趣),因此您可以提高您的計算機性能。儘管購買支持您所需RAM數量的新主板可能會更容易,更便宜。
為什麼這個答案有這麼多投票?有很多使用交換的原因。在幾天的過程中,我使用了外部驅動器上的交換文件來編譯大型庫。死猴子在糖蜜中漂浮時,速度很慢,但這並不意味著您“絕對不要這樣做”。
@AndrewLarsson,我希望您的外置驅動器不是基於閃存的。並不是說它是完全沒有用的,而是您總是有更好的選擇(磁性驅動器,網絡驅動器,基於RAM的SSD等)。
@finnw您只需要小心,是的,通常有更好的選擇,但是有時您只是做您必須做的事情。
您的警告雖然含義深刻,但過於強烈。找出“為什麼不”以及“為什麼”正是Raspberry Pi的目的:嘗試使用它,然後學習。也有一些很好的理由也可以使用外部驅動器進行交換,例如滿足一次性庫編譯的峰值內存要求。搜索使我來到這裡。我學到的最多的時候是我弄錯了一些小東西並意識到了原因。抱歉地說,您沒有像您認為的那樣樂於助人。
太強了。 “也許不是最好的”,但是“不好,浪費,破壞性和無用的”是令人誤解的。一切都隨著使用而磨損,請記住氧氣是有毒的,Raspbian確實使用交換文件。放慢速度通常比崩潰好,並且可以讓您每隔幾個月編譯一次大的事情。只需設置低交換性就可以了。
#4
+4
valentt
2013-02-26 02:49:52 UTC
view on stackexchange narkive permalink

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

如果刪除 /home/pi/.enable_swap ,則交換文件不是創建,然後如果需要打開並重新啟動交換,請使用 touch /home/pi/.enable_swap 重新創建。

#5
+4
SlySven
2015-12-29 03:51:46 UTC
view on stackexchange narkive permalink

可惜Raspberry Pis沒有千兆以太網,但理論上至少在網絡設備上有交換空間是可能-Linux Terminal Server Project可以從服務器提供它根據客戶在其Wiki上的項向客戶展示。

我發現了一個基金會論壇主題“技巧:交換nfs”,該主題顯示了某人已經有一些NFS掛載的地方已經在其中一個上使用了交換文件,並通過循環掛載將其掛載(可能是必要的,因為Linux不允許直接使用NFS掛載)。鑑於遠程交換文件保留操作系統絕不能丟失的數據,我只考慮將其用於有線以太網網絡-無線鏈接太脆弱了恕我直言。另外,當然,您必須不允許關閉遠程服務器而不關閉交換,並先使其完全清空!

由於Broadcom芯片和以太網控制器之間的帶寬有限,RPi根本不會從GB以太網中受益。
...以及以太網控制器_作為USB芯片的附件_!是的,但是我們可以想像一個RPi設計,其中網絡硬件是SoC核心設備的一部分。 8位
以太網控制器通常是外部芯片,但是USB作為芯片間總線的確對速度和功耗都不利。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...