Upload
nobuto-murata
View
2.945
Download
3
Embed Size (px)
Citation preview
“bcache”を使ってSSDの速さとHDDの大容量のいいとこどりUbuntu 15.10リリース記念オフラインミーティング15.122015-12-12
Nobuto Murata <[email protected]>
bcache とは (1)
bcacheは、比較的小容量のSSD(価格抑えめ)を大容量のHDDのキャッシュとして組み合わせ、大容量を実現しながらもランダムIO性能をSSD並にしてくれる技術。
一般にSSDとHDD …を比べると容量あたりの価格 ランダムIO性能
SSD 高い☹ 高い☺
HDD 安い☺ 低い☹
bcache とは (2)
●Linuxカーネル3.10でmainline入り●Ubuntuでは14.10(utopic)でbcache-tools(ユーザースペースツール)含めてTechnology Previewとしてリリースノート記載●主にサーバー向けという扱い●インストーラー(ubiquity, d-i)のサポートは今のところなし
●Ubuntu 14.04 LTS(trusty)にもbcache-toolsが後からバックポートされた
これまでの経緯
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 など
ドキュメント
bcacheのセットアップ
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を使うのは簡単ではない
ストレージに変更を加えるので、バックアップは忘れずに。
bcacheのセットアップ今回はd-iでインストール後に、データ領域だけbcache化する
backing device
SSD/dev/sda
HDD/dev/sdb
2: OS 3: cacheEFI
bcacheのセットアップd-iでSSD内にOS領域を確保してインストール
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用のパーティションを作成
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の指定
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へ記述
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
キャッシュモード
ベンチマーク(参考程度に)
ベンチマーク条件●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
ハードウェア(参考程度に)
ベンチマーク条件## シーケンシャル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を設定
ベンチマーク条件[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
ベンチマーク結果読み込み
ベンチマーク結果書き込み
bcacheとMAAS
MAAS 1.9 + curtinでbcacheサポート追加WebUIからも設定できる。現在RC3、まもなくリリース予定。
Questions?