1 新機能および変更点
Unbreakable Enterprise Kernelリリース4 (UEK R4)は、x86-64アーキテクチャ上のOracle Linux 6更新7以上およびOracle Linux 7更新1以上向けにテストを重ね、最適化された、オラクル社が提供するオペレーティング・システム・カーネルの4番目のメジャー・リリースです。 これはメインラインのLinuxカーネル・バージョン4.1.12に基づいています。
UEK R4 update 6は、セキュリティとバグの修正やドライバの更新を含む、UEK R4カーネルの4.1.12-112.14.1バージョンとビルドを使用します。 このカーネルは、最新のOracle Linuxリリースを実行している環境でテストされています: Oracle Linux 6更新8、Oracle Linux 6更新9、Oracle Linux 7更新3、およびOracle Linux 7更新4。
オラクルは上流のチェックインを積極的に監視し、重大なバグおよびセキュリティ修正をUEK R4に適用します。
UEK R4では、メインラインのLinuxカーネル・バージョンと同じバージョニング・モデルを使用します。 一部のアプリケーションでは、4.1.バージョニング・スキームが認識されない可能性があります。 ただし、通常のLinuxアプリケーションでは、通常はLinuxカーネルのバージョン番号は認識されず、それによる影響もありません。
注目すべき変更点
この更新プログラムには、以下の注目すべき変更と機能が含まれています:
-
自動NUMAバランシングはデフォルトで無効になっています
この更新では、自動Non-uniform memory access (NUMA) balancingの自動有効化が無効になりました。 この変更により、複数のNUMAノードを持つシステムで発生したいくつかの問題が解決され、NUMAの自動分散が有効になりました。 報告された症状には、高い
iowait
時間と、プロセス・スタック内のwait_on_page_bit()
関数上に座っていたD
状態で観測された多数のプロセス(Oracle DBプロセスなど)が含まれていました。kernel.numa_balancing
カーネル・パラメータを1
に設定することにより、NUMA自動バランシングを手動で有効にすることができます。実行時に
kernel.numa_balancing
カーネル・パラメータを設定するには、次のようにsysctl
コマンドを使用します:# sysctl -w kernel.numa_balancing=1
自動NUMAバランシングの有効化をリブートの間中永続化するには、
kernel.numa_balancing=1
パラメータを/etc/sysctl.conf
ファイルに追加します。kernel.numa_balancing
カーネル・パラメータが設定されているかどうかを確認するには、次のコマンドを実行します:# sysctl kernel.numa_balancing
-
遅延圧縮機能はバック・ポートされ、デフォルトで
madvise
に設定されます透過ヒュージ・ページ(THP)の遅延圧縮機能は、メイン・ライン・カーネルからバック・ポートされ、デフォルトの
defrag
動作はmadvise
に設定されています。 この修正により、メモリー断片化のためにTHPからの膨大なページ割り振りに長時間を要した場合に、THPがアプリケーション・ストールを引き起こす可能性のある問題が解決されます。 -
RDSで追加されたFRWRサポート
この更新では、一般的にFRWR/fastreg/FRMRと呼ばれるRDSの作業リクエストを介したMR登録のサポートが追加されます。 この変更により、RDSはFMRまたはFRWRのいずれかを登録メソッドとして選択できます。 選択は、
prefer_frwr
モジュール・パラメータで指定されたプリファレンスと、基礎となるデバイスによって提供されるサポートに基づいています。 -
Oracle OFEDリリースで使用可能な
ibacm
Oracle OFED 1.0.0-33リリース以降では、
ibacm
にNetlinkサポートが含まれています。ibacm
サービスは、パス・レコード問合せを処理し、パス・レコードをキャッシュします。ibacm
はカーネル・コンポーネントに簡単なパス・レコード・キャッシュを提供するため、この実装により、大規模なファブリック・システムのパフォーマンスが大幅に向上します。 -
カーネルに追加された
libnvdimm
サブシステムこの更新により、NVDIMM (Non-Volatile Dual Inline Memory Module)の検出、構成、および管理を行う
libnvdimm
カーネル・サブ・システムが追加されます。 その結果、NVDIMMがシステムに存在する場合、NVDIMMは/dev/pmem*
デバイス・ノードを介して公開され、ndctlユーティリティを使用して構成できます。 -
vmcore
でRCUストールをデバッグするためにsysctl
に追加されるpanic_on_rcu_stall
パラメータpanic_on_rcu_stall
インタフェースは、vmcore
の使用時にRCUストールの根本原因を定義する場合に便利です。 パラメータ値を1
に設定して、RCUストールが検出されるたびにpanic()
関数をコールできます。 -
カーネル内iSCSIターゲットに対するユーザー空間(TCMU)のターゲット・コア・モジュールのサポート
この機能により、ユーザー空間パススルーがサポートされ、ユーザー空間モジュールをiSCSIターゲットとして指定できるようになります。 通常、組み込みモジュールは、SCSIデバイス用のバック・ストアまたはストレージ・エンジンとして使用され、完全にカーネル・コードとして実装されます。 バック・ストアは一般的なユース・ケースをカバーしますが、一部のターゲット・ソリューションは代替バック・ストアをサポートし、これらの非従来型ストレージ・システムにデータを格納する必要のあるイニシエータのトランスレータとして機能します。 TCMUをサポートすることにより、各バック・ストアごとに小さなアダプタ・モジュールをリリースすることができます。 この機能は、Filesystem in Userspace (FUSE)に似ていますが、ファイルシステム層ではなくSCSI層にあります。
-
uio_hv_generic
ドライバ有効uio_hv-generic
ドライバは、任意のHyper-V VMBusデバイスにバインドできる汎用ドライバで、ネットワークへのユーザー空間アクセス権があり、適切な記憶域が使用可能です。 このドライバを追加すると、virtioドライバとXenドライバの両方に役立ちます。
暗号APIの改善
この更新では、以下のCrypto APIの改良が行われました:
-
バグ修正
セキュリティを向上させるために、いくつかのバグ修正が適用されています。
-
ccp
ドライバが追加されましたccp
ドライバは、AMD暗号化プロセッサ(CCP)のサポートを提供します。 AMD CCPは、ハードウェア暗号化、ハッシング、およびその他の関連操作を提供します。 提供されているドライバのバージョンは1.1.0です。 さらに、このドライバで見つかった最初のバグを解決するためにいくつかのアップストリーム・パッチが適用されています。 -
ハッシュ処理の修正
修正は、NULLハッシュをより適切に処理するために、Crypto API内のさまざまなコンポーネントに適用されています。 特に、
shash
アルゴリズムでNULLハッシュが使用されたときにダイジェスト操作で発生したクラッシュを修正するための修正がalgif_hash
APIに適用されました。サービス拒否を引き起こす可能性のある
ahash
EINPROGRESS通知コールバック・ループを修正する修正も適用されています。 -
Jitter Entropy RNGが追加されました
Jitter Entropy Random Number Generator (RNG)は、Linuxカーネルに対するCPUタイミングの違いによってエントロピを収集します。 この機能は、デフォルトで
algif_rng
インタフェースから利用できます。 生成された番号は、/dev/random
ファイルを介してカーネルに戻され、これらの番号は他の/dev/random
ユーザーが利用できるようになります。 その結果、オペレーティング・システムにはより多くのエントロピのソースが利用できるようになりました。 -
範囲外アクセス用の
testmgr
バグ修正ソフトウェア実装のテストに使用される
testmgr
コードは、一部のesp aead
テストの実行時に範囲外アクセス・エラーを生成していました。 この問題は、aes_gcm_enc
/dec test
テンプレートのIVサイズが制限され、testmgr
コードがmemcpy
からの入力を処理する方法が原因でした。 このエラーが発生しないように、配列は適切なサイズに増やされました。
DTraceの改良点
UEK R4u6のDTraceには、モジュールとユーティリティの更新を含むいくつかのバグ修正と強化が含まれており、現在のバージョンは0.6.1になっています。
含まれているその他の注目すべき変更は次のとおりです:
-
バグ修正
多数のバグ修正が適用され、安定性が向上し、パフォーマンスが向上します。
-
DTrace lockstatプロバイダが追加されました
この更新では、lockstat DTraceプロバイダの定義を追加するパッチが追加されています。 DTrace lockstatサポートは、最も頻繁に使用されるロック、最も競合を示すロック、最も長く保持されるロックなど、カーネル・ロック・イベントの動的トレースを可能にします。
-
動的なサイズの
tracemem()
アクションが追加されました可変サイズの構造をサポートするために、オプションの3番目の引数フォームが
tracemem()
アクションに追加されました。 この機能は、以前はOracle Solaris DTraceに追加されていました。 -
FBTの改善点
いくつかのパッチおよびバグ修正を適用して、パフォーマンスを向上させ、関数境界トレース(FBT)モジュールの機能を拡張しました。
-
NFS用にI/Oプロバイダが追加されました
この更新では、NFS
read
およびwrite
リクエストに対して、DTrace I/Oプロバイダstart
およびdone
プローブが追加され、DTrace I/Oプロバイダ・プローブが追加されました。 -
llquantize()
集計が追加されましたリニア・ログ定量化集計アクション
llquantize()
は、ログ/線形結果を提供し、線形ステップ・バケットでデータを収集できるようにします。 この機能は、以前はOracle Solarisに追加されていました。 -
IPI関数コールに実装されたロック・フリー・アルゴリズム
ロック・フリー・アルゴリズムの実装により、システムで監視されるIPI (プロセッサ間割り込み)関数呼び出しの量が削減されます。 障壁を引き起こす可能性のあるIPIトラップに頼るのではなく、ロック・フリー・アルゴリズムがより軽量になり、カーネルとCPUへのストレスが軽減され、システム・パフォーマンスが向上します。
-
構成メンバー名はDキーワードと同じにできます
struct
やgroup.self
などのように、構造体のメンバー名がDキーワードで衝突した場合に構文エラーが発生する問題を修正するために、バグ修正が適用されました。 Dキーワードと同じ名前を使用して構造メンバーを参照できるようになりました。 -
64ビット・ホストでの32ビット・アプリケーションのUSDTサポート
64ビット・ホスト上の32ビット・アプリケーションに対するユーザー・レベルの静的に定義されたトレース(USDT)のサポートを可能にするために、バグ修正が適用されました。
Xenハイパーバイザの改良点
この更新には、Linux 4.11および4.12カーネル・リリースの変更からバック・ポートされたXen Hypervisor用のパッチがいくつか含まれています。 これらのパッチの多くは、パフォーマンス、エラー処理、および一般的なバグ修正を改善します。
以下は、この更新で行われた注目すべき修正および改善点です:
-
Xenメモリー管理コードにパッチが適用され、重複したメモリー割り当てによってゲスト仮想マシンでカーネル・パニックが発生する可能性がある問題を解決しました。
-
PVゲストを起動するときに
dmesg
の出力に表示される次の不要なエラー・メッセージが表示されないように、パッチが適用されました:Unable to read sysrq code in control/sysrq
-
この更新では、Xenのセキュリティを強化するためのパッチが適用されています。
-
この更新には、XenゲストによるNVMeデバイスのサポートの改善が含まれています。
-
パッチを適用し、Xen
blkfront
モジュールで更新して、永続的許可が常に最初に割り当てられるようにして、blkfront
リングの許可の管理を最適化しました。 この変更は、利用可能な権限がごくわずかな場合でも十分な許可がある場合にI/Oがハングしないようにするために実装されています。 -
blkfront
ドライバでI/Oがハングする競合状態を修正するためのパッチが適用されました。 -
この更新には、Xenブロック・ドライバの許可管理のデバッグに役立つロギングの改善が含まれています。
ファイル・システムの改善
以下のファイルシステムの改良がなされました:
- btrfsの更新
-
-
サブボリュームまたはスナップショットの名前とIDを
/proc/mounts
に含めるためのパッチが適用されました。 この変更により、/
がサブボリュームまたはスナップショットとしてマウントされているかどうかを簡単に識別できます。ここで、root
パーティションはbtrfs
を使用してフォーマットされています。 -
inodeの除外に関する問題を修正し、重複排除操作中に
ctime
およびmtime
タイムスタンプが更新された問題を解決するために、いくつかのパッチが適用されました。 アライメントされていないブロック・サイズの問題、または過去のEOFを除外して、重複している間にエラーが発生する可能性のある別の問題も解決されました。 -
btrfs
をカーネル内に新しい空き領域btree
マウント機能が必要なオプションをサポートするユーザー・スペース・ツールと連動させるためにいくつかのパッチが適用されました。 -
IDでデバイスを削除するときに、デバイスIDをユーザー引数として持つ強化された構造をサポートするために、いくつかのパッチが適用されました。 この変更により、
btrfs
はこの機能をサポートするユーザー・スペース・ツールと並行して動作します。
-
- NFS更新
-
-
この更新では、新しい静的NFSトレース・ポイントが追加され、デバッグの効率が向上しました。 これらのトレース・ポイントは、LinuxカーネルのNFSクライアントにすでに存在するトレース・ポイントに追加されています。
以下の6つのトレース・ポイントは、NFS I/Oオペレーション
nfs:nfs_initiate_read
、nfs:nfs_readpage_done
、nfs:nfs_initiate_write
、nfs:nfs_writeback_done
、nfs:nfs_initiate_commit
、およびnfs:nfs_commit_done
をキャプチャするために特別に用意されています。トレース・ポイントを個別または同時に有効にするオプションがあります。 生成される各イベントには、タイムスタンプ情報と、操作をリクエストしたCPUコアおよびプロセスに関する情報が含まれます。
trace-cmdツールを使用して、カーネル内の他の静的トレース・ポイントを制御するのと同じ方法でNFSトレース・ポイントを制御します。 trace-cmd list | grep nfsコマンドを使用して、カーネルNFSクライアントに関連するトレース・ポイントを検出します。
-
透過状態の移行中にNFS4v1クライアントがリースを破棄して新しいリースを申請する問題が修正されました。 この問題により、透過状態移行のメリットが大幅に削減されました。 トランスペアレント状態移行の2番目の問題は、移行されたリースのシーケンスIDをクライアントが失った場合にも識別されました。 修正プログラムが適用され、クライアントが宛先サーバーによって返された意図しないスロット順序値を保存して使用するようにしました。
-
セキュリティ修正は、サービス拒否(DoS)につながるおそれのある特大のNFSv2およびNFSv3引数のチェックを含む、このリリースに含まれるようにバック・ポートされました。pNFS LAYOUTGETオペランドの処理中に不適切なレイアウト・タイプの検証が原因でNFSv4サーバーがリモートDoS攻撃を受け易くなる問題を解決する一連のパッチが含まれています。
-
- OCFS2更新
-
-
いくつかのパッチをバック・ポートして再帰的クラスタ・ロックを引き起こした問題を修正し、デッドロックが発生し、クラスタ内のノードがハングアップする可能性がありました。
-
POSIX ACLを使用してiノードを作成する際に発生するデッドロックの問題を修正するためのパッチが含まれていました。 このコードでは、クラスタ全体のinodeロックが考慮されていません。ブロックされたリモート・ロック・リクエストがロックがダウン・コンバートされるのを待っていると、デッドロックが発生する可能性があります。
-
- XFS更新
-
-
XFSのエラー処理と動作に関連する多数のバグを修正するために、いくつかのパッチが適用されていました。 その他の変更には、XFSの構成可能なエラー・サポートを改善する拡張機能が含まれています。
次の例に示すように、
sysfs
インタフェースを使用してXFSエラー処理を調整することができます:# ls -l /sys/fs/xfs/dm-1/error/metadata/ total 0 drwxr-xr-x. 2 root root 0 Oct 24 16:54 default drwxr-xr-x. 2 root root 0 Oct 24 16:54 EIO drwxr-xr-x. 2 root root 0 Oct 24 16:54 ENODEV drwxr-xr-x. 2 root root 0 Oct 24 16:54 ENOSPC # ls -l /sys/fs/xfs/dm-1/error/metadata/default/ total 0 -rw-r--r--. 1 root root 4096 Oct 24 16:54 max_retries -rw-r--r--. 1 root root 4096 Oct 24 16:54 retry_timeout_seconds # ls -l /sys/fs/xfs/dm-1/error/metadata/ENOSPC/ total 0 -rw-r--r--. 1 root root 4096 Oct 24 16:54 max_retries -rw-r--r--. 1 root root 4096 Oct 24 16:54 retry_timeout_seconds
-
パッチを適用して一般的なバグを解決し、パフォーマンスを向上させました。 含まれる修正: a backported patch to fix a deadlock issue that resulted when work queue log processes hung while waiting for each others to complete; a couple of patches to resolve an issue around read-only remounts that resulted in the file system reporting failed orphan inode recovery on remount; and a patch to resolve a race condition that could cause file corruption during a file-extending direct I/O write.
-
ドライバの更新
Unbreakable Enterprise Kernelでは、広範なハードウェアおよびデバイスをサポートします。 ハードウェアおよび記憶域ベンダーとの緊密な連携により、次の表の情報に従って、Oracleによって複数のデバイス・ドライバが更新または追加されました:
ドライバ | バージョン | 説明 |
---|---|---|
|
1.2-1[41010]-ms + パッチ |
Adaptec Advanced Raid製品 |
|
11.4.0.0 |
Broadcom/Emulex OneConnect 10Gbps NICドライバ |
|
1.713.10 + パッチ |
QLogic BCM57710/57711/57711E/57712/57712_MF/57800/57800_MF/57810/57810_MF/57840/57840_MFドライバ |
|
1.8.0 +パッチ |
Broadcom/Emulex BCM573xx NICドライバ |
|
1.1.0 |
AMD暗号化プロセッサ・ドライバ |
|
1.0.0 |
AMD暗号プロセッサの暗号APIサポート |
|
7.3.21-k8-NAPI +パッチ |
Intel(R) PRO/1000ネットワーク・ドライバ |
|
3.2.6-k + パッチ |
Intel(R) PRO/1000ネットワーク・ドライバ |
|
1.6.0.34 |
Cisco FCoE HBAドライバ |
|
2.1.14-k |
Intel® Ethernet Connection XL710ネットワーク・ドライバ |
|
3.0.0-k |
Intel® XL710 X710 Virtual Functionネットワーク・ドライバ |
|
5.4.0-k |
Intel®ギガビット・イーサネット・ネットワーク・ドライバ |
|
2.4.0-k |
Intel®ギガビット仮想ファンクション・ドライバ |
|
5.1.0-k |
Intel®10ギガビットPCIエクスプレス・ネットワーク・ドライバ |
|
4.1.0-k + パッチ |
Intel® 82599 Virtual Functionドライバ |
|
0:11.4.0.2 |
Broadcom/Emulex LightPulseファイバ・チャネルSCSIドライバ |
|
07.701.17.00-rc1 |
Avago MegaRAID SASドライバ |
|
パッチ |
Matrox GP200e4デバイス・ドライバ |
|
16.100.00.00 |
LSI MPT Fusion SAS 3.0デバイス・ドライバ |
|
1.0 + パッチ |
NVMeブロック・デバイス・ドライバおよびコア・サポート |
|
8.10.11.21 8.10.10.21 |
QLogic FastLinQ 4xxxx Ethernetドライバおよびコア・モジュール |
|
8.10.4.0 |
QLogicストレージ・ドライバ |
|
9.00.00.00.40.0-k |
QLogic Fibre Channel HBAドライバ |
|
1.1.2-126 |
Microsemi Smart Familyコントローラ・ドライバ |
|
0.02.0 |
VMBus用のユーザー・スペースI/Oドライバ |
|
パッチ |
Xen Virtual Block DeviceドライバおよびXen Virtual Network Deviceドライバ |
|
6.0.r8044 |
コア・サポート、VHBA、XSVNICおよび仮想イーサネット用のOracle Virtual Network Driverモジュール。 |
ドライバの更新に関するその他のノート
表に示されたドライバに関してベンダーの要請により、次のノートがあります。
-
lpfc
: ロックされたオプティクスのサポートは、LPE32000 HBAおよびこのアーキテクチャの様々なHBAすべてに対して有効になっています。 この機能により、これらのHBAでは、AvagoまたはEmulex認定のSFPオプティクスとQSFPオプティクスの両方を検出して有効にします。ドライバ・リビジョン11.0.0.13以降では、不適格なオプティクスは無効になってリンクが表示されず、エラー・メッセージがログ・ファイルに書き込まれ、lpfcドライバによって次のメッセージが表示されます。
3176 Port Name [wwpn] Unqualified optics - Replace with Avago optics for Warranty and Technical support
-
mpt3sas
: UEK R4更新4では、mpt2sas
ドライバがmpt3sas
ドライバとマージされ、SAS 2.0とSAS 3.0 HBAの両方をサポートする単一ドライバ・モジュールを提供しました。 単一ドライバ・モジュールへの移行のためにモジュールの別名を正しく処理するよう、dracut
に変更が適用されました。
テクノロジ・プレビュー
Unbreakable Enterprise Kernelリリース4に含まれる以下の機能は、まだ開発中ですが、テストおよび評価の目的で利用できます:
-
DCTCP (Data Center TCP)
DCTCPは、最新のネットワーク・スイッチであるExplicit Congestion Notification (ECN)機能を使用して、遅延制御を強化します。 DCTCPを使用すると、システムは、TCPを使用するよりも高度な処理能力で遅延に対応するため、バッファ占有が低減し、スループットが高くなります。
-
分散複製型ブロック・デバイス(DRBD)
非共有型の同時複製ブロック・デバイス(ネットワーク経由のRAID1)で、高可用性(HA)クラスタのビルディング・ブロックの役割を果たすように設計されています。 自動フェイルオーバーのためにはクラスタ・マネージャ(ペースメーカーなど)が必要です。
-
カーネル・モジュール署名機能
暗号署名チェックをモジュール・ロード時にモジュールに適用し、カーネルにコンパイルされた公開キー・リングに対して署名をチェックします。 GPGは暗号化の作業を行うために使用され、署名およびキーのデータの書式を決定します。
-
サーバー・サイド・パラレルNFS
サーバー・サイド・パラレルNFS (pNFS)により、ファイル・メタデータおよびデータを個別のパスで使用できるようになり、NFSサーバーのスケーラビリティおよびパフォーマンスが向上します。
互換性
Oracle LinuxではRed Hat Enterprise Linux (RHEL)とのユーザー空間の互換性が維持され、これはオペレーティング・システムの下で実行されているカーネルのバージョンとは無関係です。 ユーザー空間の既存のアプリケーションは、Unbreakable Enterprise Kernelリリース4で変更なしに引き続き実行され、RHEL認定アプリケーションには証明書の更新は不要です。
Oracle Linuxチームはリリース時の互換性に関する影響を最小限に抑えるため、カーネル・モジュールに対する依存性があるハードウェアおよびソフトウェアを提供するサード・パーティ・ベンダーと緊密に協力しています。 UEK R4のカーネルABIは、最初のリリースの後のすべての更新において変更されていません。 このリリースでは、システム上でサード・パーティのカーネル・モジュールの再コンパイルを必要とするUEK R3と比較してカーネルABIに対する変更点があります。 UEK R4をインストールする前に、アプリケーション・ベンダーとそのサポート状況を確認してください。
開発用ヘッダー・パッケージ
UEK-3.8-QU2現在、kernel-uek-headers
パッケージは作成および配布されなくなりました。 開発目的に役立つ3つのカーネル・パッケージがあります。 kernel-headers
パッケージは、ユーザー・スペース・プログラム用のAPIの一部を形成しています。 kernel-devel
パッケージは、標準のRHCK開発およびモジュール・コンパイルに使用されます。 kernel-uek-devel
パッケージは、UEK開発およびモジュール・コンパイルに使用されます。 kernel-uek-headers
パッケージとkernel-headers
パッケージはいずれも、カーネル開発には不要です。
kernel-headers
パッケージには、ユーザー領域のバイナリまたはライブラリとUEKまたはRHCKとの間のインタフェースを指定するCヘッダー・ファイルが用意されています。 これらのヘッダー・ファイルでは、ほとんどの標準プログラムのビルドまたはglibc
パッケージの再ビルドに必要な構造体および定数を定義します。
kernel-devel
およびkernel-uek-devel
の各パッケージには、UEKおよびRHCKに対するモジュールのビルドに必要なカーネル・ヘッダーとmakefileが用意されています。
UEKおよびUEKとRHCK両方のCヘッダー・ファイルに対するモジュールのビルドに必要なパッケージをインストールするには:
# yum install kernel-uek-devel-`uname -r` kernel-headers