第3章 主なバグ修正


本章では、ユーザーに大きな影響を及ぼす Red Hat Gluster Storage の今回のリリースで修正されたバグについて説明します。
注記
ハイパーリンクの付いていない Bugzilla ID は、機密データが割り当てられている可能性のあるプライベートバグです。

セキュリティーの修正

CVE-2019-10197 (中程度)
パラメーターとパーミッションの組み合わせにより、ユーザーが共有パスの定義から逃れることができる可能性があります。

一般的な修正

BZ#1578703
以前は、gluster volume status <volname> inodeを実行するとinodeテーブル全体が出力され、タイムアウトしてパフォーマンス問題が発生することがありました。このコマンドの出力はより合理的になり、元の情報はstetumpを実行することで得られるようになりました。
BZ#1734423BZ#1736830BZ#1737674
これまでは、動的に割り当てられたメモリが正しく解放されないため、glusterクライアントでのメモリ消費量の増加やメモリ不足の管理が行われていました。メモリが正しく解放されるようになり、メモリオーバーランが発生しないようになりました。
BZ#1676468
以前は、glusterfsはカーネルの自動無効化を有効にしており、ctimeが変更されるとページキャッシュを無効にしていました。つまり、ctimeの変更前、変更中、変更後に書き込みが発生するたびに、ページキャッシュがパージされ、その後の書き込みのパフォーマンスはキャッシュの恩恵を受けないことになりました。
パフォーマンスを向上させるための2つの新しいオプションが用意されました。
マウントオプションのauto-invalidation[=on|off]がデフォルトで有効になりました。これは、カーネルが属性、dentry、およびページキャッシュを自動的に無効にするかどうかを指定するものです。書き込み後にページキャッシュを保持するには、これを「off」に設定します。ただし、ファイルが2つの異なるマウントポイントから同時にアクセスできない場合に限ります。
ボリュームオプションのperformance.global-cache-invalidation=[on|off]は、performance.cache-invalidationの値を上書きします。このオプションは、デフォルトでは無効ですが、有効にすると、統計の変更が検出されたときに、glusterに関連するすべての読み取りキャッシュをパージします。ファイルが異なるマウントポイントからアクセス可能で、これらのマウントポイント間のキャッシュが一貫していることが要求される場合に限り、このオプションをオンにしてください。
両方のオプションをオフにすると、書き込まれたデータはページキャッシュに保持され、同一領域でのオーバーラップ読み取りのパフォーマンスが向上します。
BZ#1726991
get-status操作は開始および停止の状態しか追跡しないため、ブリックの状態が開始または停止の状態にあるときに、ブリックの状態が開始と表示されていました。get-status操作は、より正確に状態を報告するようになりました。
BZ#1720192
glusterボリュームにbind-address が指定されている場合、リバランスソケットファイルの名前が許容される文字数よりも大きくなり、リバランスが開始されないという問題がありました。ボリューム名とUUIDに基づいてハッシュが生成されるようになり、この問題が回避されました。
BZ#1670415BZ#1686255
すべてのボリュームの状態を表示するときに発生していた小さなメモリーリークが修正されました。
BZ#1652461
3ノードクラスターで1500以上のボリュームを設定している場合に、ノードやglusterdサービスが利用できなくなると、再接続時にハンドシェイクプロセスがタイムアウトする前に収集するボリューム情報が多すぎるという問題がありました。この問題は、ボリューム情報の収集プロセスにいくつかの最適化を加えることで解決されます。
BZ#1058032
これまでは、仮想マシンの移行中に、マシンイメージが共有ファイルシステム上にあることが検出されると、libvirtがマシンイメージの所有権を変更していました。そのため、仮想マシンがイメージにアクセスできなくなっていました。この問題はもう再現しません。
BZ#1685246
removeexattr システムコールがブリックプロセスに渡されなかったため、アクセス制御リスト設定が Red Hat Gluster Storage ボリュームから削除されませんでした。この問題は修正され、期待通りに属性が削除されるようになりました。

分散されたボリュームの修正

BZ#1732774
不良ブリック上のファイルに対する書き込み要求が実行されている間に、そのファイルがヒーリングされていた場合、書き込み操作中に発生する読み取りは、不良ブリックからファイルを読み取ることができます。これにより、正常なブリックのデータが破損してしまう可能性があります。この問題を回避するために、すべての読み取りは良好なブリックからのみ行われるようになりました。
BZ#1706549
ブリックがダウンしても、O_TRUNCフラグを使用してファイルを変更することができます。ブリック機能が復活すると、ファイル記述子を使用してファイルを変更した操作は、open-fdヒールを開始します。これまでは、O_TRUNCを使用してオープンされたファイルに対してopen-fd healを実行すると、ファイルに対して切り捨て操作が行われていました。切り捨て操作は通常、すでにロックを取得している操作の一部として行われるため、明示的なロックを取得しませんでした。この場合、NULLロック構造が発生し、最終的にNULLロック構造が参照解除されたときにクラッシュしました。open-fdヒール時にO_TRUNCフラグが無視され、ファイルのデータヒール時に切り捨て操作が行われるようになり、この問題が回避されるようになりました。
BZ#1745107
これまでは、ファイルのサイズやバージョンの更新に失敗しても、ファイル記述子が不良としてマークされることはありませんでした。そのため、必ずしもそうではないのに、ブリックが正常だと思われたり、ファイルに誤ったデータが表示されたりすることがありました。この更新により、更新に失敗した後のファイル同期の変更やフラッシュの失敗により、ファイル記述子が不良とマークされるようになりました。

分散ボリュームの修正

BZ#1672869
これまでは、parallel-readdirを有効にすると、古くなったlinktoファイルがデータファイルと誤って解釈され、削除できませんでした。古くなったlinktoファイルが正しく認識されるようになりました。

イベントに関する修正

BZ#1732443
これまでは、イベントソケットの初期化時にネットワークファミリーが正しく設定されませんでした。この結果、無効な引数エラーが発生し、イベントがコンシューマーに送信されませんでした。ネットワークファミリーが正しく設定され、イベントが期待通りに動作するようになりました。

gdeployによる自動化の修正

BZ#1759810
gdeployによるSambaのセットアップ時に、設定オプションgroup=sambauser.cifs=enableがボリュームに設定されるようになり、セットアップが成功するようになりました。
BZ#1712904
これまでは、gdeployを使用してsambaを設定すると、クラスタ内のすべてのノードでsambaユーザが作成されませんでした。これにより、CTDBのフェイルオーバー時に、必要なユーザーが存在しないという問題が発生しました。gdeployは、すべてのノードでsambaユーザーを作成するようになり、この問題を回避しました。

Geo レプリケーションに関する修正

BZ#1708116
ジオレプリケーションで、リンクが解除されてマスターに存在しなくなった大量のファイルの同期を試みると、デッドロックが発生してtarsshプロセスがハングアップしてしまうという問題がありました。tarが完了する前に、tarプロセスのstderrバッファがいっぱいになると、ハングアップしました。ワーカーはstderrを読み取る前にtarが完了することを期待していましたが、tarは読み取られてバッファが解放されるまで完了できませんでした。ワーカーは、tarプロセスが作成されるとすぐにstderr出力の読み取りを開始するようになり、この問題が回避されました。
BZ#1708121
Geo レプリケーションでは、多数の異なるファイルが作成され、同じ宛先パスにリネームされた場合に、追加のファイルを作成するのではなく、正しく同期するようになりました。
BZ#1712591
非rootのGeo レプリケーションセッションでは、glusterのバイナリパスがPATH変数に追加されないため、glusterコマンドがセッションで利用できないという問題がありました。既存のgluster-command-dirおよびgluster-command-slave-dirオプションを使用して、セッションがglusterコマンドにアクセスできるようにすることができます。
BZ#1670429
シンボリックリンクの名前が同期の間に複数回変更されても、Geo レプリケーションが成功するようになりました。

NFS-Ganeshaの修正

BZ#1728588
NFSクライアントとの接続を再確立しようとしたときに、サーバーが既存の状態を時間内にクリーンアップしないという競合状態がありました。これにより、新しい接続が期限切れと誤って認識され、マウントポイントにアクセスできなくなるという問題がありました。新しい接続を受け入れる前に状態がクリーンアップされるようになったため、この問題は発生しなくなりました。
BZ#1751210
NFS-Ganeshaでは、Glusterストレージに対するすべての操作にクライアントの認証情報を使用していました。非rootユーザーが読み取り専用のファイルを操作した場合に、「permission denied」というエラーが発生することがありました。ルート権限が必要に応じて使用されるようになり、非rootユーザーが 0444 モードを使用してファイルを作成および書き込むことができるようになりました。

レプリケーションの修正

BZ#1688395
書き込みトランザクション中にeager-lockのロック取得が失敗すると、前のロックが保持され、後続の書き込みがすべてブロックされ、ハングアップすることがありました。この状況が正しく処理されるようになり、関連する問題の診断に役立つ、より具体的なログメッセージが追加されました。
BZ#1642425
Gluster NFSボリュームのボリューム設定ファイルでcluster.quorum-countボリュームオプションが更新されないという問題がありました。これは、読み取ったファイルの最後の部分がバッファサイズよりも小さい場合、バッファから書き込まれるデータが新しいデータと古いデータの組み合わせになったためです。この問題は修正され、Gluster NFSクライアントは、cluster.quorum-typefixedに設定されている場合、cluster.quorum-countを尊重するようになりました。

Shardingの修正

BZ#1568758
多数のシャードを持つファイルを削除するときに、タイムアウトしていました。すべてのシャードで並行してアンリンク操作が行われ、.shardディレクトリで競合が発生したためです。タイムアウトにより削除が失敗し、.shardディレクトリに古いシャードが残るという問題がありました。.shardディレクトリの競合を抑制し、タイムアウトを防ぐために、シャードの削除は、一度に1バッチのシャードを削除するバックグラウンドプロセスになりました。シャードの削除バッチのサイズは、features.shard-deletion-rateオプションで制御されますが、デフォルトでは100に設定されています。

Web Administrationに関する修正

BZ#1645428
以前に出荷されたバージョンのpython2-pyasn1パッケージを使用すると、IPAクライアントのインストールに失敗するという問題がありました。python2-pyasn1の代わりにpysnmpが使用されるように、このパッケージはtendrl-notifiertendrl-commonsのアップデートで置き換えられ、インストールは期待通りに動作します。
Red Hat Gluster Storage Web Administration 3.5 にアップグレードする前に、以下のコマンドを実行してpython2-pyasn1pysnmpパッケージ(依存関係は除く)を削除してください。
# rpm -e --nodeps $(rpm -qa 'python2-pyasn1')
# rpm -e --nodeps $(rpm -qa 'pysnmp')
BZ#1647322
以前は、tendrlは/var/lib/carbon/whisper/tendrlディレクトリにオーナーを設定しませんでした。このディレクトリの所有者がcarbonユーザーでない場合、carbon-cacheはこの場所にwhisperファイルを作成できませんでした。whisperファイルを確実に作成できるように、Tendrlはディレクトリの所有者をcarbonユーザーにするようになりました。
BZ#1688630
これまでは、tendrl-monitoring-integrationが実行されていないために発生したエラーは、一般的なエラーメッセージで報告されていました。この状況で、tendrl-monitoring-integrationのステータスに関するより具体的なエラーメッセージが記録されるようになりました。
BZ#1645221
これまでは、Red Hat Gluster Storage Web Administrationでは、Web Administrationによるノードの管理を停止する前に、すべてのノードがオンラインになっている必要がありました。クラスタ内の1つまたは複数のノードがオンラインでない場合でも、ノードを管理対象から外すことができるようになりました。
BZ#1666386
Red Hat Gluster Storage Web Administrationでは、正常に動作しているヒールプロセスの一部であっても、スプリットブレイン関連のイベントをすべて受信し、ユーザーインターフェースにエラーとして表示していました。イベントがクライアントの識別子に基づいてフィルタリングされるようになり、ユーザーインターフェースから不要なエラーや誤ったエラーを取り除くことができるようになりました。
BZ#1687333
これまでは、クラスター内のすべてのノードがオフラインになったときに、Web Administrationインターフェイスでオフラインのノード数が正しく報告されませんでした。ノードの状態が正しく追跡され、報告されるようになりました。
BZ#1686888
node-agentサービスは、インポートと削除(管理停止)の操作を行います。node-agentサービスが実行されていない場合、これらの操作は一般的なログメッセージと共にタイムアウトしました。この問題が発生した場合、より明確に記録されるようになりました。
BZ#1702412
これまでは、Ansible 2.8との互換性が正しく機能しませんでした。Red Hat Storage Web Administration が Ansible 2.8 と互換性を持つようになりました。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.