「Zram」の版間の差分
(同期) |
(同期 & 修正) |
||
7行目: | 7行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
− | [[wikipedia:ja:zram| |
+ | [[wikipedia:ja:zram|zram]] (以前は compcache と呼ばれていました) は、RAM 内に圧縮ブロックデバイスを作成するための Linux カーネルモジュールです。つまり、オンザフライのディスク圧縮を用いた RAM ディスクです。zram で作成されたブロックデバイスは、スワップとして使ったり、汎用 RAM ディスクとして使ったりすることができます。zram の最も一般的な2つの使用法は、一時ファイルのストレージ ({{ic|/tmp}}) とスワップデバイスです。初期の zram には後者の機能しか存在しておらず、ゆえに元の名前は "compcache" ("compressed cache") でした。 |
== スワップとしての使用 == |
== スワップとしての使用 == |
||
30行目: | 30行目: | ||
また、{{AUR|zramswap}} も、高優先度でシステムの RAM の 20% をデフォルトサイズとして持つスワップをセットアップするための自動化されたスクリプトを提供します。起動のたびにこれを自動的に行うには、{{ic|zramswap.service}} を[[有効化]]してください。{{AUR|zramd}} は、デフォルトで zstd 圧縮を使用して zram を自動的にセットアップできるようにします。設定は {{ic|/etc/default/zramd}} で変更できます。{{ic|zramd.service}} ユニットを有効化することで、起動時に開始できます。 |
また、{{AUR|zramswap}} も、高優先度でシステムの RAM の 20% をデフォルトサイズとして持つスワップをセットアップするための自動化されたスクリプトを提供します。起動のたびにこれを自動的に行うには、{{ic|zramswap.service}} を[[有効化]]してください。{{AUR|zramd}} は、デフォルトで zstd 圧縮を使用して zram を自動的にセットアップできるようにします。設定は {{ic|/etc/default/zramd}} で変更できます。{{ic|zramd.service}} ユニットを有効化することで、起動時に開始できます。 |
||
− | |||
− | ==== systemd-swap を使う ==== |
||
− | |||
− | {{Note|systemd-swap はコミット頻度が低く、[[zram]] がほとんどのユーザのニーズを満たしているため、作者は、{{Pkg|zram-generator}} を代わりに使用することを[https://github.com/Nefelim4ag/systemd-swap#%EF%B8%8F-current-code-quality-and-commit-frequency-is-low-%EF%B8%8F 推奨しています]。}} |
||
− | |||
− | systemd-swap は、[[zram]] スワップ、スワップファイル、スワップパーティションからハイブリッドスワップ領域を作成するためのスクリプトです。Systemd プロジェクトには参加していません。 |
||
− | |||
− | {{pkg|systemd-swap}} パッケージを[[インストール]]してください。{{ic|/etc/systemd/swap.conf}} の ''Swap File Chunked'' セクション内の {{ic|1=swapfc_enabled=1}} をアンコメント・設定してください。{{ic|systemd-swap}} を[[起動/有効化]]してください。 |
||
− | |||
− | 詳細や [https://github.com/Nefelim4ag/systemd-swap/blob/master/README.md#about-configuration 推奨される設定]については [https://github.com/Nefelim4ag/systemd-swap 作者の GitHub] ページを見てください。 |
||
− | |||
− | {{Note| |
||
− | * Journal が {{ic|systemd-swap[..]: WARN: swapFC: ENOSPC}} という警告を表示し続け、スワップファイルが作成されない場合、{{ic|/etc/systemd/swap.conf}} 内の {{ic|1=swapfc_force_preallocated=1}} をアンコメント・設定する必要があります。 |
||
− | * systemd-swap によって作成されたスワップファイルは、簡単には[[ハイバネート]]に使用できません。[https://github.com/Nefelim4ag/systemd-swap/issues/85 systemd-swap issue 85] を見てください。 |
||
− | }} |
||
=== 手動で === |
=== 手動で === |
||
92行目: | 77行目: | ||
}} |
}} |
||
− | {{TranslationStatus|zram|2023- |
+ | {{TranslationStatus|zram|2023-03-13|772249}} |
2023年3月13日 (月) 16:41時点における版
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-generator は systemd-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
ユニットを有効化することで、起動時に開始できます。
手動で
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