第1章 新機能および変更点
Unbreakable Enterprise Kernelリリース3 (UEK R3)は、x86-64アーキテクチャ上のOracle Linux 6および7向けにテストを重ね、最適化されたオペレーティング・システム・カーネルのオラクル社が提供する3番目のメジャー・リリースです。 これはメインラインのLinuxカーネル・バージョン3.8.13に基づいています。
3.8.13-98リリースは、UEK R3向けの6番目の四半期更新リリースです。 このリリースには、セキュリティとバグの修正、ドライバの更新が含まれます。
オラクル社は、積極的に、アップストリーム・チェックインを監視し、クリティカルなバグおよびセキュリティの修正をUEK R3に適用しています。
UEK R3では、メインラインのLinuxカーネル・バージョンと同じバージョニング・モデルを使用します。 一部のアプリケーションでは、3.xバージョニング・スキームが認識されない可能性があります。 アプリケーションに2.6のコンテキストが必要な場合は、uname26ラッパー・コマンドを使用すると、アプリケーションを開始できます。 ただし、通常のLinuxアプリケーションでは、通常はLinuxカーネルのバージョン番号は認識されず、それによる影響もありません。
1.1 注目すべき変更点
UEFI Secure Bootが有効化されたシステムでのOracle Linuxのインストールおよび使用をサポートしています。 Secure Bootモードでのシステムは、オラクル社により署名されたブート・ローダーおよびカーネルのみをロードします。
Virtual eXtensible Local Area Network (VXLAN)およびGeneric Routing Encapsulation (GRE)のサポートが、UEK Open Vswitchカーネル・モジュール(
kmod-openvswitch-uek
)に追加されました。Intel Sandy Bridgeメモリー・コントローラのサポートが有効化されています。
Cisco SCSI NICドライバ(
snic
)バージョン0.0.1.18が追加されています。SGI UltraViolet 3プラットフォームのハードウェア・サポートが有効化されています。
カーネル・モジュールの署名に、SHA-512ハッシュ・アルゴリスムを使用します(以前は、SHA-256を使用)。
8つを超えるPTPハードウェア・クロック(PHC)のサポートが有効化されています。
btrfs、ext4、xfsおよびOCFS2の各ファイル・システムのバグが修正されました。
Microsoft AzureまたはHyper-V上で動作するOracle Linuxゲストのサポートのバグが修正されました。
このカーネルの更新には、QLogicファームウェアに対する依存性の更新も含まれます。 新しいカーネルをインストールすると、依存性は解決します。
1.2 LXCの改良点
UEK R3 QU6で実行するバージョン1.0.7以降のLinux Containers (lxc
)パッケージでは、--privilegedオプションをlxc-oracle
テンプレート・スクリプトに指定すると、Oracle Linuxコンテナの/proc
階層にある次のカーネル・パラメータの値を調整できます。
/proc/sys/kernel/msgmax
/proc/sys/kernel/msgmnb
/proc/sys/kernel/sem
/proc/sys/kernel/shmall
/proc/sys/kernel/shmmax
/proc/sys/kernelshmmni
/proc/sys/net/ipv4/conf/default/accept_source_route
/proc/sys/net/ipv4/conf/default/rp_filter
/proc/sys/net/ipv4/ip_forward
これらの各パラメータには、ホスト・システム用に構成した値やホスト・システム上で実行中の他のコンテナとは異なる値を設定できます。 デフォルト値は、コンテナ作成時にテンプレートから導出されます。 Oracleデータベースまたはその他のアプリケーションでデフォルト値以外の値がコンテナに必要になった場合にのみ、設定を変更することをお薦めします。
--privilegedオプションは、CAP_SYS_NICE
機能も追加し、ネガティブなnice
値(スケジューリングに適しています)を設定することで、コンテナ内から処理が可能になります。
UEK R3 QU6より以前では、次のホスト専用パラメータは、カーネル制限のためコンテナ内に表示されませんでした。
/proc/sys/net/core/rmem_default
/proc/sys/net/core/rmem_max
/proc/sys/net/core/wmem_default
/proc/sys/net/core/wmem_max
/proc/sys/net/ipv4ip_local_port_range
/proc/sys/net/ipv4/tcp_syncookies
UEK R3 QU6以降では、これらのパラメータはコンテナ内の読取り専用で、Oracle Databaseおよびその他のアプリケーションをインストールできます。 これらのパラメータの値は、ホスト側からのみ変更できます。 ホスト専用パラメータに対する変更は、ホスト上のすべてのコンテナに適用されます。
詳細は、「Oracle Database 11.2クイック・インストレーション・ガイド」、「Oracle Database 12.1クイック・インストレーション・ガイド」の「カーネル・パラメータおよびリソース制限の構成」、「Oracle® Linux 6: 管理者ソリューション・ガイド」の「Linuxコンテナ」、「Oracle® Linux 7: 管理者ガイド」の「Linuxコンテナ」を参照してください。
(Bug ID 21267882)
1.3 Xenの改良点
ハイパーコールの長時間の実行によるソフト・ロックアップが発生しないように修正されました。
Physical to Machine (P2M)表を、低い階層の
SWIOTLB
使用方法に書き直しました。Xenブロック・ドライバのメモリー・リークを修正しました。
xen-netfront
ドライバでハンドルされない複合ページを修正しました。
1.4 DTraceの改良点
DTraceカーネル・モジュール(バージョン0.4.5)
USDT(ユーザー・レベルに静的に定義されたトレース)プローブを、64ビット・ホスト上の32ビット・アプリケーションで使用できます。
d_path()
Dサブルーチンは、その引数を、現在のタスクで認識されたファイルに対応するパス構造に対するポインタにする必要があります。
DTraceヘルプ・トレース機能でのわずかなメモリーのリークが、修正されました。
dtrace.ko
モジュールがロードされると、バッファ(デフォルトで64K)が割当てられ、リリースされません。特定のプローブをスキップするフレーム数の調整が修正された結果、スタック・バックトレースがより正確になりました。
スタックの深さは、割当てられた一時バッファ(
vmalloc
)に書き込まれるバックトレースのリクエストにより決定されたため、メモリー割当てをサポートしていないコンテキストでプローブが実行される場合に重大な問題が発生しました。 現在、バッファは、プローブ処理のためにDTraceは提供するスクラッチ領域から取得されます。個別のポインタが
d_path()
に渡されると、システム・クラッシュが発生します。 実装により制限されるため、安全なメモリー・アクセスを使用してこれを回避することはできません。d_path()
をコールする前に、ポインタを有効化する必要があります。
DTraceユーザー・スペース・ツール(バージョン0.4.6)
dtrace-utils-devel
パッケージでは、dtrace-utils
パッケージに対応するバージョンが必要です。dtrace-utils
パッケージの名前が変更されました。新しいdtrace -vVオプションを使用して、リリースされたバージョンの情報および
dtrace(1)
およびlibdtrace(1)
の内部IDを報告することができます。<dtrace.h>
ヘッダー・ファイルが含まれ、DTraceコンシューマ・アプリケーションの開発をサポートできます。DTraceは、現在実行中のカーネルに対応する名前を持つディレクトリからのみ、Dライブラリをロードします。
通常の操作中に
SIGTRAP
を受信するプロセスが、トレース中でも機能します。 以前は、SIGTRAP
が無視されました。DTraceでは、DTraceによる動的リンク・ステートの検証中に、
exec()
を実行するプロセスのトラックを失う問題が修正されました。DTraceでは、分岐したプロセスにブレークポイントを残す問題が修正されました
DTraceが監視を停止したプロセスのシンボル・テーブルの状態を認識する問題が修正されました。
dlopen()
またはdlclose()
を使用するマルチスレッド・プロセスで、DTraceがクラッシュする問題が修正されました。
1.5 ドライバの更新
Unbreakable Enterprise Kernelでは、広範なハードウェアおよびデバイスをサポートします。 ハードウェアおよびストレージのベンダーとの密接な協力関係により、いくつかのデバイス・ドライバがオラクル社によって更新されました。
製造元 |
ドライバ |
バージョン |
説明 |
---|---|---|---|
Adaptec |
|
1.2-1[40709]-ms |
SCSIドライバ |
Broadcom |
|
2.2.5o |
NetXtreme II 1 Gigabitネットワーク・アダプタ・ドライバ |
Broadcom |
|
2.9.3 |
NetXtreme II FCoEドライバ |
Broadcom |
|
2.11.2.0 |
NetXtreme II iSCSIドライバ |
Broadcom |
|
1.712.33 |
NetXtreme II 10 Gigabitネットワーク・アダプタ・ドライバ |
Broadcom |
|
2.5.20h |
NetXtreme IIコンバージドNICコア・ドライバ |
Cisco |
|
1.6.0.18 |
FCoE HBAドライバ |
Cisco |
|
0.0.1.18 |
SCSI NICドライバ |
Emulex |
|
10.6.0.2 |
OneConnect (Blade Engine 2) NICドライバ |
Emulex |
|
0:10.6.61.1 |
LightPulse Fibre Channel SCSIドライバ |
Intel |
i40e |
1.3.2-k |
Ethernet Connection XL710ネットワーク・ドライバ |
Intel |
|
1.2.25 |
XL710 X710仮想機能ネットワーク・ドライバ |
Intel |
|
4.0.3 |
10ギガビットPCI Expressネットワーク・ドライバ |
Intel |
|
2.16.1 |
10ギガビットPCI Express仮想機能ネットワーク・ドライバ |
Intel |
|
0.10 |
NVM Expressデバイス・ドライバ |
QLogic |
|
8.07.00.18.39.0-k |
Fibre channel HBAドライバ |
QLogic |
|
5.04.00.07.06.02-uek3 |
iSCSI HBAドライバ |
VMware |
|
1.0.3.0-k |
PVSCSIドライバ |
VMware |
|
1.1.3.0-k |
仮想マシン通信インタフェース |
VMware |
|
1.0.1.0-k |
仮想ソケット・ファミリー |
1.6 テクノロジ・プレビュー
Unbreakable Enterprise Kernelリリース3に含まれている次の機能は、まだ開発中ですが、テストと評価の目的で使用できます。 これらの機能は本番システムで使用しないでください。
分散複製型ブロック・デバイス(DRBD)
非共有型の同時複製ブロック・デバイス(ネットワーク経由のRAID1)で、高可用性(HA)クラスタのビルディング・ブロックの役割を果たすように設計されています。 自動フェイルオーバーのためにはクラスタ・マネージャ(ペースメーカーなど)が必要です。
カーネル・モジュール署名機能
暗号署名チェックをモジュール・ロード時にモジュールに適用し、カーネルにコンパイルされた公開キー・リングに対して署名をチェックします。 GPGは暗号化の作業を行うために使用され、署名およびキーのデータの書式を決定します。
NFS over RDMAクライアント
Oracle InfiniBandスタック上でRDMAトランスポート経由のNFSの使用を可能にします。 これはTCP/IPoIBトランスポートを使用するよりも効率的です。 テクノロジ・プレビューには、NFS over RDMAサーバーのサポートや仮想化環境でのNFS over RDMAのサポートは含まれていません。 NFSバージョン3および4がサポートされています。 現在、Mellanox ConnectX-2およびConnectX-3ホスト・チャネル・アダプタ(HCA)のみがサポートされています。 これらのHCAを使用したConnectathon NFSの完全なテスト・スイートにクライアントは合格しました。 初回リリース後、サポート対象のアダプタが追加されると、リリース・ノートが更新されます。
この機能を使用する方法の詳細は、1.6.1項「NFS over RDMAクライアントの使用方法」を参照してください。
NFS共有上のスワップ・ファイル
システムがNFS共有上に存在するスワップ・ファイルを使用する機能。 スワップ・ファイルの使用の詳細は、
swapon(8)
のマニュアル・ページおよび使用しているOracle Linuxリリースの管理者ガイドを参照してください。高性能メモリー
高性能メモリー(tmem)は、システム内で十分に利用されていないメモリーを回収して、最も必要とされる場所で利用できるようにすることで、仮想化環境での物理メモリーの利用を改善するための新しい方法を提供します。 オペレーティング・システムの観点から見れば、tmemはサイズが不確定で可変の高速擬似RAMで、主として実際のRAMが不足しているときに役に立ちます。 このテクノロジとそのユースケースの詳細は、透過メモリー・プロジェクト・ページ(https://oss.oracle.com/projects/tmem/)を参照してください。
1.6.1 NFS over RDMAクライアントの使用方法
次の手順では、NFS over RDMAサーバーを有効にする方法の詳細も説明しています。 NFS over RDMAサーバーは現在UEK R3カーネルでサポートされていないので、これらは単なる例として提供されています。
RDMAデバイスをインストールし、InfiniBandを設定してIPoIBを有効にします。
Oracle Linux OFEDパッケージは次のチャネルから入手できます。
Oracle Linux 6:
ol6_x86_64_ofed_UEK
Oracle Linux 7:
ol7_x86_64_UEKR3_OFED20
RDMAデバイスが機能していることを確認します。
#
cat /sys/class/infiniband/
4: ACTIVEdriver_name
/ports/1/statedriver_name
はRDMAデバイス・ドライバです(mlx4_0
など)。物理InfiniBandインタフェースとリンクを確認します。
ibhostsやibnetdiscoverなどのコマンドを使用して、InfiniBandスイッチ経由でホストに接続できることを確認します。
NFSクライアントとNFSサーバー間の接続を確認します。
InfiniBandインタフェースの設定は
/etc/sysconfig/network-scripts/ifcfg-ib
ファイルで構成できます。N
pingを使用して接続を確認できます。 次に例を示します。
nfs-server$
ip addr add 10.196.0.101/24 dev ib0
nfs-client$ip addr add 10.196.0.102/24 dev ib0
nfs-server$ping 10.196.0.102
nfs-client$ping 10.196.0.101
NFSクライアントとサーバーに
nfs-utils
パッケージをインストールします。NFS共有を構成します。
/etc/exports
ファイルを編集します。 クライアントのIPoIBアドレスを使用して、クライアントがマウントできるようにNFSサーバーが使用可能にするディレクトリを定義します。 次に例を示します。/
export_dir
10.196.0.102(fsid=0,rw,async,insecure,no_root_squash) /export_dir
10.196.0.0/255.255.255.0(fsid=0,rw,async,insecure,no_root_squash)NFSサーバー上で、
svcrdma
カーネル・モジュールをロードし、NFSサービスを開始します。Oracle Linux 6:
#
modprobe svcrdma
#service nfs start
#echo rdma 20049 > /proc/fs/nfsd/portlist
Oracle Linux 7:
#
modprobe svcrdma
#systemctl start nfs-server
#echo rdma 20049 > /proc/fs/nfsd/portlist
注意rdma 20049
設定は、NFSサービスを再起動すると失われます。 NFSサービスを起動するたびに、これを設定する必要があります。NFSクライアント上で、
xprtrdma
カーネル・モジュールをロードし、NFSサービスを開始します。#
modprobe xprtrdma
#service nfs start
#mount -o proto=rdma,port=20049
host
:/export
/mnthost
は、IPoIBサーバーのホスト名またはIPアドレスで、export
はNFS共有の名前です。RDMA経由のマウントが正常に行われたことを確認するには、マウント・ポイントの
proto
フィールドを確認します。#
nfsstat -m
/mnt from 10.196.0.102:/export Flags: rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=rdma,port=20049, ...別の方法の例を示します。
#
cat /proc/mounts
既知の問題
NFSサーバーを停止するには、事前にNFSクライアント上でマウント済のファイル・システムをすべてアンマウントする必要があります。 そうしないと、NFSサーバーは停止時にハングします。
1.7 互換性
Oracle LinuxではRed Hat Enterprise Linuxとのユーザー空間の互換性が維持され、これはオペレーティング・システムの下で実行されているカーネルのバージョンとは無関係です。 ユーザー空間の既存のアプリケーションは、Unbreakable Enterprise Kernelリリース3で変更なしに引き続き実行され、RHEL認定アプリケーションには証明書の更新は不要です。
Oracle Linuxチームはリリース時の互換性に関する影響を最小限に抑えるため、カーネル・モジュールに対する依存性があるハードウェアおよびソフトウェアを提供するサード・パーティ・ベンダーと緊密に協力しています。 UEK R3のカーネルABIは、最初のリリースの後のすべての更新において変更されていません。 このリリースでは、システム上でサード・パーティのカーネル・モジュールの再コンパイルを必要とするUEK R2と比較してカーネルABIに対する変更点があります。 UEK R3をインストールする前に、アプリケーション・ベンダーとそのサポート状況を確認してください。
1.8 開発用ヘッダー・パッケージ
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