日本IBMのLinux技術情報ページが新しくなりました

日本IBMのLinux技術情報ページが新しくなりました。URLも変更になっています。
新しいURLは以下です。

http://www.ibm.com/jp/linux/tech/index.html

主にLinux+IBM製品(ハードウェア、ソフトウェア)の組み合わせについての技術情報が掲載されていますが、Linux単体に関係する情報も多数掲載されていますし、IBM製品以外との組み合わせ(OracleとかCLUSTERPROとか)の情報も掲載されていますので、ぜひチェックしてみてください。

PerlからDB2に接続する環境をPerlBrewを使って構築する方法

前から書こう、書こうと思って書いていなかった、PerlからDB2に接続するための環境構築についてのドキュメントを個人サイト(portablecode.info)の方にまとめました。

- Perl+DB2環境をUbuntu 12.04にPerlbrewで構築する

もう1年以上も前ですが「Perl好きの女性Webエンジニア二人がIBM DB2を試してみた」の記事に対してのブックマークコメントで記事中にPerlに関する情報が全然無いという指摘を受けて以来、書こうと思っていたのですが、すっかり時間が経ってしまいました。

Ubuntu 12.04の上に、Perlbrewという複数のPerlを導入して簡単に切り替えることができるための仕組みを使って最新版のPerlを導入してDB2に接続するまでの方法を解説しています。PerlbrewをUbuntuに導入する部分だけでも(DB2とは関係なく)参考になるかもしれません。ご興味がある方はぜひご覧ください。

Ubuntu 12.04にDB2 Express-C 10.1をインストールしてみました

Ubuntuの最新バージョン12.04に、こちらも最新バージョンのDB2 Express-C 10.1をインストールしてみました。特に問題なく導入できて、動いています。

ただし、Ubuntu 12.04はDB2 v10.1の正式サポートOSではありませんのでご注意ください。

正式にサポートされるのはUbuntu 10.04やRHEL 5/6,SLES 10/11です。詳しくは以下のリンクに解説があります。

- DB2 and DB2 Connect 10.1 for Linux - Supported Environments

Ubuntu 12.04もDB2 v10.1も同じ2012年4月末にリリースされたので、サポートが間に合わないのは仕方ないですね。(いずれ、どこかのFix Packでサポートされるのではと期待しているのですが)

導入自体は、これまでと同じで問題ありませんでした。最初にDB2導入に必須のパッケージを導入します。

> sudo aptitude update
> sudo aptitude install libaio1 ksh libstdc++6-4.4-dev libstdc++6-4.4-pic

あとは、以下からDB2 Express-C for Linuxをダウンロードして導入するだけです。

- Download DB2 Express-C

ダウンロードしたアーカイブ(今回は32bit版で試したので、db2_v101_linuxia32_expc.tar.gz)を適当なディレクトリに展開して、その中のインストーラーファイルを実行するだけです。今回はCUIインストーラーのdb2_installを実行しました。

> sudo ./db2_install

ただ、この方法(CUIインストーラーでの導入)は、インスタンス作成などをしてくれないので、慣れていない方はGUIインストーラー(db2setup)での導入がお勧めです。GUIインストーラーでの導入方法は以下を参照してください。

- Ubuntu 11.04にDB2 Express-C 9.7 FP4をインストールしてみました

- DB2 Express-C 10.1 for Linux クイックインストール

db2levelは以下のようになりました。今回は言語パック(National Language Pack)を入れていないのでメッセージが英語です。

$ db2level
DB21085I Instance "db2inst1" uses "32" bits and DB2 code release "SQL10010"
with level identifier "0201010E".
Informational tokens are "DB2 v10.1.0.0", "s120403", "LINUXIA32101", and Fix
Pack "0".
Product is installed at "/opt/ibm/db2/V10.1".

最近の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)

RHEL 6やSLES11に208日以上の連続稼働でカーネルパニックが発生する問題

Redhat Enterprise Linux (RHEL) 6やSUSE Linux Enterprise Server 11等の新しいディストリビューションに、「208日以上連続稼動(起動)するとカーネルパニックを起こす」という珍しい問題が見つかっています。おそらく近いカーネルレベルを持つ全てのディストリビューションに影響があるはずで、同様にUbuntuでも報告されています。

- kernel bug fix update - access.redhat.com
- Possible system freeze after more than 208 days(SLES) (※少し前までアクセスできたのですが、今はアクセスできないようです)
- Bug #805341 in linux (Ubuntu): “sched clock overflows in 208 days (i386 and amd64)”

Novelのページから引用しますと、以下の条件を満たすと問題が発生するそうです。
CPU vendor is Intel

/proc/cpuinfo contains both the CPU flags
constant_tsc
nonstop_tsc

dmesg and/or /var/log/boot.msg does not contain the string

Marking TSC unstable

kernel flavor is not xen


RHEL、SLES、Ubuntuにはすでにパッチが適用された新カーネルが公開されているので、アップデートすれば良いようです。

「IBMのLinux/OSSへの取り組み2011版」で示されたLinux開発に貢献している会社とは?

「IBMのLinux/OSSへの取り組み2011版」という資料が公開されています。

- IBMのLinux/OSSへの取り組み2011版(※リンク先はPDFです)

これはIBMがどれだけLinux/OSSに貢献しているかという事をアピールする資料なのですが、資料中に興味深い情報を見つけたのでご紹介します。

資料のp.3には2つの表が書かれています。まず1つ目がKVM(Kernel-based Virtual Machine)への更新量が多い企業を表した表です。

KVM更新

注記にあるようにgitコマンドで企業別にコミット量を測定したデータです。IBMは4番目とかなりの量で貢献しているようです。DB2でKVMがすぐサポートされたのもこのあたりの活動のおかげだと思います。

RedhatがかなりKVMにかなり力を入れているのは良く知られたところですし、Qumranetは元々KVMを開発していた会社ですのでコミットが多いのも頷けます。(Qumranetは数年前にRedhatに買収されています)

意外なのはINTELでしょうか。私はこれほどINTELがKVMに投資しているとは知りませんでしたが、KVMがINTEL CPUに特化した仮想化環境で、かつ特定の会社に独占されないという事がINTELにとってメリットなのでしょうね。

もう一つの表は、Linux kernelへのコミット量(行数)のランキングです。

Linux Kernel更新

企業別ではRedhatが頭一つ抜けていて、それをNovell(SUSE)とIBMが追うという形です。ただ一番多いのが「個人開発者」だというのがいかにもLinuxらしくて良いですね。

このKernelへのコミット量について数年前にも紹介したことがありますが、この時からこの傾向は変わっていませんね。
- Linuxカーネルを開発する人たちの統計データ | Unofficial DB2 BLOG

Redhat+IBMのKVMセミナー資料公開

先日開催された、Redhat,IBM共催のKVMセミナーの資料が公開されていました。

- IBM 【資料公開中】クラウドを支えるKVMの現在と未来 - Japan
使用したセミナー資料(PDF)を掲載しておりますので、ぜひご覧ください。

KVMのセミナーなので、当然そのメリットを強調した資料になっているのですが、KVMが他の仮想化技術より優れていると主張するポイントは勉強になります。

メモリだけでなく、CPUやネットワークリソースも綺麗に分割できる(SLAが保証できる)というのは良いですね。KVMはまだ仕事で扱ったことがないのですが、一度大きいサーバで試してみたいものです。

KVMについてRedhatとIBMの共催セミナー 5月25日(水)

仮想化の話をもう一つ。直前の紹介で申し訳ないのですが、Linux仮想化のKVMについての無料セミナーが開催されるようです。

- クラウドを支えるKVMの現在と未来
Linux標準の仮想化技術としてカーネルソースに取り入れられたKVM。KVMの開発に深く関わってきたレッドハットとIBMの2社より、サーバー仮想化技術の最新動向やKVMを業務システムで利用可能にするレッドハットの仮想化製品をご紹介いたします。

RedhatとIBM共催のセミナーです。開催は5月25日(水)ですが5/20(金)が申し込み締め切りです。
DB2もLinux仮想化のプラットフォームとしては、KVMを本命視しているようです。ご興味がある方はぜひご参加ください。

DB2 for Linux 9.5/9.7のサポートOSにUbuntu 10.04が追加

DB2 for LinuxのサポートOSにUbuntu 10.04 LTSが追加されていました。

- DB2 and DB2 Connect 9.7 for Linux - Supported Environments

- DB2 and DB2 Connect 9.5 for Linux - Supported Environments

Ubuntu 10.04はLTS=Long Term Supportということで、長期間サポートされるOSなので、その上でDB2が動くのは嬉しいですね。

Ubuntu 10.04の場合附属のTivoli System Automation (TSA)が動かないという制限があるので注意が必用です。もっともTSA付きの高可用性構成(HA)を構成しないのであれば、問題ないです。

DB2 9.7/9.5がSLES 11に対応

※社内Aさんからの情報です。ありがとうございます!

DB2 for Linuxのサポートディストリビューション一覧ページが更新され、SUSE Linux Enterprise Server (SLES) 11のサポートがDB2 9.5と9.7に追加されています。

- IBM developerWorks: Wikis - Information Management - SUSE Linux Enterprise Server (SLES) 11 - DB2 9.7
- IBM developerWorks: Wikis - Information Management - SUSE Linux Enterprise Server (SLES) 11 - DB2 9.5

SLES 11に対応してくれたのは良かったのですが、一点注意点が記述されています。

DB2_RESOURCE_POLICY should be disabled if SLES11 SP1 is used.
If DB2_RESOURCE_POLICY needs to be enabled, use SLES 11 GA or any DB2 supported SLES 10 Service Packs.

つまりSLES 11 SP1を使う場合、レジストリ変数のDB2_RESOURCE_POLICYが使えないという制限があるようです。DB2_RESOURCE_POLICYは以下にあるように、主にNUMA(ccNUMA)システム用の変数です。(デフォルトはOFF)

- パフォーマンス変数 - DB2 9.7 Information Center

DB2_RESOURCE_POLICYを使うと、特定のプロセスを特定のプロセッサにバインド(固定)できます。NUMAシステムではパフォーマンス向上のために必用になる設定ですが、逆に言えばそれ以外の多くのシステムでは使う必用が無い変数です。

著書
「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