Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

SSDを大容量のHDDのキャッシュとして組み合わせ、大容量を実現しながらもランダムIO性能をSSD並にしてくれるbcacheの紹介です。

Nobuto Murata

December 12, 2015
Tweet

More Decks by Nobuto Murata

Other Decks in Technology

Transcript

  1. bcacheとは (2) • Linuxカーネル3.10でmainline入り • Ubuntuでは14.10(utopic)でbcache-tools(ユーザースペースツー ル)含めてTechnology Previewとしてリリースノート記載 • 主にサーバー向けという扱い

    • インストーラー(ubiquity, d-i)のサポートは今のところなし • Ubuntu 14.04 LTS(trusty)にもbcache-toolsが後からバックポートさ れた これまでの経緯
  2. 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-performa nce-gains-on-the-launchpad-database-servers/ SSDをキャッシュとして使える他の実装 • dm-cache • Flashcache/EnhanceIO • dm-writeboost など ドキュメント
  3. 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, t - {id: sdb, name: sdb, path: /dev/sdb, type: disk, wipe: superblock} - {device: sda, id: sda-part1, name: sda-part1, number: 1, offset: 4194304 - {device: sda, id: sda-part2, name: sda-part2, number: 2, size: 159719096 - {backing_device: sdb, cache_device: sda-part2, cache_mode: writeback, id - {fstype: ext4, id: sda-part1_format, label: '', type: format, uuid: 179d - {fstype: ext4, id: bcache0_format, label: '', type: format, uuid: 422d4b - {device: bcache0_format, id: bcache0_mount, path: /, type: mount} - {device: sda-part1_format, id: sda-part1_mount, path: /boot, type: mount version: 1 インストーラーのサポートがないので “/” にbcacheを使うのは簡単ではない
  4. 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用のパーティションを作成
  5. 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の指定
  6. 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/fstab UUID=<UUID> /media/bcache ext4 defaults 0 0 EOF $ sudo mount -a 作成したbcacheデバイスを/etc/fstabへ記述
  7. 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_mode writethrough [writeback] writearound none キャッシュモード
  8. ベンチマーク条件 • 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 ハードウェア(参考程度に)
  9. ベンチマーク条件 ## シーケンシャル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を設定
  10. ベンチマーク条件 [global] bs=4k ioengine=libaio iodepth=4 size=4g direct=1 runtime=60 directory=/mnt/test filename=ssd.test.file

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