SSD を使った L2ARC 読み取りキャッシュ ZFS

ファイルシステム ZFS のディスクキャッシュをSSDを使って、読み込みキャッシュ L2ARC の設定を行なってみた.
zfs_l2arc

ファイスシステム ZFS のキャッシュとは

※ キャッシュ ( cache ) の意味は、「かくし場所」、「貯蔵(ちょぞう)する所」「一時的に保存(ほぞん)するデータ」や、「データを保存(ほぞん)する場所」のこと

ZFS ( Zettabyte File System ) のキャッシュには

  • メインメモリ ARC ( アダプティブリプレースメントキャッシュ )
  • SSD を読み取りキャッシュ L2ARC ( レベル2 ARC )
  • SSD を書き込みキャッシュ ZIL ( ZFSインテントログ )

SSD を使用したキャッシュには、2つあって、今回は、Webサーバーに有効と思われる L2ARC 読み取りキャッシュを設定しました.

接続されているディスクを確認

# dmesg

ada0 at ahcich1 bus 0 scbus1 target 0 lun 0
ada0: <WDC WD40EFRX-68N32N0 80.00A80> ACS-3 ATA SATA 3.x device
ada0: Serial Number WD-WCC7K4NEJ317
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 3815447MB (7814037168 512 byte sectors)
ada0: quirks=0x1<4K>
ada1 at ahcich2 bus 0 scbus2 target 0 lun 0
ada1: <WDC WD40EFAX-68JH4N1 83.00A83> ACS-3 ATA SATA 3.x device
ada1: Serial Number WD-WX32D91R2D6S
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 3815447MB (7814037168 512 byte sectors)
cd0 at ahcich5 bus 0 scbus5 target 0 lun 0
cd0: <HL-DT-ST DVDROM DUD0N GG01> Removable CD-ROM SCSI device
cd0: Serial Number 107H3033511
cd0: 150.000MB/s transfers (SATA 1.x, UDMA6, ATAPI 12bytes, PIO 8192bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
ses0: pass0,ada0 in 'Slot 01', SATA Slot: scbus1 target 0
ada2 at ahcich3 bus 0 scbus3 target 0 lun 0
ada2: <Samsung SSD 870 EVO 1TB SVT01B6Q> ACS-4 ATA SATA 3.x device
ada2: Serial Number S5Y2NF0R163812B
ada2: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada2: Command Queueing enabled
ada2: 953869MB (1953525168 512 byte sectors)

ハードウエアの構成ですが、

ada0 と ada1 の2台がハードディスク

ada2 が SSD です.

現状の設定は、HDD 2 台でミラーリング RAID1 で設定してあります

 # zpool status
  pool: zroot
 state: ONLINE
  scan: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada0p4  ONLINE       0     0     0
	    ada1p4  ONLINE       0     0     0

この設定に、SSD を追加して、キャッシュとして使用します.

L2ARC を追加

サーバーに取り付けた SSD をL2ARC の設定を行う.

zroot にcache として、SSD の ada2 を追加します.

# zpool add zroot cache ada2

設定が反映されたか確認してみる

# zpool status
  pool: zroot
 state: ONLINE
  scan: none requested
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada0p4  ONLINE       0     0     0
	    ada1p4  ONLINE       0     0     0
	cache
	  ada2      ONLINE       0     0     0

しっかりと ada2 が cache となっております.

 # zpool iostat -v
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
zroot       14.4G  3.61T      0     16  3.64K  90.4K
  mirror    14.4G  3.61T      0     16  3.64K  90.4K
    ada0p4      -      -      0      6  1.85K  91.4K
    ada1p4      -      -      0      6  1.83K  91.4K
cache           -      -      -      -      -      -
  ada2      2.05G   929G      0      0      0  5.95K
----------  -----  -----  -----  -----  -----  -----

L2ARC の設定の解除(どちらもダメだったが)

未確認です.

# zpool remove zroot cache ada2
cannot remove cache: no such device in pool
# zpool remove cache ada2
cannot open 'cache': no such pool

# zpool detach zroot ada2
cannot detach ada2: no such device in pool
# zpool detach zroot cache ada2
cannot detach cache: no such device in pool

もくじ