2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmox上のZFS RAIDZ構成のHDDグループにSLOGとL2ARCキャッシュを追加してちょっとだけ速くする

Posted at

宣伝

ZFS RAIDについて

現在、自宅のサーバーのメインストレージはZFS RAIDZによる冗長化を行っています。

ZFSではリードキャッシュをARCアルゴリズムで保持しています。
デフォルト設定では、
ARCキャッシュ最大値: ホストメモリの1/2 = 128/2 = 64GB
ARCキャッシュ最小値: ホストメモリの1/32 = 128/32 = 4GB
となっており、最大までメモリを喰われるとかなりリソースを持っていかれます。
もちろん自動でキャッシュ解放されるのでシステムごと落ちたりはしませんが、常時メモリ使用量が多い状態になるのは不愉快です。
そのため、現在はARCキャッシュ最大値を32GBに設定しています。

ZILとL2ARCとキャッシュについて

ハイブリッドキャッシュ

従来のRAIDと違い、ZFSはHybrid Storage Poolを採用しています。
保存デバイスとは別に、SSDなど高速なドライブをキャッシュデバイスとして指定するだけで勝手に使ってくれます。

ZIL

コピーオンライト方式で動作するZFSは、トランザクションを発行する際にトランザクションログを生成します。
これをZfs Intent Logと呼びます。一般的なファイルシステムで言うところのジャーナルです。
このZILをSSDなどの高速なストレージに置くことで書き込み性能が向上します。
またZILを外部デバイスに置くことでSeparate Intent LOG、つまりSLOGへと名前が変わります。
最大で物理メモリの1/2まで割り当てられます。

Oracleのリファレンスマニュアルによると、信頼性のためにミラーリングデバイスまたはバッテリーとメモリ付きのSSDに展開することが強く推奨されています。
しかし、今回はリソースの問題でシングルドライブに設定します。

L2ARC

ZFSの二次リードキャッシュになります。
ARCキャッシュがメモリに乗り切れない場合、L2ARCにデータが保存されます。
今回L2ARCを多めに取っているので、メモリ側のARCキャッシュ量を少し減らそうと思います。

L2ARCのデータは喪失しても問題ないため、特に冗長化は必要ありません。

実装

キャッシュデバイスに容量割り当て

今回はNVMe SSDに64GB分空き容量を作成し、16GBをZIL、残りの48GBをL2ARCとして使用します。

キャッシュデバイスの追加

書式
zpool add <pool> <log|cache> </dev/device>

console
# zpool add RAID log /dev/nvme0np4
# zpool add RAID cache /dev/nvme0np5

追加したデバイスの確認

console
# zpool status
  pool: RAID
 state: ONLINE
  scan: scrub repaired 0B in 01:42:02 with 0 errors on Sun Nov 10 02:06:08 2024
config:

        NAME                                            STATE     READ WRITE CKSUM
        RAID                                            ONLINE       0     0     0
          raidz1-0                                      ONLINE       0     0     0
            ata-TOSHIBA_DT01ABA100V_37610P8NS           ONLINE       0     0     0
            ata-WDC_WD10EURX-63UY4Y0_WD-WCC4J6UZ6ZT2    ONLINE       0     0     0
            ata-TOSHIBA_DT01ABA100V_23DE8DENS           ONLINE       0     0     0
            ata-WDC_WD1005FBYZ-01YCBB2_WD-WMC6M0J8HWZ5  ONLINE       0     0     0
            ata-WDC_WD10EURX-63UY4Y0_WD-WCC4J7HU67TN    ONLINE       0     0     0
            ata-WDC_WD10EFRX-68FYTN0_WD-WCC4J2DAUT4Z    ONLINE       0     0     0
        logs
          nvme0n1p4                                     ONLINE       0     0     0
        cache
          nvme0n1p5                                     ONLINE       0     0     0

errors: No known data errors

logsがZIL、cacheがL2ARCです。

キャッシュ利用状況

ファイルサーバーでアクセスを行い、負荷をかけてみます。

console
# zpool iostat -v
                                                  capacity     operations     bandwidth 
pool                                            alloc   free   read  write   read  write
----------------------------------------------  -----  -----  -----  -----  -----  -----
RAID                                            2.22T  3.23T    121  1.18K   817K  28.5M
  raidz1-0                                      2.22T  3.23T    121  1.07K   817K  14.6M
    ata-TOSHIBA_DT01ABA100V_37610P8NS               -      -     24    247   160K  2.47M
    ata-WDC_WD10EURX-63UY4Y0_WD-WCC4J6UZ6ZT2        -      -     16    178   110K  2.39M
    ata-TOSHIBA_DT01ABA100V_23DE8DENS               -      -     23    209   162K  2.47M
    ata-WDC_WD1005FBYZ-01YCBB2_WD-WMC6M0J8HWZ5      -      -     18    117   112K  2.42M
    ata-WDC_WD10EURX-63UY4Y0_WD-WCC4J7HU67TN        -      -     22    173   164K  2.47M
    ata-WDC_WD10EFRX-68FYTN0_WD-WCC4J2DAUT4Z        -      -     16    166   110K  2.40M
logs                                                -      -      -      -      -      -
  nvme0n1p4                                     1.01G  14.5G      0    114      3  14.0M
cache                                               -      -      -      -      -      -
  nvme0n1p5                                     3.02G  44.6G      0      5     66   447K
----------------------------------------------  -----  -----  -----  -----  -----  -----

両方とも動作しているのがわかると思います。

001.png

おわり

ベンチマーク取るのを完全に忘れていたので体感ですが、Nextcloudでのアップロードやサムネイルの表示などが4割マシくらいで速くなった気がします。

参考サイト

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?