“bcache”を使ってssdの速さと hddの大容量のいいとこどり 2015-12-12

21
“bcache”を使ってSSDの速さと HDDの大容量のいいとこどり Ubuntu 15.10リリース記念オフラインミーティング15.12 2015-12-12 Nobuto Murata <[email protected]>

Upload: nobuto-murata

Post on 14-Apr-2017

2.943 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

“bcache”を使ってSSDの速さとHDDの大容量のいいとこどりUbuntu 15.10リリース記念オフラインミーティング15.122015-12-12

Nobuto Murata <[email protected]>

Page 2: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcache とは (1)

bcacheは、比較的小容量のSSD(価格抑えめ)を大容量のHDDのキャッシュとして組み合わせ、大容量を実現しながらもランダムIO性能をSSD並にしてくれる技術。

一般にSSDとHDD …を比べると容量あたりの価格 ランダムIO性能

SSD 高い☹ 高い☺

HDD 安い☺ 低い☹

Page 3: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcache とは (2)

●Linuxカーネル3.10でmainline入り●Ubuntuでは14.10(utopic)でbcache-tools(ユーザースペースツール)含めてTechnology Previewとしてリリースノート記載●主にサーバー向けという扱い●インストーラー(ubiquity, d-i)のサポートは今のところなし

●Ubuntu 14.04 LTS(trusty)にもbcache-toolsが後からバックポートされた

これまでの経緯

Page 4: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcache とは (3)

● https://www.kernel.org/doc/Documentation/bcache.txt

● http://bcache.evilpiepirate.org/

こんなところで活躍:

launchpad.net “800GB+ PostgreSQL database”の高速化http://insights.ubuntu.com/2015/12/10/using-bcache-for-performance-gains-on-the-launchpad-database-servers/

SSDをキャッシュとして使える他の実装●dm-cache

●Flashcache/EnhanceIO

●dm-writeboost など

ドキュメント

Page 5: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップ

Page 6: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップ“ちなみに curtin”(後述)ではbcacheに対応しており、下記のようなYAMLでbcacheの設定を渡せます。

partitioning_commands: builtin: [curtin, block-meta, custom]storage: config: - {grub_device: true, id: sda, name: sda, path: /dev/sda, ptable: msdos, type: disk, wipe: superblock} - {id: sdb, name: sdb, path: /dev/sdb, type: disk, wipe: superblock} - {device: sda, id: sda-part1, name: sda-part1, number: 1, offset: 4194304B, size: 1199570944B, type: partition, uuid: 017d4c4c-b50b-4158-b0c9-71c6df81b91c, wipe: superblock} - {device: sda, id: sda-part2, name: sda-part2, number: 2, size: 15971909632B, type: partition, uuid: fe270b20-50c8-4d67-b66d-a0408e924c81, wipe: superblock} - {backing_device: sdb, cache_device: sda-part2, cache_mode: writeback, id: bcache0, name: bcache0, type: bcache} - {fstype: ext4, id: sda-part1_format, label: '', type: format, uuid: 179db7ea-c41b-4816-8591-2bc5b2fe7b6d, volume: sda-part1} - {fstype: ext4, id: bcache0_format, label: '', type: format, uuid: 422d4b17-0980-40ff-90cd-ee7e89d45e18, volume: bcache0} - {device: bcache0_format, id: bcache0_mount, path: /, type: mount} - {device: sda-part1_format, id: sda-part1_mount, path: /boot, type: mount}version: 1

インストーラーのサポートがないので“/” にbcacheを使うのは簡単ではない

Page 7: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ストレージに変更を加えるので、バックアップは忘れずに。

bcacheのセットアップ今回はd-iでインストール後に、データ領域だけbcache化する

backing device

SSD/dev/sda

HDD/dev/sdb

2: OS 3: cacheEFI

Page 8: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップd-iでSSD内にOS領域を確保してインストール

Page 9: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップ$ sudo parted /dev/sda print...Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 boot 2 538MB 40.5GB 40.0GB ext4

$ sudo parted /dev/sda mkpart primary 40.5GB 100%

$ sudo parted /dev/sda print...Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 boot 2 538MB 40.5GB 40.0GB ext4 3 40.5GB 120GB 79.5GB primary

cache用のパーティションを作成

Page 10: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップ$ sudo apt install bcache-tools

$ sudo make-bcache -B /dev/sdb

$ sudo make-bcache -C /dev/sda3

## cache deviceとbacking deviceの紐付け$ sudo bcache-super-show /dev/sda3 | grep cset.uuid

$ echo '<CSET.UUID>' | sudo tee /sys/block/bcache0/bcache/attach

cache device, backing deviceの指定

Page 11: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップ## ファイルシステムの作成$ sudo mkfs.ext4 /dev/bcache0

$ sudo mkdir /media/bcache

## UUIDの確認$ ls -l /dev/disk/by-uuid/ | grep bcache0

$ cat <<EOF | sudo tee -a /etc/fstabUUID=<UUID> /media/bcache ext4 defaults 0 0EOF

$ sudo mount -a

作成したbcacheデバイスを/etc/fstabへ記述

Page 12: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheのセットアップ## キャッシュモードの確認$ cat /sys/block/bcache0/bcache/cache_mode[writethrough] writeback writearound none

## キャッシュモードの切り替え例## “writeback”は書き込みパフォーマンスが上がるが、## SSDが故障した際にデータを失う可能性がある。$ echo writeback | sudo tee /sys/block/bcache0/bcache/cache_mode

$ cat /sys/block/bcache0/bcache/cache_modewritethrough [writeback] writearound none

キャッシュモード

Page 13: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ベンチマーク(参考程度に)

Page 14: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ベンチマーク条件●CPU: AMD A8-7600

●メモリ: 32GB

●SSD: INTEL SSDSC2CT12 (Intel SSD 330 シリーズ 120GB)

●HDD: TOSHIBA MQ01ABD0 (2.5 インチ 750GB)

OS関連●Ubuntu 14.04 LTS

●LTS vividカーネル(3.19)

●ext4ファイルシステム●fio パッケージ 2.1.3-1

ハードウェア(参考程度に)

Page 15: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ベンチマーク条件## シーケンシャルIOの検出/バイパスオフ$ echo 0 | sudo tee /sys/block/bcache0/bcache/sequential_cutoff

## レイテンシ検出オフ$ echo 0 | sudo tee \ /sys/fs/bcache/<CSET.UUID>/congested_read_threshold_us

$ echo 0 | sudo tee \ /sys/fs/bcache/<CSET.UUID>/congested_write_threshold_us

SSDを最大限活用するようにbcacheを設定

Page 16: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ベンチマーク条件[global]bs=4kioengine=libaioiodepth=4size=4gdirect=1runtime=60directory=/mnt/testfilename=ssd.test.file

fio: “examples/ssd-test.fio”のテストサイズを変更[seq-read]rw=readstonewall

[rand-read]rw=randreadstonewall

[seq-write]rw=writestonewall

[rand-write]rw=randwritestonewall

Page 17: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ベンチマーク結果読み込み

Page 18: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

ベンチマーク結果書き込み

Page 19: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

bcacheとMAAS

Page 20: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

MAAS 1.9 + curtinでbcacheサポート追加WebUIからも設定できる。現在RC3、まもなくリリース予定。

Page 21: “bcache”を使ってSSDの速さと HDDの大容量のいいとこどり 2015-12-12

Questions?