目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Microでのzramのインストール、設定、管理

SUSE Linux Microでのzramのインストール、設定、管理

発行日: 20/03/2025
概要

zramは、RAMに圧縮されたブロックデバイスを作成するカーネルモジュールです。

目的

この記事では、SUSE Linux Microでzramをインストールおよび設定する方法について説明します。

所要時間

この記事の理解には15分ほどを要します。

目標

RAMにブロックデバイスが設定されます。

要件

SUSE Linux Microの登録済み実行インスタンス。

1 zramとは

zramは、RAMに圧縮されたブロックデバイスを作成するカーネルモジュールです。ブロックデバイスは、RAMディスク(通常は一時ファイルの保存用)として、またはスワップ用に使用できます。

1.1 zramの利点

zramを使用すると、次の利点があります。

  • 高速なI/O操作 — zramのRAMベースの性質により、ブロックデバイスはデータへの非常に高速なアクセスを提供します。

  • メモリの節約 — データはzramを使用して圧縮されるため、かなりの量のメモリを節約できます。したがって、zramはRAMを効率的に使用し、組み込みシステムなど、RAMサイズが小さい環境に特に適しています。

  • ブロックデバイス上のファイルシステム — ブロックデバイス上にファイルシステムを作成できます。

1.2 zramの制限

zramスワップへのハイバネーションは、バッキングデバイスを永続ストレージに設定した場合でもサポートされません。

2 zramのセットアップ

システムにzramを適切にセットアップするには、次の手順を実行します。詳細については、以降のセクションで説明します。

  1. 提供された設定に従って、RAMブロックデバイスを作成するzram-generatorユーティリティをインストールします。インストールの詳細については、2.1項 「zramパッケージのインストール」を参照してください。

  2. 2.2項 「zramに必要な設定」の説明に従って設定を準備します。

  3. 2.3項 「デバイスユニットの作成」の説明に従って、新しいデバイスユニットを作成するコマンドを実行します。

  4. コンピュータを再起動します。

  5. すべてが正しく動作することを確認します。zramctlコマンドを実行すると、次のような出力が生成されます。

    > sudozramctl
    
    NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
    /dev/zram1 lzo-rle      96.6M   4K   79B   12K       1 [SWAP]
    /dev/zram0 lzo-rle       483M   4K   79B   12K       1 [SWAP]

2.1 zramパッケージのインストール

パッケージzram-generatorは、SUSE Linux Microではデフォルトでは利用できません。次のようにのパッケージをインストールします。

        > 
        sudo
        transactional-update pkg install zram-generator

正常にインストールされたら、システムを再起動します。

2.2 zramに必要な設定

zramの主設定ファイルは/etc/systemd/zram-generator.confです。ただし、主設定ファイルのエントリをオーバーライドできるドロップインファイルのセットを含むディレクトリ/etc/systemd/zram-generator.conf.d/を作成できます。

2.2.1 /etc/systemd/zram-generator.confファイル

このファイルはzram-generatorパッケージと一緒にインストールされないため、自分で作成する必要があります。追加するオプションについては、以下で説明します。例については、2.2.1.1項 「/etc/systemd/zram-generator.confの例」を参照してください。

少なくとも1つのzramデバイスを定義します。番号付けは0から始まるため、1つのzramデバイスを定義するには、設定ファイルに[zram0]セクションを追加します。

zramデバイスセクションでは、次のエントリを定義できます。

host-memory-limit

ブロックデバイスを作成できる場合のホストの最大RAMサイズをMiB単位で指定します。この値より大きい場合、zramデバイスは作成されません。設定しない場合、またはnoneに設定した場合、ホストRAMに制限はありません。

zram-size

ホストRAMと比較したzramデバイスのサイズを指定します。デフォルト値は、zram-size = min(ram / 10, RAM_HARD_LIMIT)です。いずれか小さい方の値になります。ここで、ramMemTotalを使用して取得されるホストRAMサイズです。

  • ramは、ホストメモリの合計量(MB単位)です。

  • ram/10 – zramに使用できる合計ホストメモリの比率です。この例によれば、zramは合計ホストメモリの10%を使用できます。ホストRAMの割合を10~50%の範囲にすることをお勧めします。

  • RAM_HARD_LIMITは、zramで使用できるRAMの最大量(MB単位)です。

  • min()は、RAM_HARD_LIMITの値と計算された比率を比較し、小さい方を選択する関数です。

compression-algorithm

zramでデータを圧縮するために使用するアルゴリズムを指定します。以下の値のいずれかを使用できます。

  • deflate — 可逆データ圧縮ファイル形式

  • lz4またはlz4hc — 圧縮と解凍の速度に重点を置いた可逆データ圧縮アルゴリズム

  • lzo-rle — 解凍速度に重点を置いた可逆データ圧縮アルゴリズム

  • zstd(別名Zstandard) — DEFLATEに匹敵する圧縮率を持ちながら、解凍が高速な可逆データ圧縮アルゴリズム

  • 842 — データ圧縮アルゴリズム

省略すると、カーネルのデフォルトが使用されます(通常はLZO-RLE)。

options

スワップのオプションまたはRAMディスクのマウントオプションを指定します。discardに設定または省略した場合、未使用の圧縮ページはシステムの実行中にトリミングされますこのようなソリューションは、効率的なzram管理を提供します。デフォルト(discard)をオーバーライドするには、値を空のままにします。

options =
writeback-device

非圧縮ページを保存するデバイスを指定します。その後、これらのページはzramから削除されます。

fs-type

デバイスをディスクとして使用する場合は、そこで使用するファイルシステムを指定します。たとえば、ext4と指定します。

mount-point

ファイルシステムをマウントするディレクトリを指定します。このオプションは、zramデバイスがスワップに使用される場合には使用されません。

2.2.1.1 /etc/systemd/zram-generator.confの例

次の例では、RAMに2つのブロックデバイス(スワップ用のzram0とext4ファイルシステムを使用するzram1)を作成しています。マシンに9 GBを超えるRAMが搭載されている場合、zram0は作成されません。各ブロックデバイスには、最大2 GBのRAMが割り当てられます。

[zram0]
host-memory-limit = 9048      
zram-size = min(ram / 10, 2048)    
compression-algorithm = lzo-rle    
options = discard      
writeback-device = /dev/zvol/tarta-zoot/swap-writeback
    
[zram1]      
zram-size = ram / 10
fs-type = ext4
mount-point = /run/compressed-mount-point

2.3 デバイスユニットの作成

設定を準備したら、デバイスを作成して起動します。これを行うには、以下の手順を参照してください。

  1. 次のコマンドを実行して、zramデバイスユニットを作成します。

                > 
                sudo
                systemctl daemon-reload
  2. 次のようにデバイスを起動します。

    > sudosystemctl start DEVICE_NAMEDEVICE_NAME is the name you configured in
    /etc/systemd/zram-generator.conf and it is in the format /dev/zramN
  3. モジュールが起動されたことを確認するには、各デバイスに対して次のコマンドを実行します。

                > 
                sudo
                systemctl status DEVICE_NAME