SSD を HDD のキャッシュにして使用します。
SSD を HDD のキャッシュにするソフト bcache のインストール
sudo apt install -y bcache-tools ;
起動ディスクの SSD をキャッシュとして使用する場合は gparted を CD に焼いてそちらから起動してパーティションを区切る必要があります。
gpartedのダウンロード
GParted - Browse Files at SourceForge.net
書き込みソフト
sudo apt install -y brasero ;
作成したキャッシュ領域をまずは ext4 でフォーマットして作成
HDD のヘッダ情報の削除と SSD キャッシュと HDD のペアの作成
# hdd のヘッダを削除(中身消えます)
sudo wipefs -a /dev/sda6 ; # ssd キャッシュ
sudo wipefs -a /dev/sde ; # hdd 中身消えます
# sda6 (ssdキャッシュ)を sde ( hdd ) に割り当てる
sudo make-bcache -C /dev/sda6 -B /dev/sde ; # sda6 は ssd キャッシュ sde は hdd
これで ssd と hdd がペアになった /dev/bcache0 が作成されます。
ベンチマーク
ベンチマークのインストール
sudo apt install -y fio ;
fio.txt
[global]
ioengine=libaio
iodepth=1
size=1g
direct=1
runtime=60
directory=${TARGET}
stonewall
[Seq-Read]
bs=1m
rw=read
[Seq-Write]
bs=1m
rw=write
[Rand-Read-512K]
bs=512k
rw=randread
[Rand-Write-512K]
bs=512k
rw=randwrite
[Rand-Read-4K]
bs=4k
rw=randread
[Rand-Write-4K]
bs=4k
rw=randwrite
[Rand-Read-4K-QD32]
iodepth=32
bs=4k
rw=randread
[Rand-Write-4K-QD32]
iodepth=32
bs=4k
rw=randwrite
ベンチマークの実行。$USERNAME と HDD の ID は適宜変えてください
TARGET=/media/$USERNAME/73ceda35-3266-433c-bf09-40fa0c9ed62c fio -f fio.txt --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}' ;
素のHDD
Seq-Read 178.907
Seq-Write 72.752
Rand-Read-512K 54.838
Rand-Write-512K 48.732
Rand-Read-4K 0.62
Rand-Write-4K 0.511
Rand-Read-4K-QD32 1.553
Rand-Write-4K-QD32 0.962
SSDキャッシュ化したもの
ベンチ実行コマンド
TARGET=/dev/bcache0 fio -f fio.txt --output-format=terse | awk -F ';' '{print $3, ($7+$48) / 1000}' ;
結果
Seq-Read 172.775
Seq-Write 69.341
Rand-Read-512K 48.664
Rand-Write-512K 45.524
Rand-Read-4K 0.574
Rand-Write-4K 0.478
Rand-Read-4K-QD32 1.532
Rand-Write-4K-QD32 0.935
なるべくキャッシュを効かせるために 0.0k を設定したもの
sudo gedit /sys/block/bcache0/bcache/sequential_cutoff ;
結果
Seq-Read 172.775
Seq-Write 67.053
Rand-Read-512K 198.481
Rand-Write-512K 46.018
Rand-Read-4K 1.125
Rand-Write-4K 0.492
Rand-Read-4K-QD32 2.889
Rand-Write-4K-QD32 0.933
設定が正しいのかわかりませんが、ランダムリードが早くなっています。
触感としては、設定を行うと HDD の中身が消えることと、HDD の数だけ SSD のキャッシュのパーティションを作成しないといけないのでなんだかイマイチな感じがします。。
Ubuntu には書き込みキャッシュの設定が disks から設定できるのでそちらのほうがいいような気もします。
参考リンク
- Linuxでディスクキャッシュとして使える「bcache」を試してみた - astamuse Lab
- bcacheでSSDをキャッシュに使ってHDDアクセスを早くしてSSHD的なことをやる - それマグで!
- bcacheを使ってSSDをキャッシュ化してみる - Qiita
- Ubuntu GParted その22 - パーティションの開始位置を再調整する・パーティションの開始位置が物理セクターの境界になっているか確認する - kledgeb
- Ubuntu/ISOイメージをDVD,CDに書き込む方法・brasero - Linuxと過ごす
- LinuxでもCrystalDiskMarkぽいディスクベンチマークしたい - 動かざることバグの如し
- bcacheを使ってSSDをキャッシュ化してみる - Qiita
- dm-cacheの技術概要と構築手順 - Qiita