39
1 自宅SAN友の会 サーバ仮想化のためのストレージシステム入門 今更聞けないストレージの基本 Origine Uploaded by Angelina :) http://www.flickr.com/photos/angelinawb/1085267480/

Osc2011 Do

Embed Size (px)

Citation preview

Page 1: Osc2011 Do

1

自宅SAN友の会 サーバ仮想化のためのストレージシステム入門

今更聞けないストレージの基本

Origine Uploaded by Angelina :) http://www.flickr.com/photos/angelinawb/1085267480/

Page 2: Osc2011 Do

2

自己紹介

はら かずひさ

Twitter:kazuhisya

横浜市民

普段は某社で仮想化関連技術を軸に、 社内講師やら技術検証、御用聞きなんかしてます。

OSC出没率高し

Page 3: Osc2011 Do

3

ストレージってなんだっけ SANを始める前の基礎情報

Page 4: Osc2011 Do

4

ストレージって何だっけ

• ストレージ

– 単に『ストレージ』といった場合、いろいろ意味がある • DASストレージだとか

• NASストレージだとか

• SANストレージだとか

• 胃腸薬だとか

– 凄く乱暴な言い方をすると • 基本的に永続利用の(メモリと違って再起動しても消えないよ)

– 補助記憶装置だとか二次記憶装置とかとも言う

• ハードディスク

• SSD

• もしくは上記を束ねたやつを、OSやらアプリやらから、何かしらの形で使えるようにしたもの

Page 5: Osc2011 Do

5

最近の流行

兎にも角にも、SSD

Page 6: Osc2011 Do

6

SSDがやっぱ速い、とは言え・・・

• オールSSDでサービスを組むようになるには、まだ時間が掛かると思われる

– それなりに高額

– 安いやつは信頼性が・・・

– 容量の問題

• いずれ解決される・・・ハズ?

Page 7: Osc2011 Do

7

ここから本題

わりかし一般的に業務で使われる

HDDのチューニング

Origine Uploaded by autumn_bliss http://www.flickr.com/photos/autumn_bliss/198493795/

Page 8: Osc2011 Do

8

HDDの性能指標

• アクセスに掛かる時間

– 下記3つをあわせた時間

• シーク待ち時間

• 回転待ち時間

• 転送時間

– 実は基本情報に出てくる

Page 9: Osc2011 Do

9

ハードディスクの見方

• 大きさ – 3.5 / 2.5 / 1.8インチなど – サーバでは主に3.5、時々2.5イン

• 回転数

– 回転毎分 (rotation per minute) – 1分間に、何回円盤をまわせるか

• キャッシュ – 円盤から読み出したデータを一時

的に記憶したり – 書き込むデータを円盤に書く前に

一時的に置いたりする – 多い方が速い!とは限らないので

注意

• I/F – 接続する線の形式(線とは限らな

いけど・・・) – サーバでは、SAS、もしくは

SATA2が一般的

• ディスク枚数 – 円盤の枚数

• シークタイム

– ディスクヘッドが円盤の目的の部分に移動するのに要する時間

– これが短いほど、一般的には速いHDDということになる

Page 10: Osc2011 Do

10

インターフェースの話

• 要は線の話(PIC-Exとかもあるけど)

– 繋ぐ形式によって、限界が制限される • これに制限されるHDDは割と稀(SSDは簡単に超えたりする)

– たとえば • SATA(Serial Advanced Technology Attachment)

– SATA-150: 1.2 Gbit/s (150 MB/s)

– SATA-300: 2.4 Gbit/s (300 MB/s)

– SATA-600: 4.8 Gbit/s (600 MB/s)

– SATA-300(SATA2とも言う)がデスクトップPCやエントリーサーバに多い

• SAS(Serial Attached SCSI) – SAS 1.0: 3.0 Gbit/s (300 MB/s)

– SAS 2.0: 6.0 Gbit/s (600 MB/s)

Page 11: Osc2011 Do

11

ディスクアクセスの時間の感覚をつかむ

• ざっくりアクセスに掛かる時間の感覚

– CPU: 8ns(ナノセック)

– メモリ: 50ns

– NIC: 0.1ms (ミリセック)

– HDD: 5ms • かなりいい加減な数字

• それでもCPUやメモリに比べて10~100万倍オーダーで遅い

– シークタイムが 5msだとすると、1秒当たり200回アクセスできる

Page 12: Osc2011 Do

12

シーケンシャルとランダムアクセス

• シーケンシャルアクセス

– データを特定箇所から順に読み/書きする

– つまり円盤を普通にまわし、順繰りに読み書きすればよろしい

– アクセスしやすいので速い(≒カタログスペック)

• ランダムアクセス

– 読み書きしたいデータの場所をインデックスなどの位置情報をもとに割り出し、直接その場所にアクセスする方法

– つまり目的の箇所を探し出して、違うところは読み飛ばさなければならない

– 要は遅い

Page 13: Osc2011 Do

13

シーケンシャルとランダムアクセス

シーケンシャルアクセス ランダムアクセス

Page 14: Osc2011 Do

14

回転待ち時間

• 回転待ち時間を求める

– シークタイムはカタログスペックに載っている

– 回転待ち時間は?

– 基本情報の対策本とかに載ってるよ!

– 例: 7200rpmのSATA

• 7200 / 60秒 = 120回転

• 半回転だとざっくり240回/秒アクセスできる – アクセス、というは物理的な意味

Page 15: Osc2011 Do

15

HDD単体での性能

• シークタイム、回転待ち時間が特に重要

– 要は

• シークタイムが短く

• 回転数が多い

– ものを選べ、ということ

• Why?

– A. どんなに頑張っても、H/Wの限界性能以上はOSやミドルをいじっても出すことは出来ないから

• あんましエコではない

Page 16: Osc2011 Do

16

そんなに単純じゃない現実

I/Oスケジューラーも、ファイルシステムも、

あるんだよ

Page 17: Osc2011 Do

17

Linux Kernel

I/Oスケジューラ

Page 18: Osc2011 Do

18

Linux KernelのI/Oスケジューラ

• I/Oスケジューラってなんぞ

– HDD(ブロックデバイス)に対して、アクセス要求が来るたびに、正直に都度アクセスするのではなく、シーク待ちや回転待ちを最小化するよう、並び替えたりキューイングする機能

Page 19: Osc2011 Do

19

種類

• メジャーどころで3種類 – cfq (Completely Fair Queuing)

• RHEL系はこれがデフォルト • 特定プロセスにI/O要求が偏るのを防ぎ、他のプロセスにも

I/Oが振り分けられるように調整

– deadline • 読み/書きのI/Oをバランスよく処理する(≠プロセス単位) • 他のスケジューラは、読み/書きでは区別していない • 仮想化やDBサーバでお勧め(KVMの推奨スケジューラ)

– noop • 『I/O要求を物理Disk上に配置する』こと以外は特に行わな

い • スケジューリングをしない、という事(=スケジューリング

のオーバーヘッドが発生しない) • 自前でスケジューリングできるDBや、H/Wで行えるタイプ

のストレージやSSDを使うとき有利

Page 20: Osc2011 Do

20

確認・変更方法

1. 確認方法 # cat /sys/block/sda/queue/scheduler

noop [deadline] cfq

[ ]でくくられているのが今のスケジューラ

2. 変更(一時的) # echo noop > /sys/block/sda/queue/scheduler

3. 変更(永続) • grub.conf の kernel行 に elevator=deadline を追記

Page 21: Osc2011 Do

21

Linux

ファイルシステム

Page 22: Osc2011 Do

22

Linuxのファイルシステム

• よく使われるメジャーどころ – ext系

• ext2: 最近はあまり見ない

• ext3: 大体これが多い、RHEL5デフォルト

• ext4: 最近だとこちら、RHEL6デフォルト、後方互換性が高い

– XFS • RHEL5だとオプション扱い(別料金)

• ファイルレベルでなく、FSそのもにダイレクトアクセスできる(高速)

– btrfs • Solaris ZFSの対抗馬的なモダンFS(スナップショットなど)

• 非常によろしい、らしいけど商用で使うにはまだ時期尚早(?)

– 他にも • JFS, ReiseFSなども

• btrfs, NILFS2, Cephなど、最近はFSまわりは活発

Page 23: Osc2011 Do

23

ジャーナリングファイルシステム

• ext3, ext4, XFS…

– ジャーナリングファイルシステム

• ファイルシステム上のメタデータを書き換え処理(トランザクション)単位で管理・保持する事ができる

• 書き換え中に電源断や処理中断が発生し、ファイル構成情報に矛盾が発生した場合でも、素早く検査/修復処理を行うことが出来る

– ext2にはジャーナルがない

Page 24: Osc2011 Do

24

ext3のジャージャーナリング方式

• 基本的には3種類 – writeback

• メタデータのみをジャーナリング対象とする

• ジャーナリング順は保障されない

• ファイル消失は防げるが、データ消失リスクはある – 全て更新か、全く更新が無いか、しか判別できない

• 最も高速

• いつの間にかデフォルトになった模様

– orderd • メタデータのみをジャーナリング対象とする

• ジャーナリング順を保障する

• writebackよりも若干信頼性が高い

– journal • 実データもジャーナリング対象とする

• fsync() や fdatasync() を発行した所までは完全に保障される

• 最も低速

Page 25: Osc2011 Do

25

ext系チューニング

• 代表的なチューニング項目(マウントオプション) – dir_index

• DBのインディックスとほぼ同じ働き • ファイル数が多すぎるとパフォーマンスの逆転現象が起こりうる

– noatime • 最終アクセス時刻の記録を止める

– 作成時刻、更新時刻、アクセス時刻

• 更新時刻がアクセス時刻を追い越す罠 – 特定のアプリケーションで不具合あり

– relatime(kernel 2.6.20~) • 更新時刻(mtime)やファイル属性の修正時刻(ctime)が、最終アクセ

ス時刻を追い越したときに、atimeを修正する • noatimeよりもお勧め、デフォルトで有効になるディストリが多い

– discard • ext4,SSD用オプション • RHEL5.6 + ext3 では使えた • ATAデバイスにはTRIMコマンド、SCSIデバイスにはUNMAPコマン

ドを発行する

Page 26: Osc2011 Do

26

RAIDのおはなし

一般

Page 27: Osc2011 Do

27

RAIDの話

• RAID

– ハードウェアRAID

• いわゆるカードもの PCI-Express接続とか

• マザーボードの機能として付いてるものも – 廉価版は、ソフトウェアRAIDな場合も・・・

• 専用のコントローラーが処理する

• ライトキャッシュ(BBWC)が付いている事が結構ある

– ソフトウェアRAID

• 一般的にはOS側で束ねるRAID

• CPUが処理する

Page 28: Osc2011 Do

28

RAIDのおはなし

BBWC

Page 29: Osc2011 Do

29

BBWC

• Battery Backed Write Cache

– バッテリーバックアップ付きライトキャッシュ

• RAIDコントローラーに付けるキャッシュ装置

• 耐障害性を維持しつつ、書き込み性能を上げる事が出来る

• RAIDカードとHDD本体の間で働く

• エントリークラスで128~512MB程度はある

– キャッシュに乗り切るサイズであれば、OS側からfsync() などの同期書き込みが実行されても、キャッシュに高速に保存できる(その後よしなに実HDDに書かれる)

Page 30: Osc2011 Do

30

BBWC

• その後よしなに実HDDに書かれる?

– よしなに、とは

• デバドラに依存するが

• アクセス効率が良くなるように

• ある程度まとまった単位で書かれる

– ある程度まとまった単位

• シーケンシャルに読める可能性が高い

• Diskの回転、つまりコミット待ち発生を抑えることが出来る

Page 31: Osc2011 Do

31

BBWCを使うとき気にすること

• Q. BBWCを使う時、HDD自体のキャッシュはどうなるの?

• A. HDD側のキャッシュはOFFにしておくこと – RAIDコントローラーのコマンドでOFFに出来る – arcconfやBIOSなどでどうぞ

• Q. なんでHDD側のキャッシュはOFFの方がいい

の? • A. HDD側のキャッシュにはバッテリー乗っていない

よ! キャッシュ書ききる前に電源落ちたら、他も巻き込んでRAIDの領域全滅とかするよ!

Page 32: Osc2011 Do

32

RAIDのおはなし

ストライピングサイズ

Page 33: Osc2011 Do

33

ストライピングサイズ

• ストライピングサイズ/チャンクサイズ

– 複数のDiskにストライプする際のデータ分割単位、のこと

– 通常4kb~1MB程度の範囲

Page 34: Osc2011 Do

34

ストライピングサイズ

• ストライピングサイズが小さすぎると・・・

– 1ブロックが複数ディスクに跨って配置されてしまう

– 1ブロックを読み出すのに、複数アクセスする必要がある

– 複数アクセスを同時に行うから、速いのでは? • 1HDD / s あたりのランダムアクセスできる回数には上限

がある

• スループットが下がる

• 1ブロックの読み込みは、1アクセスで済ませるべき

• ストライピングサイズが大きすぎると・・・

– こんどはシーケンシャルが遅くなる • 分散読み込みできないから

Page 35: Osc2011 Do

35

ストライピングサイズの勘所

• 要はどの数値にするのがいいか

• 残念ながら要件次第

– シーケンシャルアクセスが多い

• 若干小さめに取る

– 例えば、4KB, 16KBなど

– ランダムアクセスが多い

• ブロックサイズより大幅に多く取る – 例えば256KB, 512KBなど

Page 36: Osc2011 Do

36

おわりに

Page 37: Osc2011 Do

37

おわりに

• 他にも考えることは、もっともっとあります

– RAIDレベルは?NCQは?キューザイズは?etc…

• なので

– H/Wを良く知ろう • 限界性能を知る

– Blogのコピペも良いけど、”何故そうなのか”も考えてみる

• ドラスティックにパフォーマンスに変化が出るようなものには、得てしてデメリットもあるものです

Page 38: Osc2011 Do

38

まとめ

• 慣れないことを本番環境でいきなりやるのはつらい • 懐具合と相談すれば、わりかしそれっぽい環境はできる • もちろんどう考えてもできないものある • 特にLinux周りのスキルはコストをあまりかけずとも習得

しやすい

• というわけで、主に自宅で(←SAN友の趣旨)検証してみましょう

Page 39: Osc2011 Do

39

おわり

続きは懇親会で!