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

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




                                                                                      1
Origine Uploaded by Angelina :) http://www.flickr.com/photos/angelinawb/1085267480/
自己紹介



           はら かずひさ
          Twitter:kazuhisya


              横浜市民

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




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




                3
ストレージって何だっけ
• ストレージ
 – 単に『ストレージ』といった場合、いろいろ意味がある
   •   DASストレージだとか
   •   NASストレージだとか
   •   SANストレージだとか
   •   胃腸薬だとか


 – 凄く乱暴な言い方をすると
   • 基本的に永続利用の(メモリと違って再起動しても消えないよ)
       – 補助記憶装置だとか二次記憶装置とかとも言う
   • ハードディスク
   • SSD
   • もしくは上記を束ねたやつを、OSやらアプリやらから、何かしらの
     形で使えるようにしたもの
                                     4
最近の流行




   兎にも角にも、SSD


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


• オールSSDでサービスを組むようになるに
  は、まだ時間が掛かると思われる
 – それなりに高額
 – 安いやつは信頼性が・・・
 – 容量の問題
  • いずれ解決される・・・ハズ?




                         6
ここから本題

                         わりかし一般的に業務で使われる
                            HDDのチューニング




                                                                                        7
Origine Uploaded by autumn_bliss http://www.flickr.com/photos/autumn_bliss/198493795/
HDDの性能指標


• アクセスに掛かる時間
 – 下記3つをあわせた時間

  • シーク待ち時間
  • 回転待ち時間
  • 転送時間
   – 実は基本情報に出てくる



                   8
ハードディスクの見方



•   大きさ                            •   I/F
    – 3.5 / 2.5 / 1.8インチなど              – 接続する線の形式(線とは限らな
    – サーバでは主に3.5、時々2.5イン                  いけど・・・)
      チ                                 – サーバでは、SAS、もしくは
                                          SATA2が一般的

•   回転数                            •   ディスク枚数
    – 回転毎分 (rotation per minute)        – 円盤の枚数
    – 1分間に、何回円盤をまわせるか
                                   •   シークタイム
•   キャッシュ                               – ディスクヘッドが円盤の目的の部
    – 円盤から読み出したデータを一時                     分に移動するのに要する時間
      的に記憶したり                           – これが短いほど、一般的には速い
    – 書き込むデータを円盤に書く前に                     HDDということになる
      一時的に置いたりする
    – 多い方が速い!とは限らないので
      注意
                                                            9
インターフェースの話
• 要は線の話(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)
                                                    10
ディスクアクセスの時間の感覚をつかむ
• ざっくりアクセスに掛か
  る時間の感覚

 –   CPU: 8ns(ナノセック)
 –   メモリ: 50ns
 –   NIC: 0.1ms (ミリセック)
 –   HDD: 5ms
     • かなりいい加減な数字
     • それでもCPUやメモリに比べ
       て10~100万倍オーダーで
       遅い


 – シークタイムが 5msだと
   すると、1秒当たり200回
   アクセスできる                11
シーケンシャルとランダムアクセス
• シーケンシャルアクセス
 – データを特定箇所から順に読み/書きする
 – つまり円盤を普通にまわし、順繰りに読み書きすれば
   よろしい
 – アクセスしやすいので速い(≒カタログスペック)


• ランダムアクセス
 – 読み書きしたいデータの場所をインデックスなどの位
   置情報をもとに割り出し、直接その場所にアクセスす
   る方法
 – つまり目的の箇所を探し出して、違うところは読み飛
   ばさなければならない
 – 要は遅い                       12
シーケンシャルとランダムアクセス




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



                          13
回転待ち時間
• 回転待ち時間を求める
 – シークタイムはカタログスペックに載ってい
   る
 – 回転待ち時間は?

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

 – 例: 7200rpmのSATA
   • 7200 / 60秒 = 120回転
   • 半回転だとざっくり240回/秒アクセスできる
     – アクセス、というは物理的な意味
                              14
HDD単体での性能
• シークタイム、回転待ち時間が特に重要
 – 要は
   • シークタイムが短く
   • 回転数が多い
 – ものを選べ、ということ


• Why?
 – A. どんなに頑張っても、H/Wの限界性能以上
   はOSやミドルをいじっても出すことは出来な
   いから
   • あんましエコではない
                             15
そんなに単純じゃない現実
I/Oスケジューラーも、ファイルシステムも、
          あるんだよ




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




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


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




                            18
種類
• メジャーどころで3種類
 – cfq (Completely Fair Queuing)
     • RHEL系はこれがデフォルト
     • 特定プロセスにI/O要求が偏るのを防ぎ、他のプロセスにも
       I/Oが振り分けられるように調整

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

 – noop
     • 『I/O要求を物理Disk上に配置する』こと以外は特に行わな
       い
     • スケジューリングをしない、という事(=スケジューリング
       のオーバーヘッドが発生しない)
     • 自前でスケジューリングできるDBや、H/Wで行えるタイプ
       のストレージやSSDを使うとき有利                19
確認・変更方法

1. 確認方法
 # cat /sys/block/sda/queue/scheduler
 noop [deadline] cfq

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


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


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

                                                 20
Linux
ファイルシステム




           21
Linuxのファイルシステム
• よく使われるメジャーどころ
 – ext系
    • ext2: 最近はあまり見ない
    • ext3: 大体これが多い、RHEL5デフォルト
    • ext4: 最近だとこちら、RHEL6デフォルト、後方互換性が高い

 – XFS
    • RHEL5だとオプション扱い(別料金)
    • ファイルレベルでなく、FSそのもにダイレクトアクセスできる(高
      速)

 – btrfs
    • Solaris ZFSの対抗馬的なモダンFS(スナップショットなど)
    • 非常によろしい、らしいけど商用で使うにはまだ時期尚早(?)

 – 他にも
    • JFS, ReiseFSなども
    • btrfs, NILFS2, Cephなど、最近はFSまわりは活発    22
ジャーナリングファイルシステム


• ext3, ext4, XFS…
  – ジャーナリングファイルシステム
    • ファイルシステム上のメタデータを書き換え処理
      (トランザクション)単位で管理・保持する事が
      できる
    • 書き換え中に電源断や処理中断が発生し、ファイ
      ル構成情報に矛盾が発生した場合でも、素早く検
      査/修復処理を行うことが出来る
      – ext2にはジャーナルがない



                               23
ext3のジャージャーナリング方式
• 基本的には3種類
 – writeback
    • メタデータのみをジャーナリング対象とする
    • ジャーナリング順は保障されない
    • ファイル消失は防げるが、データ消失リスクはある
        – 全て更新か、全く更新が無いか、しか判別できない
    • 最も高速
    • いつの間にかデフォルトになった模様

 – orderd
    • メタデータのみをジャーナリング対象とする
    • ジャーナリング順を保障する
    • writebackよりも若干信頼性が高い

 – journal
    • 実データもジャーナリング対象とする
    • fsync() や fdatasync() を発行した所までは完全に保障される
    • 最も低速                                      24
ext系チューニング
• 代表的なチューニング項目(マウントオプション)
 – dir_index
    • DBのインディックスとほぼ同じ働き
    • ファイル数が多すぎるとパフォーマンスの逆転現象が起こりうる

 – noatime
    • 最終アクセス時刻の記録を止める
        – 作成時刻、更新時刻、アクセス時刻
    • 更新時刻がアクセス時刻を追い越す罠
        – 特定のアプリケーションで不具合あり

 – relatime(kernel 2.6.20~)
    • 更新時刻(mtime)やファイル属性の修正時刻(ctime)が、最終アクセ
      ス時刻を追い越したときに、atimeを修正する
    • noatimeよりもお勧め、デフォルトで有効になるディストリが多い

 – discard
    • ext4,SSD用オプション
    • RHEL5.6 + ext3 では使えた
    • ATAデバイスにはTRIMコマンド、SCSIデバイスにはUNMAPコマン    25
      ドを発行する
RAIDのおはなし
   一般




            26
RAIDの話
• RAID
  – ハードウェアRAID
    • いわゆるカードもの PCI-Express接続とか
    • マザーボードの機能として付いてるものも
         – 廉価版は、ソフトウェアRAIDな場合も・・・
    • 専用のコントローラーが処理する
    • ライトキャッシュ(BBWC)が付いている事が結構あ
      る


  – ソフトウェアRAID
    • 一般的にはOS側で束ねるRAID
    • CPUが処理する
                                    27
RAIDのおはなし
    BBWC




            28
BBWC
• Battery Backed Write Cache
  – バッテリーバックアップ付きライトキャッ
    シュ
    • RAIDコントローラーに付けるキャッシュ装置
    • 耐障害性を維持しつつ、書き込み性能を上げる事
      が出来る
    • RAIDカードとHDD本体の間で働く
    • エントリークラスで128~512MB程度はある


  – キャッシュに乗り切るサイズであれば、OS
    側からfsync() などの同期書き込みが実行さ
    れても、キャッシュに高速に保存できる(その
                                29
    後よしなに実HDDに書かれる)
BBWC
• その後よしなに実HDDに書かれる?
 – よしなに、とは
  • デバドラに依存するが
  • アクセス効率が良くなるように
  • ある程度まとまった単位で書かれる


 – ある程度まとまった単位
  • シーケンシャルに読める可能性が高い
  • Diskの回転、つまりコミット待ち発生を抑え
    ることが出来る


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




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

• Q. なんでHDD側のキャッシュはOFFの方がいい
  の?
• A. HDD側のキャッシュにはバッテリー乗っていない
  よ! キャッシュ書ききる前に電源落ちたら、他も巻き    31
RAIDのおはなし
ストライピングサイズ




             32
ストライピングサイズ



• ストライピングサイズ/チャンクサイズ
 – 複数のDiskにストライプする際のデータ
   分割単位、のこと
 – 通常4kb~1MB程度の範囲




                          33
ストライピングサイズ
• ストライピングサイズが小さすぎると・・・
 – 1ブロックが複数ディスクに跨って配置されてしまう
 – 1ブロックを読み出すのに、複数アクセスする必要が
   ある

 – 複数アクセスを同時に行うから、速いのでは?
  • 1HDD / s あたりのランダムアクセスできる回数には上限
    がある
  • スループットが下がる
  • 1ブロックの読み込みは、1アクセスで済ませるべき


• ストライピングサイズが大きすぎると・・・
 – こんどはシーケンシャルが遅くなる
                                     34
  • 分散読み込みできないから
ストライピングサイズの勘所
• 要はどの数値にするのがいいか

• 残念ながら要件次第
 – シーケンシャルアクセスが多い
  • 若干小さめに取る
   – 例えば、4KB, 16KBなど


 – ランダムアクセスが多い
  • ブロックサイズより大幅に多く取る
   – 例えば256KB, 512KBなど


                         35
おわりに




       36
おわりに

• 他にも考えることは、もっともっとあります
 – RAIDレベルは?NCQは?キューザイズは?etc…


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


 – Blogのコピペも良いけど、”何故そうなのか”も考
   えてみる
   • ドラスティックにパフォーマンスに変化が出るような
     ものには、得てしてデメリットもあるものです
                                37
まとめ




• 慣れないことを本番環境でいきなりやるのはつらい
 • 懐具合と相談すれば、わりかしそれっぽい環境はできる
 • もちろんどう考えてもできないものある
 • 特にLinux周りのスキルはコストをあまりかけずとも習得
   しやすい
• というわけで、主に自宅で(←SAN友の趣旨)検証し
  てみましょう
                                  38
おわり

続きは懇親会で!




           39

More Related Content

PDF
キャッシュ・権威 兼用型浸透問題への対処
PDF
WalBの紹介
PDF
DNSキャッシュサーバ チューニングの勘所
PDF
Mobageの技術を体験(MyDNS編)
PDF
WALをバックアップとレプリケーションに使う方法
PDF
10分で分かるデータストレージ
PDF
10分で分かるLinuxブロックレイヤ
PDF
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
キャッシュ・権威 兼用型浸透問題への対処
WalBの紹介
DNSキャッシュサーバ チューニングの勘所
Mobageの技術を体験(MyDNS編)
WALをバックアップとレプリケーションに使う方法
10分で分かるデータストレージ
10分で分かるLinuxブロックレイヤ
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3

What's hot (20)

PDF
PowerDNSのご紹介
PPTX
Consistency level
PDF
CPUの同時実行機能
PDF
10分で分かるバックアップとレプリケーション
PPT
Web Service on SSD
PDF
Code jp2015 cpuの話
PDF
Cpu cache arch
PDF
MySQL 初めてのチューニング
PPTX
Cloud os techday_0614
PDF
Windows Azure の中でも動いている InfiniBand って何?
PDF
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
PDF
MySQLやSSDとかの話 後編
PDF
EthernetやCPUなどの話
PDF
MySQLやSSDとかの話 その後
PDF
5分でわかる Apache HBase 最新版 #hcj2014
PPTX
地理分散DBについて
PDF
はじめるCassandra
PPTX
Seastar in 歌舞伎座.tech#8「C++初心者会」
PDF
TIME_WAITに関する話
PDF
トランザクションの並行処理制御
PowerDNSのご紹介
Consistency level
CPUの同時実行機能
10分で分かるバックアップとレプリケーション
Web Service on SSD
Code jp2015 cpuの話
Cpu cache arch
MySQL 初めてのチューニング
Cloud os techday_0614
Windows Azure の中でも動いている InfiniBand って何?
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
MySQLやSSDとかの話 後編
EthernetやCPUなどの話
MySQLやSSDとかの話 その後
5分でわかる Apache HBase 最新版 #hcj2014
地理分散DBについて
はじめるCassandra
Seastar in 歌舞伎座.tech#8「C++初心者会」
TIME_WAITに関する話
トランザクションの並行処理制御
Ad

Similar to Osc2011 Do (20)

PPTX
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
PDF
20111028ssmjp
KEY
20110805 hddssd research
PDF
仮想化環境の設計手法 〜プロのテクニック教えます〜
PDF
Hadoopのシステム設計・運用のポイント
PDF
NAND Flash から InnoDB にかけての話(仮)
PDF
佐野裕章 Virident 社製半導体ストレージ flash max の検証
PDF
qpstudy 2014.04 ハードウェア設計の勘所
PDF
Spectre/Meltdownとその派生
PPTX
Mvp road show_0830_rev1
PPTX
システムパフォーマンス勉強会#4
PPTX
システムパフォーマンス勉強会#4
PDF
Infinispan - Open Source Data Grid rev2
PDF
20120913 nosql@hikarie(okuyama fuse)
PPT
osoljp201105_ZFSjiman_nslope
PDF
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
PDF
20apr2012 kernelvm7-main
PDF
introduction of WalB
PPTX
Redis速習会@Wantedly
PPT
Linux/DB Tuning (DevSumi2010, Japanese)
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
20111028ssmjp
20110805 hddssd research
仮想化環境の設計手法 〜プロのテクニック教えます〜
Hadoopのシステム設計・運用のポイント
NAND Flash から InnoDB にかけての話(仮)
佐野裕章 Virident 社製半導体ストレージ flash max の検証
qpstudy 2014.04 ハードウェア設計の勘所
Spectre/Meltdownとその派生
Mvp road show_0830_rev1
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
Infinispan - Open Source Data Grid rev2
20120913 nosql@hikarie(okuyama fuse)
osoljp201105_ZFSjiman_nslope
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
20apr2012 kernelvm7-main
introduction of WalB
Redis速習会@Wantedly
Linux/DB Tuning (DevSumi2010, Japanese)
Ad

More from Kazuhisa Hara (7)

PDF
ZFS on Linux @ZFS Day 2011.10
PDF
Osc2010 Do LT
PDF
Osc2009 Do Xen Hara
PDF
Xen Nic
PDF
Osc2008 Opensuse Moonlinx
PDF
Osc2009 Sendai Xen 0124
PDF
090214ldd Mogilefs
ZFS on Linux @ZFS Day 2011.10
Osc2010 Do LT
Osc2009 Do Xen Hara
Xen Nic
Osc2008 Opensuse Moonlinx
Osc2009 Sendai Xen 0124
090214ldd Mogilefs

Recently uploaded (11)

PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Working as an OSS Developer at Ruby Association Activity Report 2025
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
20250823_IoTLT_vol126_kitazaki_v1___.pdf

Osc2011 Do

  • 1. 自宅SAN友の会 サーバ仮想化のためのストレージシステム入門 今更聞けないストレージの基本 1 Origine Uploaded by Angelina :) http://www.flickr.com/photos/angelinawb/1085267480/
  • 2. 自己紹介 はら かずひさ Twitter:kazuhisya 横浜市民 普段は某社で仮想化関連技術を軸に、 社内講師やら技術検証、御用聞きなんかしてます。 OSC出没率高し 2
  • 4. ストレージって何だっけ • ストレージ – 単に『ストレージ』といった場合、いろいろ意味がある • DASストレージだとか • NASストレージだとか • SANストレージだとか • 胃腸薬だとか – 凄く乱暴な言い方をすると • 基本的に永続利用の(メモリと違って再起動しても消えないよ) – 補助記憶装置だとか二次記憶装置とかとも言う • ハードディスク • SSD • もしくは上記を束ねたやつを、OSやらアプリやらから、何かしらの 形で使えるようにしたもの 4
  • 5. 最近の流行 兎にも角にも、SSD 5
  • 6. SSDがやっぱ速い、とは言え・・・ • オールSSDでサービスを組むようになるに は、まだ時間が掛かると思われる – それなりに高額 – 安いやつは信頼性が・・・ – 容量の問題 • いずれ解決される・・・ハズ? 6
  • 7. ここから本題 わりかし一般的に業務で使われる HDDのチューニング 7 Origine Uploaded by autumn_bliss http://www.flickr.com/photos/autumn_bliss/198493795/
  • 8. HDDの性能指標 • アクセスに掛かる時間 – 下記3つをあわせた時間 • シーク待ち時間 • 回転待ち時間 • 転送時間 – 実は基本情報に出てくる 8
  • 9. ハードディスクの見方 • 大きさ • I/F – 3.5 / 2.5 / 1.8インチなど – 接続する線の形式(線とは限らな – サーバでは主に3.5、時々2.5イン いけど・・・) チ – サーバでは、SAS、もしくは SATA2が一般的 • 回転数 • ディスク枚数 – 回転毎分 (rotation per minute) – 円盤の枚数 – 1分間に、何回円盤をまわせるか • シークタイム • キャッシュ – ディスクヘッドが円盤の目的の部 – 円盤から読み出したデータを一時 分に移動するのに要する時間 的に記憶したり – これが短いほど、一般的には速い – 書き込むデータを円盤に書く前に HDDということになる 一時的に置いたりする – 多い方が速い!とは限らないので 注意 9
  • 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) 10
  • 11. ディスクアクセスの時間の感覚をつかむ • ざっくりアクセスに掛か る時間の感覚 – CPU: 8ns(ナノセック) – メモリ: 50ns – NIC: 0.1ms (ミリセック) – HDD: 5ms • かなりいい加減な数字 • それでもCPUやメモリに比べ て10~100万倍オーダーで 遅い – シークタイムが 5msだと すると、1秒当たり200回 アクセスできる 11
  • 12. シーケンシャルとランダムアクセス • シーケンシャルアクセス – データを特定箇所から順に読み/書きする – つまり円盤を普通にまわし、順繰りに読み書きすれば よろしい – アクセスしやすいので速い(≒カタログスペック) • ランダムアクセス – 読み書きしたいデータの場所をインデックスなどの位 置情報をもとに割り出し、直接その場所にアクセスす る方法 – つまり目的の箇所を探し出して、違うところは読み飛 ばさなければならない – 要は遅い 12
  • 14. 回転待ち時間 • 回転待ち時間を求める – シークタイムはカタログスペックに載ってい る – 回転待ち時間は? – 基本情報の対策本とかに載ってるよ! – 例: 7200rpmのSATA • 7200 / 60秒 = 120回転 • 半回転だとざっくり240回/秒アクセスできる – アクセス、というは物理的な意味 14
  • 15. HDD単体での性能 • シークタイム、回転待ち時間が特に重要 – 要は • シークタイムが短く • 回転数が多い – ものを選べ、ということ • Why? – A. どんなに頑張っても、H/Wの限界性能以上 はOSやミドルをいじっても出すことは出来な いから • あんましエコではない 15
  • 18. Linux KernelのI/Oスケジューラ • I/Oスケジューラってなんぞ – HDD(ブロックデバイス)に対して、アクセス 要求が来るたびに、正直に都度アクセスする のではなく、シーク待ちや回転待ちを最小化 するよう、並び替えたりキューイングする機 能 18
  • 19. 種類 • メジャーどころで3種類 – cfq (Completely Fair Queuing) • RHEL系はこれがデフォルト • 特定プロセスにI/O要求が偏るのを防ぎ、他のプロセスにも I/Oが振り分けられるように調整 – deadline • 読み/書きのI/Oをバランスよく処理する(≠プロセス単位) • 他のスケジューラは、読み/書きでは区別していない • 仮想化やDBサーバでお勧め(KVMの推奨スケジューラ) – noop • 『I/O要求を物理Disk上に配置する』こと以外は特に行わな い • スケジューリングをしない、という事(=スケジューリング のオーバーヘッドが発生しない) • 自前でスケジューリングできるDBや、H/Wで行えるタイプ のストレージやSSDを使うとき有利 19
  • 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 を追記 20
  • 22. Linuxのファイルシステム • よく使われるメジャーどころ – ext系 • ext2: 最近はあまり見ない • ext3: 大体これが多い、RHEL5デフォルト • ext4: 最近だとこちら、RHEL6デフォルト、後方互換性が高い – XFS • RHEL5だとオプション扱い(別料金) • ファイルレベルでなく、FSそのもにダイレクトアクセスできる(高 速) – btrfs • Solaris ZFSの対抗馬的なモダンFS(スナップショットなど) • 非常によろしい、らしいけど商用で使うにはまだ時期尚早(?) – 他にも • JFS, ReiseFSなども • btrfs, NILFS2, Cephなど、最近はFSまわりは活発 22
  • 23. ジャーナリングファイルシステム • ext3, ext4, XFS… – ジャーナリングファイルシステム • ファイルシステム上のメタデータを書き換え処理 (トランザクション)単位で管理・保持する事が できる • 書き換え中に電源断や処理中断が発生し、ファイ ル構成情報に矛盾が発生した場合でも、素早く検 査/修復処理を行うことが出来る – ext2にはジャーナルがない 23
  • 24. ext3のジャージャーナリング方式 • 基本的には3種類 – writeback • メタデータのみをジャーナリング対象とする • ジャーナリング順は保障されない • ファイル消失は防げるが、データ消失リスクはある – 全て更新か、全く更新が無いか、しか判別できない • 最も高速 • いつの間にかデフォルトになった模様 – orderd • メタデータのみをジャーナリング対象とする • ジャーナリング順を保障する • writebackよりも若干信頼性が高い – journal • 実データもジャーナリング対象とする • fsync() や fdatasync() を発行した所までは完全に保障される • 最も低速 24
  • 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コマン 25 ドを発行する
  • 26. RAIDのおはなし 一般 26
  • 27. RAIDの話 • RAID – ハードウェアRAID • いわゆるカードもの PCI-Express接続とか • マザーボードの機能として付いてるものも – 廉価版は、ソフトウェアRAIDな場合も・・・ • 専用のコントローラーが処理する • ライトキャッシュ(BBWC)が付いている事が結構あ る – ソフトウェアRAID • 一般的にはOS側で束ねるRAID • CPUが処理する 27
  • 29. BBWC • Battery Backed Write Cache – バッテリーバックアップ付きライトキャッ シュ • RAIDコントローラーに付けるキャッシュ装置 • 耐障害性を維持しつつ、書き込み性能を上げる事 が出来る • RAIDカードとHDD本体の間で働く • エントリークラスで128~512MB程度はある – キャッシュに乗り切るサイズであれば、OS 側からfsync() などの同期書き込みが実行さ れても、キャッシュに高速に保存できる(その 29 後よしなに実HDDに書かれる)
  • 30. BBWC • その後よしなに実HDDに書かれる? – よしなに、とは • デバドラに依存するが • アクセス効率が良くなるように • ある程度まとまった単位で書かれる – ある程度まとまった単位 • シーケンシャルに読める可能性が高い • Diskの回転、つまりコミット待ち発生を抑え ることが出来る 30
  • 31. BBWCを使うとき気にすること • Q. BBWCを使う時、HDD自体のキャッシュはどう なるの? • A. HDD側のキャッシュはOFFにしておくこと – RAIDコントローラーのコマンドでOFFに出来る – arcconfやBIOSなどでどうぞ • Q. なんでHDD側のキャッシュはOFFの方がいい の? • A. HDD側のキャッシュにはバッテリー乗っていない よ! キャッシュ書ききる前に電源落ちたら、他も巻き 31
  • 33. ストライピングサイズ • ストライピングサイズ/チャンクサイズ – 複数のDiskにストライプする際のデータ 分割単位、のこと – 通常4kb~1MB程度の範囲 33
  • 34. ストライピングサイズ • ストライピングサイズが小さすぎると・・・ – 1ブロックが複数ディスクに跨って配置されてしまう – 1ブロックを読み出すのに、複数アクセスする必要が ある – 複数アクセスを同時に行うから、速いのでは? • 1HDD / s あたりのランダムアクセスできる回数には上限 がある • スループットが下がる • 1ブロックの読み込みは、1アクセスで済ませるべき • ストライピングサイズが大きすぎると・・・ – こんどはシーケンシャルが遅くなる 34 • 分散読み込みできないから
  • 35. ストライピングサイズの勘所 • 要はどの数値にするのがいいか • 残念ながら要件次第 – シーケンシャルアクセスが多い • 若干小さめに取る – 例えば、4KB, 16KBなど – ランダムアクセスが多い • ブロックサイズより大幅に多く取る – 例えば256KB, 512KBなど 35
  • 37. おわりに • 他にも考えることは、もっともっとあります – RAIDレベルは?NCQは?キューザイズは?etc… • なので – H/Wを良く知ろう • 限界性能を知る – Blogのコピペも良いけど、”何故そうなのか”も考 えてみる • ドラスティックにパフォーマンスに変化が出るような ものには、得てしてデメリットもあるものです 37
  • 38. まとめ • 慣れないことを本番環境でいきなりやるのはつらい • 懐具合と相談すれば、わりかしそれっぽい環境はできる • もちろんどう考えてもできないものある • 特にLinux周りのスキルはコストをあまりかけずとも習得 しやすい • というわけで、主に自宅で(←SAN友の趣旨)検証し てみましょう 38