「Zram」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎手動で: 修正)
46行目: 46行目:
 
# rmmod zram
 
# rmmod zram
   
すべての手順、オプション、および潜在的な問題の詳細な説明は [https://docs.kernel.org/admin-guide/blockdev/zram.html official documentation of the zram module] で見られます。
+
すべての手順、オプション、および潜在的な問題の詳細な説明は [https://docs.kernel.org/admin-guide/blockdev/zram.html zram モジュールの公式ドキュメント]で見られます。
   
 
==== udev ルールを使って zram 上にスワップする ====
 
==== udev ルールを使って zram 上にスワップする ====

2023年1月14日 (土) 06:32時点における版

関連記事

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

swap としての使用

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 ユニットを有効化することで、起動時に開始できます。

手動で

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
# rmmod 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
KERNEL=="zram0", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"

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

/etc/fstab
/dev/zram0 none swap defaults 0 0
/dev/zram1 none swap defaults 0 0