<< DB2 Express-C v10.1のインストールガイドを書きました | main | DB2の勉強会 #clubdb2 次回は5/25「初心者歓迎!運用管理入門」 >>

最近のLinuxで有効になっているI/Oバリア機能と、RDBへの影響

比較的新しいカーネルを採用したLinuxディストリビューションでは、ファイルシステムのI/Oバリア (I/O barrier)機能がデフォルトで有効になっています。例えばRedhat Enterprise Linux (RHEL) 6やSUSE Linux Enterprise Server (SLES) 11等はインストール直後の状態でext4ファイルシステムのI/Oバリアが有効になっているようです。

I/Oバリアは簡単にいうと、「バリア命令」の後で発行されたI/Oは、バリア命令の前に発行されたI/Oの後に必ず実行されるようにする仕組みです。つまりI/Oの順序(物理ディスクに反映される順番)をまもらせる仕組みといえます。

ファイルシステムにI/Oバリア機能が追加されたのは、ファイルシステムが不整合な状態になる可能性を減らすためです。

そもそも、急な電源断でもファイルシステムの不整合が起こらないために、ext3やext4では「ジャーナル」と呼ばれるデータの「書き込み記録」が用意されています。ですのでこのジャーナルが正しく記録されていれば、ファイルシステムの不整合が起こらないはずなのですが、ハードディスクにキャッシュメモリが内蔵される事で、正しくジャーナルを書き出せない可能性が出てしまうのです。

ハードディスク装置にキャッシュが内蔵されると、書き込みでfsync()を実行しても、実際のディスクではなくキャッシュに書き込んだ時点でfsync()が返ってしまいます。

キャッシュに溜まったデータはいずれ実際のディスクに反映されますが、この反映途中で電源断が発生すると、物理ディスクには意図しない部分の(OSからの書き込みとは異なる順序で)データが反映されてしまう可能性があるわけです。

ファイルシステムのジャーナルは、ジャーナルが対応しているデータが反映される「前」に必ずディスクに書き込まれる必要がありますが、上のような電源断があると、データの方だけディスクに書き込まれて、ジャーナルのデータがロストしてしまう可能性があります。そうするとファイルシステムが不整合になってしまいますね。

※この説明はかなり端折って書いてしまっています。詳しい考え方については下記のblogエントリが分かりやすいです。

- Understanding Linux block IO barriers | Lifting the Earth using Linux

この不整合を防ぐために、デフォルトでバリアが有効になっているわけですが、これがどの程度速度に影響があるかはアプリケーションによって異なります。例えばRHEL 6のマニュアルには以下のような記述があります。

- Chapter 20. Write Barriers
Enabling write barriers incurs a substantial performance penalty for some applications. Specifically, applications that use fsync() heavily or create and delete many small files will likely run much slower.

fsync()を何度も実行したり、ファイルの作成と削除を多数行う場合は遅くなるとありますね。I/Oバリアを有効にすると、fsync()の前後にH/Wキャッシュへのフラッシュ命令が発行されるようになりますので、その分処理に時間がかかるようになります。

RDBの性能への影響がどの程度あるかについては、データを持っていないので良くわからないのですが、並行で書き出せば早くすむはずの書き出し処理(DB2だとバッファープールに溜まったダーティーなデータを表スペースに書きだす処理)を、順序を守って書き出す事になるわけですから、性能へのペナルティはあると考えるべきでしょうね。

例えばDB2 10.1+Redhat Enterprise Linux 6の場合について、DB2/Linuxのwikiには以下のような記載があります。

- Red Hat Enterprise Linux (RHEL) 6 - DB2 10.1 - Information Management
You are recommended to disable I/O barrier at mount time using the -o nobarrier option for mount on ext3 and ext4 file systems.

このようにI/Oバリアをオフにする事が推奨されていますね。DB2 10+SLES 11にも同じことが書かれていますので、こういった新しいディストリビューションでDB2を使う場合はI/Oバリアをオフにすると良いようです。

もちろんデータに不整合が発生してはいけないのですが、おそらくCOMMITした際にはDB2はトランザクションログをハードウェアのキャッシュまで含めてフラッシュしているため、ファイルシステム側で考慮してもらわなくても問題ないのでしょう。(DB2の挙動を確認したわけではないので、想像なのですが)

ext4でI/Oバリアをオフにするには、mount時にオプションbarrier=0かnobarrierを指定します(どちらでも良いようですが、RHELのマニュアルにはnobarrierと書かれていますし、SLESのマニュアルにはbarrier=0と書かれています)。

その他、XFSやreiserfsにもバリア機能が用意されています。

おそらくこのI/OバリアをOFFにしたほうが良いというのは、他の多くのRDBでも共通だと思われます。
例えばMySQLについては、(MySQLで超有名な)松信さんのプレゼン資料で"xfsはI/Oバリアがデフォルトで有効なので消すこと"と書かれています。(p.23)

- Linux/DB Tuning (DevSumi2010, Japanese)

コメント
コメントする(emailやurlは無記入でもOKです)









この記事のトラックバックURL (※SPAM対策のため、元記事のPermalink URLへのリンクがないものはトラックバックされません)
トラックバック
著書
「AWSではじめるデータレイク」
データレイクの本を書きました(共著)
DB2cover_small.jpg
DB2の管理方法を解説した本を書きました。
ad
無料のDb2 Community Edition
リンク集
about this site
recommend
プログラマのためのSQL 第4版
プログラマのためのSQL 第4版 (JUGEMレビュー »)
ジョー・セルコ
名著が第4版として、内容拡充されて発売されました。SQLの考え方を基礎からしっかり学習したい方にお勧めです。
recommend
recommend
WebSphere Application Server 構築・運用バイブル 【WAS8.5/8.0/7.0対応】
WebSphere Application Server 構築・運用バイブル 【WAS8.5/8.0/7.0対応】 (JUGEMレビュー »)
串宮 平恭,達見 圭介,田中 孝清,原口 知子,福崎 哲郎,盛林 哲
WebSphere Application Serverの運用管理本が出ました!WAS v7〜v8.5まで幅広いバージョンに対応しています。
recommend
recommend
Effective Java 第2版 (The Java Series)
Effective Java 第2版 (The Java Series) (JUGEMレビュー »)
Joshua Bloch
すべてのJava開発者必読の書が大幅改訂されて第2版になりました!。
文法などは解説していませんが、Java言語でプログラムを書くにはどういう事に気をつけるべきかという事が非常に端的に、かつ明確な理由とともに解説されています。
第2版ではJava SE 6対応がなされ、第1版で提案してJava SEに取り込まれた部分は整理され、新しい機能であるGenericsやアノテーションについての記述が多数追加されています。以前に増してお勧めできる書になりました。
まだ読んだことが無いJava開発者はぜひ読んでみてください。
recommend
 (JUGEMレビュー »)

基礎的なSQLは書けるようになったけど、今ひとつSQLのルールになんとなくしっくりこない、腑に落ちない。そんな人にお勧めの入門書です。SQLの根底に流れる基本的な考え方をやさしく解説してくれています。(レビューはこちら)
recommend
SQLパズル 第2版 プログラミングが変わる書き方/考え方
SQLパズル 第2版 プログラミングが変わる書き方/考え方 (JUGEMレビュー »)
ジョー・セルコ,Joe Celko
SQL入門を終えて、SQL中級/上級者になりたいと考えている方にぴったりのトレーニング本です(レビューはこちら)
recommend
XML-DB開発 実技コース
XML-DB開発 実技コース (JUGEMレビュー »)
下佐粉 昭,野間 愛一郎,久保 俊彦,高橋 賢司
XML-DBのやさしい入門書です。XMLの基礎から、XPath,XQueryの解説、設計の基礎、Javaでのプログラミング等盛りだくさんの内容です。
recommend
データベースパフォーマンスアップの教科書 基本原理編
データベースパフォーマンスアップの教科書 基本原理編 (JUGEMレビュー »)
エンコアコンサルティング
DBMSの基本的な内部構成、動作についての考え方をやさしく解説してくれています。(レビューはこちら)
recommend
メインフレーム実践ハンドブック z/OS(MVS),MSP,VOS3のしくみと使い方
メインフレーム実践ハンドブック z/OS(MVS),MSP,VOS3のしくみと使い方 (JUGEMレビュー »)
神居 俊哉
メインフレームの技術について、基礎概念から、実践的な使い方までを網羅した初めての解説書です。
recommend
 (JUGEMレビュー »)

CSSの概念/基礎をしっかりと解説してくれるCSS入門書。サイトへの実践的な適用方法も解説されています(レビューはこちら)
recent entries
categories
recent comments
  • Db2 11.5 Base Edition の標準サポート提供は2025年9月30日まで (Standard EditionやAdvanced Editionとは別です)
    sim (02/09)
  • Db2 11.5 Base Edition の標準サポート提供は2025年9月30日まで (Standard EditionやAdvanced Editionとは別です)
    oda (02/07)
  • ORDER BYでNULLを最小に持ってくるには
    通りすがり (03/15)
  • Db2をAWS上に構築する際のヒント&TIPS (2021年2月版)
    Jiyong, Jung (12/09)
  • DB2小ネタ - ALLOW REVERSE SCANS
    meijik (06/24)
  • DB2の正式名称が"Db2"に変更。dashDB for TransactionもDb2 on Cloudに名称変更
    Taco (06/24)
  • DB2でインスタンスを追加で作成するには
    SIM (03/18)
  • DB2でインスタンスを追加で作成するには
    晩衛 (03/17)
  • SQLの学習サイト
    SIM (03/26)
  • SQLの学習サイト
    DB (03/25)
recent trackbacks
archives