ラズパイのスワップは、無効化しないほうがいい|zramという3つ目の道

スワップを無効化するのではなく、置き場所を変えるという考え方を示したイメージ図 ITライフハック
この記事は約7分で読めます。
当ページはプロモーションが含まれています

前回、microSDの延命設定を実機で試した話を書きました。

3つのうち2つは、そもそもコマンドが通りませんでした。

今回は、その1つ目だったスワップの話です。

検索すると、どの記事も「無効化しろ」と書いています。

その通りにすると、別の問題が起きます。

スワップを無効化するとカードは守れるがメモリ不足で落ちることを示した図

スポンサーリンク

なぜ「無効化しろ」と書かれているのか

理由自体は、正しいです。

これまでのスワップは、microSDカードの上にファイルを作って使っていました。

Filename        Type   Size     Used  Priority
/var/swap       file   102396   0     -2

`/var/swap` という、カード上のファイルです。

メモリが足りなくなると、ここに書き出します。書き込みが起きるので、カードが消耗します。

だから「止めろ」と言われてきました。 理屈は分かります。

スポンサーリンク

止めると、どうなるか

逃げ場がなくなります

スワップは、メモリが足りなくなったときの逃げ場です。

止めるということは、逃げ場をなくすということになります。

足りなくなったら、どうなるか。OSが、動いているプログラムを強制的に終了させます。

いつ起きるか

普段は起きません。 だから、しばらくは問題なく動きます。

起きるのは、こういうときです。

・大きなファイルを扱ったとき
・ソフトをソースからビルドしたとき
・アクセスが集中したとき
・複数のサービスを同時に動かしているとき

そして、Raspberry Pi はメモリが少ない機種があります。

1GBの機体で、サーバーを動かして、何かのついでに重い処理をする。そこで足ります。

カードは守れたが、動かなくなった

これが、いちばん困る形だと思います。

カードの寿命を延ばすためにやったことで、サーバーが落ちる。

しかも、原因が分かりにくい。 落ちたプログラムのログを見ても、「終了させられた」としか出ません。

置き場所を変える、という選択

止めるか、止めないか。 この2択で考えていました。

3つ目の道があります。

スワップの置き場所がカード上からメモリ上に変わったことを示した図

zram という仕組み

スワップを、メモリの中に作ります。

「メモリが足りないのに、メモリの中に作ってどうするのか」と思われるかもしれません。

圧縮するからです。

メモリの一部を圧縮領域として使い、そこにスワップを置く。圧縮するので、見かけ上のスワップは実際のメモリ消費より大きくなります。

そして、カードに書き込みません

ここが要点です。

置き場所がメモリなので、microSDカードには一切書き込みません。

止めなくても、カードは減りません。

trixie では、最初からこれです

2025年10月、Raspberry Pi OS が trixie に上がりました。

そこで、標準の仕組みが zram に変わっています。

NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd            2G   4K   69B   48K       4 [SWAP]

実際に手元の機体で確認したものです。

この表示の読み方

DISKSIZE 2G。 スワップとして使える大きさです。

ここが誤解しやすいところです。 「2GBのメモリを使っている」わけではありません。

これは、入れられるデータの上限です。実際に使っているメモリは、次の項目で分かります。

DATA 4K。 いま入っているデータの量。

COMPR 69B。 それを圧縮した後の大きさ。4KBが69バイトになっています。

TOTAL 48K。 管理用の領域を含めた、実際のメモリ消費です。

つまり、「2GB」と書いてあっても、実際に使っているのは48KBだけという状態です。

ALGORITHM zstd

圧縮の方式です。

速度と圧縮率のバランスがいいものが選ばれています。変更もできますが、標準のままで問題ないと思います。

dphys-swapfile は、無くなりました

$ systemctl is-active dphys-swapfile
なし

サービス自体が存在しません。

つまり、trixie を使っているなら、スワップについてやることはありません。 最初からカードに書き込まない形になっています。

bookworm を使っている場合

こちらは、まだ従来の形です。

$ grep -v '^#' /etc/dphys-swapfile | grep .
CONF_SWAPSIZE=100

100MBのファイルが、カード上にあります。

選択肢は3つ

そのままにする。 100MBなら、書き込み量はそれほど多くありません。普通に使うぶんには、これでも困りません。

無効化する。 カードは守れますが、逃げ場がなくなります。

zram に替える。 カードを守りつつ、逃げ場も残ります。

替えるなら

Debian には、zram を扱うパッケージが用意されています。

入れて、設定して、従来のスワップを止めるという手順になります。

ここは、手元の bookworm 機ではまだ試していません。 手順を書いても、確かめていないものになるので、この記事では書きません。

試したら、追記します。

急ぐ必要はないと思います

bookworm のサポートは、まだ続きます。

そして、いずれ trixie に上げるなら、そのときに自動的に zram になります。

いま無理に替えるより、OSを上げるタイミングで移るほうが素直だと思います。

zram にも、限界があります

万能ではありません。 ここも書いておきます。

本当にメモリが足りないときは、解決しません

zram は、メモリの中でやりくりしているだけです。

物理的なメモリが本当に足りない状況では、圧縮しても限界があります。

足りないなら、メモリの多い機種を使うか、動かすものを減らすか。 そこは変わりません。

CPUを使います

圧縮と展開に、処理能力を使います。

カードへの書き込みより速いので、たいていは得ですが、無料ではありません。

圧縮できないデータには効きません

すでに圧縮されている画像や動画は、それ以上小さくなりません。

そういうデータを大量に扱う場合、期待したほど効かないことがあります。

結局、どうするか

trixie なら

何もしなくていいです。

最初から zram になっています。止める必要も、替える必要もありません。

むしろ、古い記事を読んで無効化しようとすると、コマンドが通らずに混乱します。

bookworm なら

まず、そのままでいいと思います。

100MBのスワップファイルによる書き込みは、ログの書き込みに比べれば小さいです。

前回書いた、ログの上限設定のほうが先に効きます。

それでもカードを守りたいなら

スワップより、先にやることがあります。

1. ログの上限を決める(journald の設定)
2. /tmp と /var/tmp をメモリ上に置く
3. スワップの置き場所を見直す
4. そもそも microSD から離れる(SSD起動)

スワップは3番目です。 ここから手をつける必要は、たぶんありません。

無効化を勧めない理由を、もう一度

検索上位の記事は、全部「無効化しろ」と書いています。

そして、それが間違いだとは思いません。 書かれた当時は、それが妥当な判断でした。

変わったのは、前提のほうです。

置き場所を変えられるようになった。 だから、止める以外の道ができました。

止めるのは、いまでは最後の手段だと思います。

自分の環境を確認する

cat /etc/os-release | head -2
swapon -s
zramctl
systemctl is-active dphys-swapfile
free -h

`zramctl` に何か出れば、zram が動いています。 スワップについては、やることがありません。

`/var/swap` が出れば、従来の形です。 上に書いた3つの選択肢から選んでください。

まとめ

  • 検索上位は全部「スワップを無効化しろ」と書いている
  • 理由は正しい。カード上のファイルに書き込むから
  • ただし止めると、メモリが足りなくなったときの逃げ場がなくなる
  • カードは守れたが、サーバーが落ちる。 しかも原因が分かりにくい
  • 3つ目の道がzram。 スワップをメモリ上に圧縮して置く
  • カードに一切書き込まない。 止めなくても減らない
  • trixie は最初から zram。 実測で確認(zstd・2G・実消費48K)
  • 「2G」は上限であって、メモリ消費ではない
  • trixie に dphys-swapfile は無い。 古い手順は通らない
  • bookworm はまだ従来の形(100MB)。急いで替えなくていい
  • zram も万能ではない。本当に足りないときは解決しない
  • 効く順は、ログ → tmpfs → スワップ → SSD。スワップは3番目

「止める」以外の選択肢ができたというのが、この数年の変化だと思います。

次回は、OSを上げたら、使っていた機器が動かなくなった話を書きます。ドライバーがカーネルから消えるという現象です。

※本記事は2026年8月時点の実測です。OSの構成は変更されることがあります。

タイトルとURLをコピーしました