1 新機能および変更点
Unbreakable Enterprise Kernelリリース5 (UEK R5)は、x86-64および64-bit Arm (aarch64)アーキテクチャ上のOracle Linux 7.5以上でテストおよび最適化されたオペレーティング・システム・カーネルです。 メイン・ラインのLinuxカーネル・バージョン4.14.35に基づいています。 これらのリリースでは、ドライバが更新され、バグやセキュリティの修正が含まれています。
Oracleは上流のチェックインを積極的に監視し、重大なバグとセキュリティの修正をUEK R5に適用します。
UEK R5U2では、4.14.35-1902バージョンを使用してUEK R5カーネルをビルドします。これには、セキュリティとバグの修正、およびドライバの更新が含まれます。
UEK R5は、メインラインのLinuxカーネル・バージョンと同じバージョン管理モデルを使用します。 一部のアプリケーションでは、4.14.バージョニング・スキームが認識されない可能性があります。 ただし、通常のLinuxアプリケーションでは、通常はLinuxカーネルのバージョン番号は認識されず、それによる影響もありません。
主な特徴と変更
次の項では、UEK R5U1に関連するUnbreakable Enterprise Kernelリリース5更新2 (UEK R5U2)の主な新機能について説明します。
64-bit Arm (aarch64)アーキテクチャ
Unbreakable Enterprise Kernelリリース5更新2では、Oracleは引き続きカーネルの変更を配信し、64-bit Arm (aarch64)アーキテクチャのサポートを可能にします。 これらの変更は、既存のArmハードウェアに対して作成およびテストされ、arm用のOracle Linuxのサポートを提供します。 このドキュメントで説明される機能は、ハードウェアが機能をサポートできるのであれば、Armで使用できます。 Armの現在の開発作業の範囲を超えた制限事項とアイテムについては、「Armの使用不可または利用不可の機能」で詳しく説明しています。
Armアーキテクチャに特定の変更が加えられた場合、通常はこのドキュメントで説明します。
カーネルの基本機能
UEK R5U2には、次のような重要なコア・カーネル機能が実装されます:
-
圧力ストール情報パッチセットが実装されました
圧力ストール情報(PSI)は、システム管理者がサーバー・リソースをより適切に最大化できるように設計されており、リソース使用率の問題を特定してトラブルシューティングするために使用できます。 PSIは、詳細なメトリックを提供し、
/proc/pressure
経由でレポートを行います。 たとえば:# cat /proc/pressure/cpu some avg10=94.45 avg60=66.32 avg300=21.06 total=73036145 # cat /proc/pressure/memory some avg10=0.00 avg60=0.00 avg300=0.00 total=0 full avg10=0.00 avg60=0.00 avg300=0.00 total=0 # cat /proc/pressure/io some avg10=0.00 avg60=1.09 avg300=13.39 total=621424943 full avg10=0.00 avg60=0.97 avg300=12.73 total=490558883
PSIはcgroupv2統計も記録できます。
この機能の詳細は、https://lwn.net/Articles/759781/およびhttps://lwn.net/Articles/763629/で説明されています。
-
cgroup v2 cpusetコントローラを有効にします
このリリースでは、
cpus
,mems
,sched.partition
,cpus.effective
やmems.effective
など、最小限の機能セットを使用して、デフォルトのcgroup
v2階層のcpuset
コントローラを有効にします。 新しい制御ファイルsched.partition
は、スケジュールのパースペクティブから独自の固有CPUセットを持つ新しいスケジューリング・ドメインまたはパーティションのルートであるcgroup
があるかどうかを指定する、試行状態フラグ・ファイルです。 パーティション・ルートは、フラグに値1を記述して有効にすることも、値0を書き込むことで無効にすることもできます。 パーティション・ルートがエラー状態にある場合は、-1の値が指定されますが、エラー状態が修正されると自動的に変更できます。 -
CPU集中型の作業をパレルライジングするためのktaskフレームワークの実装
このカーネル・リリースは、カーネル内のCPU負荷の高い作業を並列化するために使用されるktaskフレームワークを実装します。 この拡張機能により、アイドルCPUをハーネスにしてジョブをより迅速に完了させることに役立つパフォーマンス機能が提供されます。 このフレームワークには、一定範囲のページをゼロにする、iノードのリストを削除するなど、タスクの同時実行性を容易にするAPIが用意されています。
-
HPEシステムでUV BIOSタイムスタンプ・カウンタ(TSC)のサポートを有効にします
このカーネル更新には、HPEシステム用のUV BIOSタイムスタンプ・カウンタ(TSC)の拡張を有効にして利用するためのアップストリーム・パッチが含まれています。 パッチは、UV BIOS内の機能を利用して、一般的なカーネル関数よりもTSCの精度が高くなります。 これは、データベースにアクセスするためにTSC値を直接読み取るアプリケーションで重要です。
-
Armプラットフォーム用のカーネル・チューニング
カーネルはArmプラットフォーム用にチューニングされ、サポートされていないハードウェアのパラメータは、安定性とパフォーマンスを向上させるために無効になります。
-
AMD Rome機能使用可能
7002シリーズの第2世代のEPYCプロセッサ・ファミリであるAMD Romeプロセッサを使用できるように、カーネルにパッチが追加されました。 現時点ではすべてのAMD Rome機能を使用できるわけではありませんが、機能は必要に応じてerrataリリースに追加されます。
現在、次の機能がテストおよびサポートされています:
-
AMD Romeエラー検出/修正: 最新のAMD EDACドライバ・モジュールを使用すると、ECCメモリー・イベントおよびその他のエラーを収集してレポートできます。
-
x2APIC: APICでの8ビットから32ビットまでのプロセッサのxAPICアドレス機能を拡張し、オペレーティング・システムで2つのソケット・ローマ・システムの128 Cores (256スレッド)まで認識できるようにします。
-
CLWB (キャッシュ・ライン書込みバック): AMDの新規インストラクションは、すでにIntelでサポートされています。
-
WBNOINVD (ライトバック無効化なし): プロセッサの内部キャッシュにある変更済のすべてのキャッシュ行をメモリーに書き戻し、内部キャッシュの線を有効なままにしてキャッシュを印刷します。
-
AMDセキュアなメモリー暗号化(SME)およびセキュア化仮想化(SEV): ハイパーバイザ上で実行しているゲストのページの暗号化を、ゲストへのセキュア・キーの割当てを使用可能にします。 一部の新しいSEV機能は、まだ完全には機能していない可能性があります。
CPUIDはテストされ、使用可能な機能の次のリストが返されます:
-
CLWB (キャッシュ・ライン書込みバック)
-
PQE (キャッシュ割当てテクノロジ)
-
PQM (プラットフォームQoSモニタリング)
-
WBNOINVD (ライトバック無効化なし)
-
MBE (メモリー帯域幅の強制)
-
EncryptedMcodePatch (暗号化されたMcodeパッチ)
-
RDPRU (ユーザー・レベルでの読取りプロセッサ登録)
-
GMET (ゲスト・モード実行トラップ)
-
LBREXTN (最後のブランチ拡張子)
-
PerfCtrExtLLC (最終レベル・キャッシュ・パフォーマンス・カウンタ拡張)
-
AdMskExtn (命令ブレークポイントのアドレス・マスク拡張)
-
DTrace
次の重要なDTrace機能と修正は、UEK R5U2に実装されます:
-
libpcapパケット取得のサポート
このリリースには、DTraceでのlibpcapベースのパケット取得をサポートするためのカーネルおよびユーザー空間コードの更新が含まれています。
DTRACEACT_PCAP
アクションを追加することで、取得時間、完全なパケット長、およびバッファの許容量のパケットを記録できます。 取得は、線形および非線形ソケット・バッファに作用します(skb
)。 線形skb
の場合は、skb
がコピーされますが、skb
ページ・フラグメントを移動することにより、非線形skb
が収集されます。この機能には、
pcap(skb,proto)
処理を介してuserspaceでアクセスします。 アクションは2つの操作モードをサポートしています。 ファイルがfreopen()
でインストールされると、指定したファイルに対してpcap_dump
が実行されます。 たとえば:ip:::send { freopen("/tmp/cap.%s", probename); pcap((void *)arg0, PCAP_IP); freopen("");
ファイルが
freopen()
edでない場合、取得データは名前付きパイプを介してtsharkの起動に渡されて表示されます。tsharkが使用できない場合は、tracememのような形式で表示されます。 使用例:dtrace -n 'ip:::send { pcap((void *)arg0, PCAP_IP); }'
ファイル・システム
次の項では、UEK R5U2のファイル・システムに実装されている最も重要な機能について詳しく説明します:
Btrfs
次のBtrfsバグの修正および機能がこの更新で実装されました:
-
以前の修正がバックアップ・ストリームの修正によって解決されたあとで、マウント・エラーによってfsyncと電源障害が発生するような回帰問題の修正。
-
パッチは、チャンクが対応するブロック・グループにマップされるよう、追加チェックを実行するためにコードに適用されました。 これにより、欠落しているブロック・グループ・アイテムを含む作成済のイメージが予期せぬ動作の原因となった場合に問題が解決します。 問題はCVE-2018-14612としてファイルされ、このリリースで解決されました。
-
パッチがaarch64バージョンのカーネルのコードに適用され、ファイル・システムのトリミングが未割当て領域に制限され、一部のBtrfsファイル・システム上の既存ブロック・グループの領域をトリップしなかったという問題を解決します。
ext4
次のext4バグの修正および機能がこの更新で実装されました:
-
直接書込みが
i_disksize
の値を超え、i_size
よりも少ない場合にi_disksize
を更新するためのパッチが適用されました。 これは、ディスクのシミュレート後にファイルシステムの破損を引き起こす問題を解決しました。 この問題は、fsckを使用してiノード・エラーを修正しようとしたときに問題が発生しました。 -
パッチは、割り当てられていないAIOを含むブロックをゼロにする場合(非同期I/O))のデータ破損の原因となる可能性がある問題を修正するために適用されました。 問題は、AIOが
i_size
を超えて終了し、i_size
がブロック署名されていない場合に発生しました。 これにより、filesystemio_options=SETALL
オプション・セットで動作しているOracle Databaseで破損したバックアップ・データが生成された場合に、問題が解決しました。
OCFS2
次のOCFS2のバグ修正および機能がこの更新で実装されました:
-
すでにジャーナルにリンクされているブロックを読み取るときに、カーネル・パニックの原因となった問題を解決するパッチが適用されました。 通常、これは基礎となるストレージの問題から生じて、バッファーヘッド検証フラグを設定したままにします。
-
直接IOが失敗してiノードがクリアされなかったときに、カーネル・パニックを引き起こす問題を解決するためにパッチが適用されました。 パッチは、IO障害が発生した場合でも書込みコンテキストを解放します。
-
ファイル・システムがマウントされたにもかかわらず、正常にアンマウントされないために一貫性のないメタデータになる問題を解決するために、パッチが適用されています。 ファイル・システムがクリーンでない場合、マウントは失敗し、fsckを実行して必要な修正を実行し、ローカル割当てを回復するようにユーザーに通知するエラーが返されます。
-
同じブロックに対する2つの同期IOリクエストが発行され、読取り操作用のブロック・ヘッド
uptodate
フラグがクリアされた場合に、クラッシュとなった競合状態を解決するためにパッチが適用されました。
XFS
次のXFS機能が実装されています:
-
パッチが適用され、拒否ノードの検証が改善されてCVE-2018-10322が解決されました。 問題は、クラッシュしたXFSイメージを使用してサービス拒否攻撃を受ける可能性があります。 コードは、さらに複数の検証チェックを実行するために更新されました。
-
リアルタイム・デバイスの統計がボリュームに設定されている場合、
statfs
コールにリアルタイム・デバイスの統計が表示されるようパッチが適用されました。 これにより、dfのようなアプリケーションで、リアルタイム・ボリュームに使用可能な不適切なディスクが表示されるという問題が解決します。 -
XFS内の拡張属性の処理に使用される
listxattr
コールのコードに、メモリー破損のバグを修正するためにパッチが適用されました。 この問題は、xfs_xattr_put_listent
の複数の呼出しがある操作中に、バッファ領域が不足すると発生します。 それ以降の呼出しではバッファ前のバイトが書き込めるため、KASAN (Kernel Address Sanitizer)レポートがトリガーされます。
RDMA
リモート・ダイレクト・メモリー・アクセス(RDMA)は、ネットワークによって接続された2つのシステム間でダイレクト・メモリー・アクセスを可能にする機能です。 RDMAは、クラスタ内のハイ・スルー・プットと低レイテンシのネットワーキングを容易にします。
Unbreakable Enterprise Kernelリリース5の更新2には、KspliceおよびDTraceの機能とOracle独自のRDMA機能(RDSとShared-PDのサポートが含まれる)が追加され、アップストリーム・カーネルで提供されるRDMA機能が含まれています。
UEK R5U2でのRDMA実装の重要な変更には、次のような変更があります:
-
RDMAは一連のモジュールとしてカーネルにマージされます
RDMAがカーネル・ロード可能モジュールとして使用可能になり、独立したサービスとして実行されなくなります。 コマンドsystemctl start rdmaは非推奨であり、サポートされなくなりました。
-
resilient_rdmaip
モジュールの修正と改善resilient_rdmaip
モジュールに適用される修正が含まれています。 特に、resilient_rdmaip
モジュールがアンロードされた場合にInfiniBandインタフェースへのアクセスで問題が発生した問題は解決され、デフォルトではモジュールをアンロードできません。
ストレージ
次の重要な記憶域機能は、Unbreakable Enterprise Kernelリリース5更新2で実装されています:
-
NVMeの更新
NVMeの多数のコード更新が、Broadcom/EmulexおよびQLogicデバイスの最新の更新されたドライバの機能を有効にするために、バージョン4.18から4.21へのアップストリームLinuxカーネル・リリースからバック・ポートされました。 これらの更新には、NVMeコア・レイヤー・コード内のトランスポート・クラスでFC-NVMeを有効にするための変更が含まれます。 SCSI/FCトランスポート・クラス内でNVMeを有効にするために、SCSIレイヤーにも更新が含まれています。 NVMectlおよびNVMe cliユーザー・スペース・ライブラリも更新されます。 NVM機能のサポートは、ハードウェア・ベンダーが提供するサポートに限定されています。
仮想化
次の重要な仮想化機能は、Unbreakable Enterprise Kernelリリース5更新2で実装されています:
-
LinuxからのKVM、XenおよびHyper-Vのバック・ポート更新4.19
KVM、XenおよびHyper-V用のLinux 4.19カーネルへのアップストリーム・コミットはすべて、この現在のカーネル更新リリースにバック・ポートされています。 KVMの主な更新には、PCIDエミュレーション、仮想マシン拡張機能(VMX)を使用するネストされたゲストに対するKVMのサポートの拡張、およびArmのサポートに対する追加作業が含まれます。 この更新では、KVMに対してバグの修正とコードの最適化が数多く行われています。 また、Microsoft Hyper-V更新は、セキュリティの修正、コードの実施、最適化とともに重要です。 この更新により、準仮想化されたゲスト内部プロセッサ割込み(IPI)は、パフォーマンス向上のためにハイ・パー・コールを使用できます。
-
KVMのセキュリティ修正
セキュリティ修正は、CVE-2018-19407のKVMコードに適用され、irqchipが初期化されていない場合にスキャンioapicロジックをトリガーするシステム・コールによって実現可能なサービス拒否アタッチの可能性を解決しました。 同様に、apicマップが間接参照された場合にpv_send_ipiインタフェースをトリガーすることで攻撃を受けるCVE-2018-19406に修正が適用されました。 Apicマップにnull値が含まれている場合、すぐにコールをバックアウトするためのチェックが含まれていました。 加えて、CVE-2019-7221にも修正が適用されました。従来では、エミュレートされたVMX事前移入タイマーをfree_nestedにアクセスでき、CVE-2019-7222(この場合、他のいくつかの指示のエミュレーションでは初期化されていないスタック・メモリーのリーク・コンテンツへのページ・フォルトが誤って挿入される可能性がある)という問題を、無条件に取り消すためです。
-
Xen blkfrontホット・プラグに関する問題の修正
問題はXen blkfrontコード内で解決され、blkfrontホット・プラグ対応デバイスが取り外されてメモリー割り当て障害が発生したときに、ゲストでカーネル・パニックが発生します。
-
Xen x86ゲスト・クロック・シェーダの修正
x86ゲスト・クロック・スケジューラが移行時にゲスト仮想マシンでクロック・ドリフトの原因となった問題は解決され、仮想マシンが再開されるときに単調なクロック値が保証されます。
ドライバの更新
Unbreakable Enterprise Kernelリリース5では、多数のハードウェアおよびデバイスがサポートされています。 ハードウェアおよびストレージ・ベンダーと協力し、Oracleでは、メインラインLinux 4.14.35のバージョンからデバイス・ドライバをいくつか更新しました。
UEK R5U2に含まれるドライバ・モジュールの完全なリストとバージョン情報は、「Unbreakable Enterprise Kernelリリース5更新2 (x86_64)のドライバ・モジュール」の付録に記載されています。
注目のドライバ機能
次の新機能は、元のリリースのUEK R5ではなく、UEK R5U2で出荷されるドライバに示されます:
-
Amazon Elastic Network Adapter
Amazon Elastic Network Adapterドライバ
ena
は、このカーネル更新リリースで有効になり、Armプラットフォームでの使用時に64kB以上のページ・サイズをドライバが処理する方法を修正するためのパッチが含まれています。 -
Broadcom/Emulex OneConnect NICドライバがバージョン12.0.0.0に更新されました
このカーネル更新リリースでは、Broadcom/Emulex OneConnect NICドライバ
be2net
がバージョン12.0.0.0に更新されました。 この更新には、アップストリームのパッチとバグの修正が含まれます。 ドライバへの重要な変更には、ハードウェアのストール問題への修正および転送完了エラーの処理の向上が含まれます。 -
Broadcom/Emulex BCM573xx NICドライバが更新されました
Broadcom/Emulex BCM573xx NICドライバ
bnxt_en
は、多数のアップストリーム・パッチおよびバグ修正が含まれるように、このカーネル更新リリースで更新されています。 ドライバへの変更には、200Gbのネットワーク・インタフェース・カードやファームウェア・インタフェース仕様への重要な更新などの追加ハードウェアのサポートが含まれます。NETIF_F_GRO_HW
機能フラグの形で、ハードウェアGRO (汎用受信オフロード)を使用可能にするためにバグも修正されました。このフラグを使用すると、GROに影響を及ぼすことなく、ハードウェア・ドライバ内のGROを個別に管理できます。 -
Broadcom/Emulex LightPulseファイバ・チャネルSCSIドライバが12.0.0.10に更新されました
Broadcom/Emulex LightPulseファイバ・チャネルSCSIドライバ
lpfc
がバージョン12.0.0.10に更新されました。 多くのアップストリーム・パッチが、バグの修正および拡張に適用されています。 このリリースには、ファイバ・チャネルでNVMeを有効にするためのフレームワークへの改善も含まれています。lpfc
のFC-NVMeはテクニカル・プレビューとして利用できます。 -
Broadcom RoCEドライバがブラックリストに登録されました
Broadcom RoCEドライバ
bnxt_re
は、Broadcom BCM57414 NetXtreme-Eなどの一部のBroadcomネットワーク・インタフェース・カードを操作するときにカーネル・パニックを引き起こす可能性のあるいくつかのバグを回避するためにブラックリストに登録されています。 仮想ファブリック(VF)が定義され、カードでRDMAオプションが有効になっている場合、ホット・プラグ操作によってbnxt_re
ドライバがこのハードウェアにロードされるときに、カーネル・パニックが発生する可能性があるバグが含まれます。 2番目のバグは、VFを作成または削除しようとしたときにトリガーされ、RDMAオプションがカードで有効化されています。 RDMAはこのハードウェアではサポートされていないため、これらの問題を解決するには、ドライバ・モジュールがブラックリストに記載されています。 -
Intelイーサネット接続XL710ネットワーク・ドライバが更新されました
Intelイーサネット接続XL710ネットワーク・ドライバ
i40e
が更新され、多数のアップストリーム修正および拡張が含まれます。 -
Intel Ethernet Connection E800シリーズのネットワーク・ドライバが追加されました
Intel Ethernet Connection E800シリーズ・ネットワーク・ドライバ
ice
が、このカーネル更新リリースに追加されました。 このドライバを使用すると、Intelから使用可能な新しいハードウェアが有効になります。 -
Intel Ethernet Adaptive Virtual Functionネットワーク・ドライバの名前が変更されました
以前
i40evf
と呼ばれていたIntelイーサネット適応型仮想機能ネットワーク・ドライバは、より汎用的な機能を必要とし、幅広いハードウェアをサポートしているため、iavf
に名前が変更されました。 新しい範囲のネットワーク・インタフェース・カードのサポートを含むアップストリームの変更に対してドライバが更新されます。 -
Intel 2.5 G Ethernetネットワーク・ドライバが追加されました
このカーネル更新リリースでは、Intel 2.5 G Ethernetネットワーク・ドライバ
igc
が追加されました。 このドライバを使用すると、Intelから使用可能な新しいハードウェアが有効になります。 -
Avago MegaRAID SASドライバが更新されました
Avago MegaRAID SASドライバ
megaraid_sas
ドライバは、新しいMegaRAID Aeroコントローラのサポートを含むアップストリームのパッチおよび拡張用に更新されました。 -
Avago LSI MPT Fusion SAS 3.0デバイス・ドライバが27.101.00.00に更新されました
Avago LSI MPT Fusion SAS 3.0デバイス・ドライバ
mpt3sas
が、アップストリーム・パッチおよび拡張を含めるように27.101.00.00に更新されました。
互換性
Oracle Linuxは、Red Hat Enterprise Linuxとの完全なユーザー・スペースの互換性を維持します。これは、オペレーティング・システムの下で動作するカーネルのバージョンとは独立しています。 ユーザー空間内の既存のアプリケーションは、引き続きUnbreakable Enterprise Kernelリリース5で変更されず、RHEL認定アプリケーションには再認証は必要ありません。
Oracle Linuxチームはリリース時の互換性に関する影響を最小限に抑えるため、カーネル・モジュールに対する依存性があるハードウェアおよびソフトウェアを提供するサード・パーティ・ベンダーと緊密に協力しています。 UEK R5のカーネルABIは、最初のリリースに続くすべての更新で変更されません。 今回のリリースでは、システム上でサードパーティのカーネル・モジュールを再コンパイルする必要があるUEK R4に対するカーネルABIの変更があります。 UEK R5をインストールする前に、アプリケーション・ベンダーにサポート状況を確認してください。
Oracle製品に対するUEK R5の認証
UEK R5での異なるOracle製品の認定は、UEK R5リリースの時点ではすぐには入手できないことに注意してください。 必ず、使用している製品が、カーネルをアップグレードまたはインストールする前にUEK R5上で使用することを確認してください。 https://support.oracle.com/epmos/faces/CertifyHomeで証明書を確認してください。
Oracle Automatic Storage Management異なるカーネル・バージョンのクラスタ・ファイル・システム(Oracle ACFS)の認証については、https://support.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=1369107.1の文書ID 1369107.1を参照してください。
異なるカーネル・バージョンのOracle Automatic Storage Managementフィルタ・ドライバ(Oracle ASMFD)の認証については、https://support.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=2034681.1のドキュメントID 2034681.1に記載されています。