ファイスシステム 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