1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bcacheを使ってSSDをキャッシュ化してみる

Posted at

概要

Linuxでブロックデバイスをキャッシュに用いることができるbcacheを試してみる。SSDをHDDのキャッシュとして用いることでランダムアクセスや大きなサイズのファイル書き込みの性能向上が期待できる。

システム構成

image.png

ハード

  • マザーボード: GIGABYTE GA-H270-HD3
  • CPU : Intel Core i5 7600T
  • メモリ: DDR4 32GB
  • SSD(VMwareデータストア用):Inte SSD 665p 1TB
  • HDD(データ用) : TOSHIBA DT01ACA300 3000GB

ソフト

  • ゲストOS・直接マウント用OS:Ubuntu Server 20.04
  • ESXi : VMWare ESXi 7.0 Update 1

設定手順

# bcacheデバイスを作成。/dev/bcache*として生成される。
sudo make-bcache -B /dev/sdb1 -C /dev/sdd1
# 書き込みモードをwritebackに設定。
echo writeback | sudo tee /sys/block/bcache0/bcache/cache_mode
# xfsファイルシステムを作成。
sudo mkfs -t xfs /dev/bcache0

性能測定

ddコマンドによるファイルコピーで簡易的に計測を行った。

まずはbcacheデバイスを作成する前の時点で、SSD上の仮想ディスク(.vmdk)と、ESXiのrawマウントでマウントしたHDDの性能を測定する。

測定方法

mkdir tmpfs sdb sdc
sudo mount -t tmpfs tmpfs tmpfs    # RAMディスク作成
# 4GBのダミーファイルtest.imgをRAMディスク上に作成。
# RAMディスクはアクセスがSSD・HDDと比べて極めて速いので正確な書き込み性能を測れる。
sudo dd if=/dev/urandom of=tmpfs/test.img bs=32M count=128
sudo mkfs -t xfs /dev/sdb1
sudo mkfs -t xfs /dev/sdc1
sudo mount /dev/sdb1 sdb   # HDDマウント
sudo mount /dev/sdc1 sdc   # SSDマウント
sudo dd if=tmpfs/test.img of=sdb/test.img bs=4k oflag=direct
sudo dd if=tmpfs/test.img of=sdc/test.img bs=4k oflag=direct
# オプションの意味:
# bs=4kはセクタサイズの等倍になるようにして書き込みを高速化させるために指定。
# oflag=directはLinuxのキャッシュ無効化しディスクへの実際の書き込み速度を測定するために指定。

bcacheの性能測定

mkdir bcache
sudo mkfs -t xfs /dev/bcache0
sudo mount /dev/bcache0 bcache
sudo dd if=/dev/urandom of=tmpfs/test.img bs=32M count=128 iflag=fullblock
sudo dd if=tmpfs/test.img of=bcache/test.img bs=4k oflag=direct

結果

SSD:71.7 MB/s
HDD:40.2 MB/s
bcache:84.9 MB/s

image.png

考察

結果としてはHDD<SSD<bcacheの順に書き込み速度が速いという結果となった。
ただ、bcacheはSSDをキャッシュ化しているだけなのでSSDよりも速度が速くなっているのはたまたまであろう。
何度か繰り返せば同等程度になるのではないか。

おわりに

bcacheを用いることで、HDDの大容量とSSDの高速性を併せ持つブロックデバイスをUbuntu上で使えるようになった。
このデバイスをsambaやNFSでファイル共有して活用する予定だが、例えばキャッシュサイズよりも大きなサイズのファイルを配置した場合にどうなるかなど追加検証していく。

1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?