zram

提供: ArchWiki
2023年2月19日 (日) 06:42時点におけるAshMyzk (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

関連記事

Zram (以前は compcache と呼ばれていました) は、RAM 内に圧縮ブロックデバイスを作成するための Linux カーネルモジュールです。つまり、オンザフライのディスク圧縮の RAM ディスクです。zram で作成されたブロックデバイスは、スワップとして使ったり、汎用 RAM ディスクとして使ったりすることができます。zram の最も一般的な2つの使用法は、一時ファイルのストレージ (/tmp) とスワップデバイスです。初期の zram には後者の機能しか存在しておらず、ゆえに元の名前は "compcache" ("compressed cache") でした。

スワップとしての使用

zswap を無効化する

zswap はデフォルトで有効化されているため、zram の前に zswap がスワップのキャッシュとして振る舞うことを防ぐために、zswap を無効化してください。また、両方を有効化すると、zram がほとんど使用されないため、zramctl(8) 統計が不正確になってしまいます。これは、zswap が、スワップアウトされたメモリページを zram への到達前にインターセプトし圧縮してしまうためです。

自動的に

zram-generatorsystemd-zram-setup@.service ユニットを提供します。これは、ユーザがテンプレートやインスタンスを起動/有効化する必要なしに zram デバイスを自動的に初期化します。zram-generator(8)zram-generator.conf(5) を参照してください。

例えば、zstd と利用可能な ram 全体を使用する zram スワップデバイスを作成するには、zram-generatorインストールし、/etc/systemd/zram-generator.conf を以下の内容で作成してください:

/etc/systemd/zram-generator.conf
[zram0]
zram-size = ram
compression-algorithm = zstd

再起動し、systemd-zram-setup@zramN.service インスタンスのユニットステータスを見るか zramctl(8) を使用して、設定した /dev/zramN デバイスのスワップ状態を確認してください

また、zramswapAUR も、高優先度でシステムの RAM の 20% をデフォルトサイズとして持つスワップをセットアップするための自動化されたスクリプトを提供します。起動のたびにこれを自動的に行うには、zramswap.service有効化してください。zramdAUR は、デフォルトで zstd 圧縮を使用して zram を自動的にセットアップできるようにします。設定は /etc/default/zramd で変更できます。zramd.service ユニットを有効化することで、起動時に開始できます。

systemd-swap を使う

ノート: systemd-swap はコミット頻度が低く、zram がほとんどのユーザのニーズを満たしているため、作者は、zram-generator を代わりに使用することを推奨しています

systemd-swap は、zram スワップ、スワップファイル、スワップパーティションからハイブリッドスワップ領域を作成するためのスクリプトです。Systemd プロジェクトには参加していません。

systemd-swap パッケージをインストールしてください。/etc/systemd/swap.confSwap File Chunked セクション内の swapfc_enabled=1 をアンコメント・設定してください。systemd-swap起動/有効化してください。

詳細や 推奨される設定については 作者の GitHub ページを見てください。

ノート:
  • Journal が systemd-swap[..]: WARN: swapFC: ENOSPC という警告を表示し続け、スワップファイルが作成されない場合、/etc/systemd/swap.conf 内の swapfc_force_preallocated=1 をアンコメント・設定する必要があります。
  • systemd-swap によって作成されたスワップファイルは、簡単にはハイバネートに使用できません。systemd-swap issue 85 を見てください。

手動で

32GiB の容量を持ち、通常より高い優先度の、lz4 で圧縮された zram デバイスを (現在のセッションに対してのみ) セットアップするには:

# modprobe zram
# echo lz4 > /sys/block/zram0/comp_algorithm
# echo 32G > /sys/block/zram0/disksize
# mkswap --label zram0 /dev/zram0
# swapon --priority 100 /dev/zram0

無効化するには、再起動するか、以下を実行してください:

# swapoff /dev/zram0
# modprobe -r zram

すべての手順、オプション、および潜在的な問題の詳細な説明は zram モジュールの公式ドキュメントで見られます。

udev ルールを使って zram 上にスワップする

以下の例は、1つの udev ルールを使って起動時に自動的に zram 上にスワップをセットアップする方法を示しています。これを行うために、追加のパッケージは必要ないはずです。

明示的に起動時にモジュールをロードしてください:

/etc/modules-load.d/zram.conf
zram

必要な /dev/zram ノードの数を設定してください:

/etc/modprobe.d/zram.conf
options zram num_devices=2

以下の例のように udev ルールを作成してください:

/etc/udev/rules.d/99-zram.rules
ACTION=="add", KERNEL=="zram[0-1]", ATTR{comp_algorithm}="zstd", ATTR{disksize}="512M", RUN="/usr/bin/mkswap -U clear /dev/%k", TAG+="systemd"

fstab に /dev/zram を追加してください。

/etc/fstab
/dev/zram0 none swap defaults 0 0
/dev/zram1 none swap defaults 0 0
翻訳ステータス: このページは en:zram の翻訳バージョンです。最後の翻訳日は 2023-02-19 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。