スワップ領域を設定するには?


114

Raspberry Piには256 MBのRAMしかないので、スワップスペース(SDカードまたは接続されたUSBストレージ)を使用したいと思います。どのように設定しますか?


10
Pi(および同様のデバイス)でのスワップは非常に遅くなる可能性があり、実際にスワップを広範囲に使用すると、システムが実質的に停止します。気をつけて!
MattJ

1
USB RAMドライブ(フラッシュやSSDではなく、USB速度で実行されている実際の揮発性RAMチップ)が良いのはわかっています。このようなスワップにはかなり良いでしょう。
ピョートルクラ

3
@Tibor質問は、「スワップ領域を設定する方法」です。私の意見では、正しい答えはそれを行う方法を説明するだけでなく、いくつかの落とし穴に注意を向け、誤用に対して警告する必要があります。あなたの答えはそれをしますが、「最も人気のある」答えはあなたが「これをまったくしない」べきではない理由だけを示しています(それは愚かなことです、それを使用する適切な方法があり、実際有用です)。
アンドリューラーソン

1
このページでは、ラズベリーパイでスワップを使用することに対して約100万の警告がありますが、一度何かを構築する必要がある場合、それは避けられません。
アルコニック

1
@Archonic- +1。私は、ファイルをコンパイルするメモリが不足し機会に。スワップ性の低い小さなスワップファイルは、現在の状況よりも改善されます。
jww

回答:


134

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ストレージは自動マウントされているので、ここで潜在的な競合(自動マウント対スワップオン)


2
これは正解です。他の回答では、dphys-swapfileについて言及していません。
野口健二14

1
私はこの答えを本当に正しいものとして支持しました。ごく最近、その難しい方法をすべて学んだので、あなたの答えは私に多くの時間を節約することができました。;-)
ドラッヘンフェルズ

使用/var/swapが悪い考えである理由を明確にできますか?
アンドレイ

「システムコールに失敗したためメモリを割り当てることができませんでした」が原因で失敗したRパッケージをインストールする場合:CONF_SWAPSIZE = 1024を設定します。少ないだけでは十分ではありません。
バーティカリスト

36

スワップスペースは非常に簡単に設定できます。たとえば、USBドライブがの場合/dev/sdx、次を使用します(このためにはルートである必要があります)。

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

これはデバイス全体を使用するため、おそらくそのデバイス上の既存のデータはすべて失われることに注意してください。

次のloopように(デバイスを使用して)スワップファイルを作成することもできます。

$ dd if=/dev/zero of=/path/to/swapfile bs=1M count=1024 # For 1GB swap file
$ mkswap /path/to/swapfile
$ swapon /path/to/swapfile

スワップファイルが不要になったら(たとえば、USBドライブを取り出す場合)、を使用する必要がありますswapoff <device>。そうしないと、おそらくシステムがクラッシュします。

あなたはすべきであるけれども注意してください。SDカードの読み取り/書き込み制限は制限されており、寿命が短くなります。外付けハードドライブを使用している場合は問題ありませんが、非常に遅くなります。


2
ループバックを追加する理由 確かにそれは必要ありませんか?
ポピー

あなたは正しい、そうではありません。それを反映するように答えを編集しました。

2
ユーザーがコピーして貼り付けたり、誤ってmkswapルートパーティションで実行したりしないように、これを変更する必要があると思います。sdx良いコンベンションだと思います。
Jivings

3
SWAPを有効にすることを選択したユーザーは、カーネルのスワップ性の調整に関心があるかもしれません。
earthmeLon

@earthmelon Raspbian Jessieのデフォルトのスワップ性は1です。
-kaay

32

まったくこれをしないでください。

Raspberry Piでスワップを有効にしないでください。

可能ですが、役に立ちません。クラス10のSDHCカードでも、遅すぎます。また、SDカードの寿命が短くなります。

フラッシュベースのストレージデバイス(SDカード、SDD、USBサムドライブ)でも、フラッシュブロックの大きなグループが消去されている間、システム全体の一時停止が発生する可能性があります。

考えられる例外:

  • (磁気)ハードドライブを接続する場合(ただし、USB-SATAまたはUSB-IDEアダプタ)
  • ZRAMなどを使用する場合

3
USBベイ上のスワップはキーを非常に高速に殺すことは間違いありません。新しい(クラス10)SDカードがそれをより良くサポートできたとしても、SDカード上のスワップも危険です。より多くのRAMが必要な場合は、ZRAMを使用することをお勧めします
neofutur

1
WindowsのReadyBoostテクノロジーでは、誰かがUSBドライブを作成する(またはeSata、ReadyBoostがそれを使用できるかどうかはわかりませんが、raspberry piには役に立たないでしょうが、面白いでしょう)実際のRAMを使用すると思いますコンピューターのパフォーマンスを向上させます。必要な量のRAMをサポートする新しいマザーボードを購入する方が簡単で安価です。
キブビー

33
なぜこの答えに非常に多くの賛成票があるのですか?スワップを使用する理由はたくさんあります。外付けドライブのスワップファイルを使用して、数日かけて大きなライブラリをコンパイルしました。死んだサルが糖蜜に浮かんでいるので遅いが、それはあなたが「これを全くしてはいけない」という意味ではない。
アンドリューラーソン

10
警告は、意味はあるものの、強すぎる。「なぜ」だけでなく「なぜ」も見つけることがまさにラズベリーパイの目的です。あなたがそれを使って何でも試して学びましょう。1回限りのライブラリコンパイルのピークメモリ要件を満たすなど、スワップに外部ドライブを使用する理由もいくつかあります。ここに私をもたらした検索。私が最も学んだのは、小さな何かを台無しにして、その理由に気づいたときです。申し訳ありませんが、あなたはあなたが思っているほどあなたを助けていません。
クリスハットン

2
強すぎる。「最良ではない」とはいえ、「悪い、無駄、有害で役に立たない」は誤解を招く。酸素は有毒であり、Raspbian スワップファイルを使用ます。通常、スローダウンはクラッシュよりも優れており、数か月に1回巨大なものをコンパイルできます。スワップウィネスを低く設定するだけで十分です。
kaay

4

Raspbmcは/etc/init/swap.conf、/ swapファイルを介してスワップを構成するために使用します。最初にの存在を確認し/home/pi/.enable_swapます。

削除すると/home/pi/.enable_swap、スワップファイルは作成されず、touch /home/pi/.enable_swapスワップをオンにして再起動する必要がある場合にだけ再作成します。


4

Raspberry PiにはGigaBit Ethernetがないのは残念ですが、少なくとも理論的にはネットワークデバイス上にスワップスペースを持つことが可能です-Linux ターミナルサーバープロジェクトは、Wikiのこの項目に従ってサーバーからクライアントにそれを提供できます。

Foundationフォーラムのトピック「Tip:Swap over nfs」を見つけました。これは、NFSマウントを既に持っている人が、そのうちの1つでスワップファイルを使用し、ループマウント経由でマウントする方法を示しています(Linuxでは直接使用するNFSマウント)。リモートスワップファイル OS が失われてならないデータ保持されることを考えると、有線イーサネットネットワークの場合にのみこれを検討します。無線リンクは非常に脆弱です。また、もちろん、スワップをオフにして最初に完全に空にすることなく、リモートサーバーのシャットダウンを許可しないでください!


Broadcomチップとイーサネットコントローラー間の帯域幅が制限されているため、RPiはGBイーサネットの恩恵をまったく受けません。
ドミトリーグリゴリエフ

1
...およびイーサネットコントローラーをUSBチップのアドオンとして!ええ、しかし、ネットワークハードウェアがSoCコアデバイスの一部である仮想RPiデザインを夢見ることができます。8-P
SlySven

イーサネットコントローラーは多くの場合外部チップですが、チップ間バスとしてのUSBは速度と消費電力の両方にとって実際に悪いものです。
ドミトリーグリゴリエフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.