「Zram」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(英語版リンクを追加)
9行目: 9行目:
 
[[wikipedia:ja:zram|Zram]] (以前は compcache と呼ばれていました) は、RAM 内に圧縮ブロックデバイスを作成するための Linux カーネルモジュールです。つまり、オンザフライのディスク圧縮の RAM ディスクです。zram で作成されたブロックデバイスは、スワップとして使ったり、汎用 RAM ディスクとして使ったりすることができます。zram の最も一般的な2つの使用法は、一時ファイルのストレージ (/tmp) とスワップデバイスです。初期の zram には後者の機能しか存在しておらず、ゆえに元の名前は "compcache" ("compressed cache") でした。
 
[[wikipedia:ja:zram|Zram]] (以前は compcache と呼ばれていました) は、RAM 内に圧縮ブロックデバイスを作成するための Linux カーネルモジュールです。つまり、オンザフライのディスク圧縮の RAM ディスクです。zram で作成されたブロックデバイスは、スワップとして使ったり、汎用 RAM ディスクとして使ったりすることができます。zram の最も一般的な2つの使用法は、一時ファイルのストレージ (/tmp) とスワップデバイスです。初期の zram には後者の機能しか存在しておらず、ゆえに元の名前は "compcache" ("compressed cache") でした。
   
== swap としての使用 ==
+
== swap としての使用 ==
   
 
=== zswap を無効化する ===
 
=== zswap を無効化する ===
   
  +
zswap はデフォルトで有効化されているため、zram の前に zswap がスワップのキャッシュとして振る舞うことを防ぐために、[[Zswap#zswap を切り替える|zswap を無効化]]してください。また、両方を有効化すると、zram がほとんど使用されないため、{{man|8|zramctl}} 統計が不正確になってしまいます。これは、zswap が、スワップアウトされたメモリページを zram への到達前にインターセプトし圧縮してしまうためです。
Since it is enabled by default, [[Zswap#Toggling zswap|disable zswap]] if you decide to use zram to avoid zswap acting as a swap cache in front of it. Having both enabled also results in incorrect {{man|8|zramctl}} statistics as zram remains mostly unused; this is because zswap intercepts and compresses memory pages being swapped out before they can reach zram.
 
   
 
=== 自動的に ===
 
=== 自動的に ===
   
[https://github.com/systemd/zram-generator/blob/main/README.md zram-generator] provides a {{ic|systemd-zram-setup@.service}} unit to automatically initialize zram devices without users needing to [[enable/start]] the template or its instances. See {{man|8|zram-generator}} and {{man|5|zram-generator.conf}}.
+
[https://github.com/systemd/zram-generator/blob/main/README.md zram-generator] {{ic|systemd-zram-setup@.service}} ユニットを提供します。これは、ユーザがテンプレートやインスタンスを[[起動/有効化]]する必要なしに zram デバイスを自動的に初期化します。{{man|8|zram-generator}} {{man|5|zram-generator.conf}} を参照してください。
   
For example, to create a zram swap device using {{ic|zstd}} and the entire available ram, [[install]] {{Pkg|zram-generator}}, then create {{ic|/etc/systemd/zram-generator.conf}} with the following:
+
例えば、{{ic|zstd}} と利用可能な ram 全体を使用する zram スワップデバイスを作成するには、{{Pkg|zram-generator}} を[[インストール]]し、{{ic|/etc/systemd/zram-generator.conf}} を以下の内容で作成してください:
   
 
{{hc|/etc/systemd/zram-generator.conf|2=
 
{{hc|/etc/systemd/zram-generator.conf|2=
27行目: 27行目:
 
}}
 
}}
   
  +
再起動し、{{ic|systemd-zram-setup@zram''N''.service}} インスタンスの[[systemd#ユニットを使う|ユニットステータス]]を見るか {{man|8|zramctl}} を使用して、設定した {{ic|/dev/zram''N''}} デバイスの[[スワップ#スワップ領域|スワップ状態を確認してください]]。
Reboot, then [[Swap#Swap space|check the swap status]] of your configured {{ic|/dev/zram''N''}} devices by reading the [[unit status]] of the {{ic|systemd-zram-setup@zram''N''.service}} instance(s), or by using {{man|8|zramctl}}.
 
   
  +
また、{{AUR|zramswap}} も、高優先度でシステムの RAM の 20% をデフォルトサイズとして持つスワップをセットアップするための自動化されたスクリプトを提供します。起動のたびにこれを自動的に行うには、{{ic|zramswap.service}} を[[有効化]]してください。{{AUR|zramd}} は、デフォルトで zstd 圧縮を使用して zram を自動的にセットアップできるようにします。設定は {{ic|/etc/default/zramd}} で変更できます。{{ic|zramd.service}} ユニットを有効化することで、起動時に開始できます。
Alternatively, {{AUR|zramswap}} provides an automated script for setting up a swap with a higher priority and a default size of 20% of the RAM size of your system. To do this automatically on every boot, [[enable]] {{ic|zramswap.service}}. {{AUR|zramd}} allows to setup zram automatically using zstd compression by default, its configuration can be changed at {{ic|/etc/default/zramd}}. It can be started at boot by enabling the {{ic|zramd.service}} unit.
 
   
 
=== 手動で ===
 
=== 手動で ===
   
  +
32GiB の容量を持ち、通常より高い優先度の、lz4 で圧縮された zram デバイスを (現在のセッションに対してのみ) セットアップするには:
To set up one lz4 compressed zram device with 32GiB capacity and a higher-than-normal priority (only for the current session):
 
   
 
# modprobe zram
 
# modprobe zram
41行目: 41行目:
 
# swapon --priority 100 /dev/zram0
 
# swapon --priority 100 /dev/zram0
   
  +
無効化するには、再起動するか、以下を実行してください:
To disable it again, either reboot or run
 
   
 
# swapoff /dev/zram0
 
# swapoff /dev/zram0
 
# rmmod zram
 
# rmmod zram
   
A detailed explanation of all steps, options and potential problems is provided in the [https://docs.kernel.org/admin-guide/blockdev/zram.html official documentation of the zram module].
+
すべての手順、オプション、および潜在的な問題の詳細な説明は [https://docs.kernel.org/admin-guide/blockdev/zram.html official documentation of the zram module] で見られます。
   
 
==== udev ルールを使って zram 上にスワップする ====
 
==== udev ルールを使って zram 上にスワップする ====
   
  +
以下の例は、1つの udev ルールを使って起動時に自動的に zram 上にスワップをセットアップする方法を示しています。これを行うために、追加のパッケージは必要ないはずです。
The example below describes how to set up swap on zram automatically at boot with a single udev rule. No extra package should be needed to make this work.
 
   
  +
明示的に[[カーネルモジュール#モジュールの自動ロード|起動時にモジュールをロードしてください]]:
Explicitly [[load the module at boot]]:
 
   
 
{{hc|/etc/modules-load.d/zram.conf|
 
{{hc|/etc/modules-load.d/zram.conf|
58行目: 58行目:
 
}}
 
}}
   
Configure the number of {{ic|/dev/zram}} nodes you need:
+
必要な {{ic|/dev/zram}} ノードの数を設定してください:
   
 
{{hc|/etc/modprobe.d/zram.conf|2=
 
{{hc|/etc/modprobe.d/zram.conf|2=
64行目: 64行目:
 
}}
 
}}
   
  +
以下の例のように [[udev#udev ルールについて|udev ルール]]を作成してください:
Create the [[udev rule]] as shown in the example:
 
   
 
{{hc|/etc/udev/rules.d/99-zram.rules|2=
 
{{hc|/etc/udev/rules.d/99-zram.rules|2=
71行目: 71行目:
 
}}
 
}}
   
Add {{ic|/dev/zram}} to your fstab.
+
fstab に {{ic|/dev/zram}} を追加してください。
   
 
{{hc|/etc/fstab|
 
{{hc|/etc/fstab|

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

関連記事

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

すべての手順、オプション、および潜在的な問題の詳細な説明は official documentation of the zram module で見られます。

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