Linuxカーネル ~OSカーネルの品質を向上することが急務~

半田 哲夫
株式会社NTTデータ ニューソン 基盤サービス事業部 基盤ソフトウェアBU 主任
半田 哲夫

inuxカーネルの品質向上を支えているsyzbotが、注目を集めてきている。その理由と、Linux 5.1で達成される小さな改善について紹介する。

逃げるsyzbot、追うカーネル開発者たち

Google社が開発したファジングテスト(※1)用システムであるsyzbotが、LinuxなどのOSカーネルの不具合をものすごい勢いで発見し続けて(※2)います。(図1)あまりにも次から次へと不具合を発見してしまうことから、Linuxカーネル開発者コミュニティでは、今年のエイプリルフールのネタ(※3)に…
2019年4月17日

PostgreSQL 11新機能

澤田 雅彦
株式会社NTTデータ ニューソン 基盤サービス事業部 OSS-BU 主任
澤田 雅彦
Amit Langote
グローバルテクノロジー事業部 ビジネスコンサルティング担当 第一ビジネスコンサルティンググループ 主任
Amit Langote

私は、品川にあるNTT OSSセンタでNTT関連会社のPostgreSQLを利用しているシステムのサポート業務や、PostgreSQL本体、周辺ツールの開発に携わっています。PostgreSQLにはさまざまな機能が備わっており、その中でもPostgreSQLのメンテナンス機能であるVACUUM、データベースの可用性を向上させる機能であるレプリケーションやPostgreSQLの分散データベース化を見据えた分散トランザクション機能を主に開発しています。

これまで全4回にわたりバージョン10の新機能を紹介してきましたが、新バージョンの11が発表されましたので、本コラムではバージョン11の新機能を紹介していきます。

ぜひPostgreSQLを使っていただき、「バグを見つけた」、「これに困っている」、「こんな事ができるといいな」など、ご意見、ご要望がありましたら、ぜひ私または、PostgreSQLコミュニティ(https://www.postgresql.org/account/submitbug/)に伝えてください。ひとつひとつのフィードバックがPostgreSQLをより良いデータベースに成長させます。

第1回「テーブル・パーティショニングが大幅アップデート」

PostgreSQL 11では、デーブル・パーティショニング機能が大幅にアップデートされる予定です。本コラムでは2回に分けてテーブル・パーティショニング機能にどのような改善が導入されたかを徹底解説していきます。今回は、テーブル・パーティショニングの機能改善の一部を紹介します。
2018年11月6日

第2回「PostgreSQL11でのテーブル・パーティショニング機能の改善」

PostgreSQL 11では、デーブル・パーティショニング機能が大幅にアップデートされる予定です。本コラムでは2回に分けてテーブル・パーティショニング機能にどのような改善が導入されたかを徹底解説していきます。今回は、テーブル・パーティショニングの性能向上について解説します。
2019年1月9日

PostgreSQL 10新機能

澤田 雅彦
株式会社NTTデータ ニューソン 基盤サービス事業部 OSS-BU 主任
澤田 雅彦
Amit Langote
グローバルテクノロジー事業部 ビジネスコンサルティング担当 第一ビジネスコンサルティンググループ 主任
Amit Langote

最新バージョンであるPostgreSQL 10がリリースされてから約3カ月が経ち、PostgreSQL 10の利用検討も始まってきたのではないでしょうか。PostgreSQL 10では魅力的な新機能が多く導入されていますが、それらの新しい機能を一から調べて、勉強するのは大変です。また、正しい使い方や制約を知らないと、本来の機能を十分に使い切ることができない可能性があります。

本コラムでは、PostgreSQL開発に携わっている一開発者として、PostgreSQLコミュニティでの開発状況なども交えながら、PostgreSQL 10の新機能を紹介します。

第1回「テーブル・パーティショニング」

本記事ではPostgreSQL 10の新機能のひとつである「テーブル・パーティショニング」について紹介します。
2018年3月2日

第2回「Hashインデックス」

本記事ではPostgreSQL 10の新機能のひとつである「ハッシュインデックス」について紹介します。
2018年5月14日

第3回「ロジカルレプリケーション」

本記事ではPostgreSQL 10の新機能のひとつである「ロジカルレプリケーション」について紹介します。
2018年7月17日

第4回「レプリケーション改善」

第3回では、レプリケーションの新しい機能であるロジカルレプリケーションについて解説をしました。本記事では、PostgreSQL 10で導入された3つのレプリケーション機能の改善について解説します。
2018年8月22日

GNUコラム

田中 紀洋
オラクル事業部 グローバル・アライアンス&サポート・サービス担当 製品サポートグループ
田中 紀洋

2017/1/4に正規表現によるマッチング速度が大きく向上したGNU sed 4.3がリリースされました。

従来のリリースには、正規表現によるマッチング・エンジンとしてregexのみ搭載されていました。regexはPOSIXで規定される全ての正規表現をサポートすることを目標に設計されています。その結果、コードが複雑であり性能面ではあまり優れていません。そこで、私はGNU sedと同様に正規表現によるマッチングを行うGNU grepのマッチング・エンジンの1つをGNU sedでも使えるようにしようと考えパッチを投稿しました。その成果が「正規表現によるマッチング速度が大きく向上」です。

GNU grepは、regex以外に2つのマッチング・エンジンを搭載しています。そのうちの1つであるdfaは、特殊な正規表現をサポートしませんが、性能面ではregexと比較してとても優れています。dfaは古くからGNU grepに搭載されていますが、ここ数年の間に私とPaul Eggert氏が中心となり、機能面、性能面および品質面で多くの改善を施してきたマッチング・エンジンです。私は次のステップとして改善されたdfaの横展開を検討しました。正規表現によるマッチングを多用するプログラムにはGNU grep以外にGNU awkとGNU sedがありますが、GNU awkはすでにdfaを使用していたため、私はGNU sedへdfaのソースコードをコピーし、regexと協調して動作するようにしました。

このコラムでは、GNUの開発に関わるようになったきっかけや苦労話などをご紹介したいと思います。このコラムをお読みくださった皆さまがOSSの開発や貢献に少しでも興味を抱いていただければ幸いです。

GNU sed 4.3登場 - 開発に携わって

私がGNUの開発に関わるようになったきっかけは、2010年頃当時のGNU grepの最新版2.5.4が日本語環境で極端に遅かったことにあります。
コラムをご覧になられている皆さまも手元に開発ツールがインストールされたUnix/Linuxを用意できるようでしたら…
2017年1月23日

今から始めるRHEL 7

保理江 高志
保理江 高志
鈴木 章太
鈴木 章太

Red Hat Enterprise Linux(RHEL)の最新版であるVersion 7が2014年6月10日(米国時間)にリリースされました。3年8カ月ぶりのメジャーバージョンアップとなります。それに続き、2015年3月5日(米国時間)にはマイナーバージョンアップであるVersion 7.1がリリースされています。

RHEL 7では、XFSがデフォルトのファイルシステムとなり、システム起動処理がsystemdに変更され、コンテナ管理ツールのDockerが正式にサポートされるなど、新機能が意欲的に盛り込まれています。米Red Hat社も、プレスリリースにおいて「エンタープライズOSを再定義したもの」("Redefining the Enterprise Operating System")とうたい、非常に重要なリリースであると位置づけています。

このように大幅な変更が含まれており、当然、利便性の向上は図られているのですが、開発・運用の現場でRHELを利用されている方にとっては、移行を検討する際の懸念を持たれている方が多いのではないかと思います。

本コラムの執筆者両名は普段、品川のNTT OSSセンタで、NTTグループ各社のOSSシステムのサポート業務に携わっていますが、このところの各社からの問い合わせについても、RHEL 7に関するものが徐々に見られるようになってきました。今後、旧バージョンからRHEL 7への移行が本格化してくるのではないかと思われます。

本コラムでは、RHEL 7の概要から開始して、以降各新機能の解説、メリットや利用時の注意点を各回で紹介していきます。現場の業務に役立つ情報を心がけたいと思いますので、ぜひお付き合いください。

第1回「RHEL 7の概要」

連載の初回として、まずRHEL 7の製品概要から説明します。今年6月に3年8カ月ぶりのメジャーバージョンアップとなるRHEL 7がリリースされました。今回のリリースはフルサポート、メンテナンスサポート1、メンテナンスサポート2の各フェーズ合わせて、今後10年間サポートを得ることが可能となっています。RHEL7の「メンテナンスサポート2フェーズ」の終了日は…
2015年7月24日

第2回「標準ファイルシステムとなったXFS」

RHEL 7では、標準のファイルシステムとしてXFSが採用されました。RHEL 6以前の標準ファイルシステムには長い間ext系ファイルシステムが使われてきましたが、XFSに切り替わったことでファイルシステムの設定、運用の方法などが従来とは異なってきます。
今回はXFSの概要、主な特徴、ext系ファイルシステムとの管理コマンドの違い…
2015年9月2日

安らかな夜を迎えるために

原田 季栄
ソリューション事業部 ビッグデータ基盤ビジネスユニット OSS基盤グループ グループ長
原田 季栄
半田 哲夫
株式会社NTTデータ ニューソン 基盤サービス事業部 基盤ソフトウェアBU 主任
半田 哲夫

TOMOYO Linux メインライン化から5年、私たち(原田、半田)は現在、品川にある NTT OSS センタで NTT 関連会社の OSS を用いたシステムのサポート業務に携わっています。サポート業務とは、具体的には、商用システムのトラブル対応、技術的な質問への回答などで、依頼者が抱える問題解決を支援するという仕事です。業務の性質上、どんな依頼がどのくらいくるかは、事前に予想できません。日々、たんたんと依頼を受けて、問題解決に向かう助言を行うことの繰り返しです。サポートは受動的な業務で、サポートセンターは、「治療」という行為こそ行いませんが、病院に通じるものがあります。

そうした受動的な業務を2年間以上続けていると、「これは前にも聞かれたぞ」とか、「事前に準備をしておけば避けられたのに」と思うこともしばしばです。サポートセンターの「中の人」として得られた知見や経験を、まだ問題を起こしていない人達にも活かしてもらいたいという気持ちが高まってきました。関係者の協力を得て、ここにささやかな情報発信活動を始めさせていただくことになった次第です。

トラブルが発生するとシステムの関係者は大変です。顧客への説明、原因の解明や対策の検討など対応に追われる姿を何度も見てきました。コラムのタイトル、「安らかな夜を迎えるために」とは、未然に防げる問題は未然に防ぎ、発生してしまった問題は速やかに解決に導けるように力になりたい、そうして安らかな夜を過ごして欲しいという願いを込めてつけました。

本コラムは、サポートに関する技術的な情報(担当:半田)とサポートセンター利用の心得(担当:原田)の組み合わせとして構成されます。どうぞおつきあいください。

第1回「 kdump ノススメ」

カーネルパニックは予期していない時に起こります。それが起こらないように備えることは誰にもできません。だから、「もし自分が管理しているシステムでそれが起こったらどうしよう」と考えてみることには意味があります。
カーネルパニックが起こったとき、あなたが気にするのは…
2014年8月5日

第2回「 シリアルコンソールノススメ」

第1回では、カーネルパニックが発生した場合の情報取得方法として、 kdump を紹介しました。今回は、カーネルパニックまで至らない場合の情報取得方法として、シリアルコンソールを紹介します。
2014年8月19日

第3回「 netconsole ノススメ」

第2回では、カーネルパニックまで至らない場合の情報取得方法として、シリアルコンソールを紹介しました。今回は、シリアルコンソールを使えない場合の代替案である netconsole について紹介します。
2014年9月2日

第4回「 udplogger ノススメ」

第3回では、シリアルコンソールを使えない場合の代替案である netconsole について紹介しました。今回は、 udplogger について紹介します。
2014年9月16日

第5回「 SysRq ノススメ」

今回は、システムがデッドロックしたり無応答状態に陥ったりした場合に、システムの状態を取得するための Magic SysRq について紹介します。
2014年9月30日

第6回「 Bugzilla ノススメ」

今回は、 Bugzilla について紹介します。
2014年10月14日

第7回「 sosreport ノススメ」

前回は、 Bugzilla と Red Hat 社のサポートケースについて紹介しました。今回は、Red Hat 社のサポートケースを利用する際に添付することが多い sosreport について紹介します。
2014年10月28日

第8回「カーネルパラメーターチューニングノススメ」

今回は、システムがデッドロックしたり無応答状態に陥ったりしているかもしれない状況を警告する watchdog 系パラメーターについて紹介します。
2014年11月11日

第9回「アップデートノススメ」

今回は、ソフトウェアのアップデートについての基礎知識について紹介します。
2014年11月25日

第10回「ソースコード閲覧ノススメ」

今回は、ディストリビューションに含まれているプログラムのソースコードを確認するための手順について紹介します。
2014年12月9日

第11回「 strace ノススメ」

今回は、プログラムが期待通りに動作しない場合に、特定のプロセスの挙動を追いかけるための手順について紹介します。
2014年12月24日

第12回「 System Call Auditing ノススメ

調査対象となるプロセスがすでに判明している場合の挙動を追跡するには strace を使用します。しかし、毎年数件あるトラブル問合せの一例なのですが、「誰かがプロセスにシグナルを送信して強制終了させてしまっている可能性がある」という場合には、全プロセスを調査対象にするために System Call Auditing を使用します。
」2015年1月6日

第13回「 TaskTracker ノススメ」

前回紹介した System Call Auditing にはいくつか不便な点があります。
例えば、システムコールに渡された数値ではない引数(文字列や構造体などへのポインタ)を数値として記録してしまうため、別の箇所でパス名として記録される一部の例外を除いて、数値ではない引数の内容を確認する目的では使えないという点が…
2015年1月20日

第14回「 SystemTap ノススメ」

今回は、カーネルに関するトラブル解析で大活躍する SystemTap についてです。SystemTap の使用を容認できるかどうかが問題事象の原因を究明できるかどうかに直結しそうな、切り札と言えるくらいに重要なツールです。導入手順と使い方については Red Hat 社のウェブサイトにある記事…
2015年2月2日

緊急コラム: glibc 脆弱性( CVE-2015-0235 )の影響範囲の調査方法について

先週公開された glibc の脆弱性について、管理されているサーバーへの影響の有無を気にされている方が多いと思います。そこで緊急コラムとして、脆弱性の見つかった関数が使われているかどうかを調査する方法について紹介します。
2015年2月3日

第15回「フォールトインジェクションノススメ」

前回紹介した SystemTap は、システムの管理や保守を行う人にとってだけでなく、Linux カーネルの開発やシステムの開発を行う人にとっても有用なツールです。 SystemTap を使うと、任意の箇所に遅延を挿入したり、メモリーの内容を書き換えたりすることもできます。そのため、意図的に競合状態を発生させることで…
2015年2月17日

第16回「 kernel-debug ノススメ」

Linux カーネルの中には、カーネル内でのデッドロックやメモリリークなど、カーネル自身のデバッグを行うための様々な機能が含まれています。しかし、 kernel パッケージに含まれている普通のカーネルでは大部分が無効化されているため、実際に運用を開始してトラブルに遭遇するまで、カーネル自身のバグに気が付かないケースが…
2015年3月3日

第17回「プログラミング体験ノススメ」

Linux システムを使うということは、多かれ少なかれプログラムを自分で読み書きすることだと考えます。 Linux システムを使う以上、シェルスクリプトと無縁でいられる人は滅多にいないでしょう。
OSSは「問題が見つかったところをアップデートしながら(修正を加えながら)利用していく」…
2015年3月17日

最終回「防災訓練ノススメ」

セキュリティに関する問題が発生した時のために CSIRT (Computer Security Incident Response Team) の構築や、災害が発生した時のために事業継続計画 (Business Continuity Plan) を定めたり、標的型攻撃メールへの訓練を行ったりする組織は増えてきていると思います。
しかし、セキュリティインシデントでも災害でもないトラブルへの…
2015年3月31日