Red Hat Training

A Red Hat training course is available for Red Hat Gluster Storage

第3章 主なバグ修正

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

arbiter

BZ#1401969
以前は、並行 I/O の実行中にブリックが特定の順序でダウンした場合に、arbiter ブリックがデータの修復のソースになっていました。これにより、arbiter ブリックにメタデータのみを保存するため、データが利用できなくなります。今回の修正により、arbiter ブリックがソースとしてマークされなくなりました。
BZ#1446125
SMB を使用してエクスポートされた Red Hat Gluster Storage ボリュームは、Finder で macOS クライアントにマウントできるようになりました。

bitrot

BZ#1519740
以前のバージョンでは、BitRot バージョンの内部拡張属性が AFR に渡され、ファイルで誤ったメタデータの自己修復が実行されていました。今回の修正により、属性がビットロットで除外されるようになりました。これにより、これらのサンプルとログファイル内の適切なメッセージを防ぎます。
BZ#1517463
scrub-throttle または scrub-frequency を設定すると、成功したすべての BitRot 操作 (enable、disable、または scrub オプション) の出力がボリュームビット rot として表示されます。srub-frequency は、ボリューム VOLUME_NAME に対して適切に FREQUENCY に設定されます。

common-ha

BZ#1226874
以前のリリースでは、設定が失敗しても、NFS-Ganesha 起動スクリプトは ganesha プロセスをクリーンアップしませんでした。したがって、’gluster nfs-ganesha enable’ コマンドが失敗しても、ganesha プロセスはノードで引き続き実行されていました。今回の修正により、’gluster nfs-ganesha enable’ コマンドが失敗し、プロセスがクリーンアップされる際に ganesha プロセスがノードで停止されるようになりました。

コア

BZ#1324531
以前のバージョンでは、trash ディレクトリー機能が無効でも、ユーザーはボリューム上に trash ディレクトリーを作成できました。ユーザーには、マウントポイントから trash ディレクトリーを削除するパーミッションがありませんでした。今回の修正により、trush ディレクトリー機能が有効になっている場合にのみ、trush ディレクトリーを作成できるようになりました。また、これにより、ユーザーは機能が無効であってもこのディレクトリーを削除できます。
BZ#1446046
ssl-cert-depth オプションパラメーターを設定するには、/etc/glusterfs/glusterd.vol に設定する必要がありますが、パッチパラメーター transport.socket.ssl-cert-depth の適用後は /var/lib/glusterd/secure-access で設定する必要があります。このパラメーターは、管理 Secure Sockets Layer が有効な場合にのみ役立ちます。
BZ#1484446
一部の gluster デーモン (glustershd など) は、大量のデータ/エントリーを修復している間に高い CPU およびメモリーを消費します。これは、control-cpu-load.sh スクリプトを実行して解決できます。このスクリプトは、gluster デーモンによる CPU およびメモリー消費の調整を行うためにグループを制御します。
BZ#1559886
以前では、クライアントのダンプ中に inode のディクショナリーが client_table ロック下で冗長にアクセスされていました。この動作により、gluster ボリュームのステータス inode が brick を停止していました。今回の修正により、client_table ロックの下にある inode ディクショナリーが冗長に設定されなくなりました。

disperse

BZ#1561733
以前のバージョンでは、lookup-optimize を有効にすると、特別なリバランス要求によって返された不完全なデータが原因で、一部のファイルが分散ボリューム上で移行されませんでした。今回の修正により、必要なデータがすべて転送され、すべてのファイルが移行されるようになりました。
BZ#1499865
この機能は、Erasure Coded ボリュームでの破棄操作のサポートを実装します。この操作を使用すると、ファイル内のブロックの割り当てを解除することができます。指定の範囲内で、部分的なフラグメントはゼロ化され、フラグメント全体が割り当てられます。
BZ#1459101
以前は、FOP が同じファイルのオフセットに重複しない範囲を変更することで、書き込み FOP のパフォーマンスに影響がありました。この動作により、特にブリックが遅いと、各 FOP の応答時間が長くなります。並列書き込み機能の実装により、FOP のパフォーマンスが大幅に向上しました。
BZ#1509830
自己修復時にブリックで xattr 更新操作を実行するように分散トランスレーターが最適化され、パフォーマンスが向上します。
BZ#1530519
Red Hat Gluster Storage 3.4 では、通常のファイルで eager-lock を有効にした新たなオプション ’other-eager-lock’ が導入されましたが、ディレクトリーアクセスでは無効になっています。以前では、ファイルアクセスのパフォーマンスを加速するために eager-lock オプションが使用されていました。ただし、このオプションが有効な場合は、ディレクトリーアクセスに問題が発生していました。
BZ#1555261
問題が原因で、ブリックを置き換えるか、オンラインで失敗したブリックの取得に失敗した後、自己修復による修復プロセスでの遅延が発生します。今回の修正により、保留中のすべてのファイルが完全に修復されるまで、自己修復をアクティブにできるようになりました。
BZ#1611151
ロック競合の遅延により、2 つのクライアントが EC ボリュームの同じディレクトリーにアクセスすると、Ls や 名前変更のようなエントリー fops が遅くなっていました。そのため、ディレクトリーやその他のエントリー操作のリストが遅くなっていました。この問題は、このバージョンの RHGS では解決されています。

distribute

BZ#1550315
以前は、分散ボリュームでは、停止、起動コマンドの実行後、または新しいブリックの追加時にディレクトリーのカスタム拡張属性値が正しく指定されていました。DHT は拡張属性値の同期に失敗しました。本リリースでは、ディレクトリーのカスタム xattrs の更新時に参照される新しいボリュームが導入されました。
BZ#1463114
省略されたファイルが、MSGID: 109126 でリバランスログに記録されるようになりました。ユーザーは、メッセージ ID を使用して省略されたファイルのリストを検索できます。
BZ#1550771
gluster ボリュームのディレクトリーの名前を変更すると、ボリュームのすべてのブリックのディレクトリーの名前が変更されます。1 つ以上のブリックで名前を変更すると、ブリックに古い名前と新しい名前の両方を持つディレクトリーがブリックに表示されます。これにより、これらのディレクトリーのコンテンツの一部がマウントポイントからアクセスできなくなります。今回の修正により、ブリックで失敗した場合にディレクトリーの名前変更操作がロールバックされるようになりました。
BZ#1118770
以前は、名前が変更されていたディレクトリーのルックアップにより、ボリュームに以前の名前および新しい名前の両方のディレクトリーが存在する可能性がありました。これにより、マウントポイントからこれらのディレクトリーのコンテンツにアクセスできなくなる可能性がありました。これを防ぐために、追加の同期が導入されました。
BZ#1392905
リバランスプロセス中に、ハードリンクがスキップ済みとマークされるのではなく、失敗と報告されていました。今回の修正により、リバランス操作中にスキップされた一覧に追加される代わりに、ハードリンク移行の失敗が認識されるようになりました。
BZ#1557365
今回の更新で、lookup-optimize オプションがデフォルトで有効化されるようになりました。このオプションはルックアップと作成パフォーマンスを向上します。
BZ#1577051
以前のバージョンでは、remove-brick プロセスでは、ルックアップの失敗時に不具合が現れていませんでした。残りのファイルについて remove-brick commit を実行する前に、使用停止を確認することが推奨されます。今回の修正により、remove brick のステータスに失敗数が表示されるようになりました。

eventsapi

BZ#1466122
以前のバージョンでは、gluster-events デーモンは、webhook が https が有効な場合に、登録済みの Webhook にイベントを送信できませんでした。今回の修正により、gluster-events デーモンは https が有効な場合に Webhook を登録するようになりました。
BZ#1466129
以前のバージョンでは、Gluster は Webhook にプッシュされたイベントに HMAC 署名 (ハッシュベースのメッセージ認証コード) を追加しませんでした。今回の修正により、gluster-event デーモンは HMAC トークンを生成し、これを Webhook に送信する間にこれを承認ヘッダーに追加するようになりました。

fuse

BZ#1508999
subdir がマウントされたクライアントでは、add-brick の実行時にディレクトリー構造を修復できません。これは、自己修復の実行中にサブディレクトリーの親ディレクトリーがわからないためです。これを修正するには、add-brick の後にいずれかのサーバーにボリュームをマウントし、ディレクトリーで自己修復操作を実行します。ユーザーの介入が必要ないように 'hook' スクリプトを使用してこれらのタスクを実行することができます。
BZ#1501013
以前のバージョンでは、Gluster は Webhook にプッシュされたイベントに HMAC 署名 (ハッシュベースのメッセージ認証コード) を追加しませんでした。今回の修正により、gluster-event デーモンは HMAC トークンを生成し、これを Webhook に送信する間にこれを承認ヘッダーに追加するようになりました。

geo-replication

BZ#1568655
以前のバージョンでは、シンボリックリンク (symlinks) が権限のないユーザーによってマスターボリュームの現在のディレクトリーに作成された場合、geo レプリケーションのスレーブボリュームへの同期に失敗していました。symlink でパーミッションを設定する代わりに、仮想ディレクトリー .gfid への symlink を逆参照するために使用され、geo レプリケーションは Operation not supported エラーで失敗しません。今回の修正により、geo レプリケーションはファイルのパーミッションを設定する際にシンボリックリンクを逆参照せず、権限のないユーザーが作成したシンボリックリンクを現在のディレクトリーに同期するようになりました。
BZ#1288115
Red Hat Gluster Storage 3.4 では、以下のコマンドを使用して、gluster ボリュームで読み取り専用アクセスを付与するオプションが提供されます。
#gluster volume set VOLNAME features.read-only on
このオプションは、geo レプリケーション以外の他のクライアントでデータをスレーブボリュームに書き込む必要がある場合に、geo レプリケーションで有用です。
BZ#1468972
Red Gluster Gluster Storage 3.4 では、ログメッセージを改善するために、geo レプリケーションに構造化ロギングが導入されました。構造化ロギングを使用すると、ログメッセージを簡単に解析して必要な情報を取得できます。
BZ#1599037
以前のバージョンでは、geo レプリケーションが Faulty 状態から開始または復元されると、処理に必要な xsync changelogs が再生成されていました。stop または restart 操作の前に生成された同期されていない xsync の changelogs は処理されませんでした。これにより、inode および領域が使用されていました。今回のリリースにより、geo レプリケーションが再起動または Faulty 状態から回復するたびに同期されていない変更ログを処理しなくなり、領域と inode は消費されなくなりました。
BZ#1342785
以前は、シンボリックリンク (symlink) ファイルで所有権などのメタデータの変更により、Permission Denied エラーでクラッシュしていました。今回のリリースにより、geo レプリケーションがシンボリックリンクファイルのメタデータを同期するように修正され、symlink ファイルの所有権の変更がクラッシュせずに適切に複製されるようになりました。
BZ#1470967
geo レプリケーションは、GFID がプライマリーボリュームおよびセカンダリーボリュームで同じであることを想定します。ただし、geo レプリケーションは、すでに GFID を使用してファイルがすでに存在する場合にスレーブボリュームへのエントリーの同期に失敗しました。今回のリリースにより、GFID の不一致の失敗はマスターボリュームで確認して処理されるようになりました。
BZ#1498391
geo レプリケーションは changelog 機能を使用し、geo レプリケーションセッションの作成の一部として有効にします。ただし、changelog を無効にするコマンドは、既存の geo レプリケーションセッションについてユーザーに警告しませんでした。今回のリリースにより、changelog を無効にしている間に、geo レプリケーションセッションチェックが追加されました。したがって、changelog を無効にする際に、既存の geo レプリケーションセッションに関する警告が生成されます。
BZ#1503173
geo レプリケーションは、プライマリーとセカンダリーボリュームを内部でマウントしてデータを同期するため、マウントポイントをデバッグできませんでした。その結果、ユーザーはクライアントボリュームプロファイル情報の取得に失敗しました。今回の修正により、ユーザーが geo レプリケーションマウントポイントにアクセスするための 2 つの新しいオプションが導入されました。slave_access_mount (セカンダリーマウントポイント)、master_access_mount (プライマリーマウントポイント)。
BZ#1557297
以前は、geo レプリケーションは、権限のないユーザーが一時停止したり、再開したりすることができました。その結果、スナップショットの作成操作が失敗していました。今回のリリースにより、承認されていないユーザーによって地理レプリケーションセッションを一時停止または再開します。セッション作成者は制限され、Geo-replication session between USERNAME and SLAVE_HOSTNAME does not exist というエラーメッセージが表示されます。
BZ#1565399
以前のバージョンでは、シンボリックリンク (symlinks) が特権のないユーザーによってプライマリーボリュームの現在のディレクトリーを参照して作成された場合、geo レプリケーションのセカンダリーボリュームへの同期に失敗していました。symlink でパーミッションを設定する代わりに、仮想ディレクトリー .gfid を参照する symlink を逆参照し、エラーがオペレーションがサポートされないエラーで失敗していました。今回の修正により、geo レプリケーションはファイルのパーミッションを設定する際に symlinks を逆参照せず、権限のないユーザーが作成した symlink を現在のディレクトリーに同期するようになりました。
BZ#1601314
以前は、シンボリックリンク (symlink) を作成して名前を変更し、元のシンボリックリンクと同じ名前でディレクトリーを作成すると、同期においてファイルの順序が失われていました。これにより、名前を変更 (または symlink の名前変更) せずに、ディレクトリーが最初に同期されていました。これにより、geo レプリケーションが名前を変更したシンボリックリンクの同期に失敗することがありました。
今回のリリースにより、順不同のファイル名変更操作の処理中に、ファイル名がすでに存在する場合、ユーザーは GFID を使用してファイルの ID を確認し、それに応じて同期できるようになりました。

samba

BZ#1379444
以前のバージョンでは、smb.conf ファイルに shadow_copy2 vfs オブジェクトが指定されている場合に、gluster ボリュームのサブディレクトリーの共有が、I/O エラーで失敗していました。これは、gluster ボリュームがリモートファイルシステムであるため発生していました。また、shadow_copy2 がローカルファイルシステムの共有パスのみを検出していました。今回の更新で、shadow:mountpath の値を / に強制し、マウントポイントの検出に関連するコードをスキップし、問題の発生を防ぐようになりました。今回の修正で、glusterfs vfs オブジェクトが、smb.conf ファイルの shadow_copy2 vfs オブジェクトの後に一覧表示されるようになりました。

NFS-ganesha

BZ#1480138
NFS-Ganesha は、ロック要求ごとに異なるファイル記述子を内部で使用します。クライアントが特定のファイル記述子を持つファイルを削除すると、同じファイル記述子を持つ同じファイルにアクセスしようとしている他のクライアントは、No such file or directory エラーを受け取ります。今回のリリースにより、ロックリクエストは、オープン呼び出しから取得した同じファイル記述子を使用し、ロック処理パスでの追加のオープン呼び出しが必要なくなりました。
BZ#1514615
NFS のバージョンを 3 および 4.0 に制限するために、NFSv4 ブロックが ganesha.conf ファイルに手動で追加されました。今回のリリースにより、これらのオプションは ganesha.conf ファイルにデフォルトとして追加されるようになりました。
BZ#1481040
現在、upcall ポーリングのデフォルトの間隔は 10 マイクロ秒です。スレッドの数が多いと、CPU の使用率が高くなります。今回のリリースにより、デフォルトのポーリング間隔が 100 ミリ秒 (100000 マイクロ秒) に増えました。これにより、CPU 使用率が減りました。
BZ#1545523
以前のバージョンでは、クライアントが create 呼び出しで SET_ATTR_MODE を要求すると、NFS サーバーは setattr 操作の事後作成の実行が必要でした。gluster NFS サーバーの場合、setattr 操作に使用される GFID は NULL であり、その結果 EINVAL エラーが生じました。今回のリリースにより、リンクされたノードから GFID を使用でき、SET_ATTR_MODE を使用した create 呼び出しを正常に実行できるようになりました。
BZ#1489378
今回のリリースにより、標準の readdir の代わりに強化された readdirp を有効にする USE_GLUSTER_XREADDIRPLUS オプションが導入されました。このオプションはデフォルトで有効になっています。このオプションをオフにすると、NFS は標準の readdir にフォールバックします。このオプションをオフにすると、クライアントからルックアップおよび stat 要求が送信され、パフォーマンスに影響する可能性があります。
BZ#1516699
Red Hat Gluster Storage 3.4 では、NFS-Ganesha ログファイルが /var/log/ganesha サブディレクトリーに移動しました。

glusterd

BZ#1449867
以前では、ノードの再起動時には、glusterd サービスの開始前にネットワークインターフェースが完全に機能しなくなると、glusterd が異なるピアのブリックアドレスを解決できず、glusterd サービスが開始できませんでした。今回のリリースにより、ネットワークインターフェースが完全に機能していなくても、glusterd の初期化に失敗しませんでした。
BZ#1599823
以前は、ボリューム作成操作時に、glusterd は、brick パスがすでに別のボリュームの一部であるかどうかを確認する際に、空の実際のパスを処理できませんでした。したがって、ボリュームの作成要求は失敗しました。今回のリリースで、パス比較ロジックが修正されました。今回のリリースより、glusterd は空のパスを処理し、ボリューム作成要求の失敗を回避できるようになりました。
BZ#1575539
Red Hat Gluster Storage 3.4 で、gluster ボリュームの geo レプリケーションステータス操作中に glusterd でメモリーリークが発生しました。
BZ#1369420
以前は、glusterd サービスを再起動すると、ポート 61000 の AVC 拒否メッセージが表示されていました。今回のリリースで、61000 未満の glusterd.vol に max-port を設定すると、AVC 拒否メッセージが表示されなくなります。
BZ#1529451
以前は、gluster volume status コマンドを複数回実行すると、glusterd プロセスによるメモリー消費量が過剰になっていました。今回のリリースで、この問題が修正されました。
BZ#1474745
Red Hat Gluster Storage 3.4 では、glusterd.vol に max-port の値を定義して、gluster ブックックが消費可能なポートの範囲を制御できます。

ロック

BZ#1507361
以前は、gluster volume clear-locks コマンドは取得したメモリーを完全に解放できませんでした。これにより、ブリックプロセスのメモリー使用率が徐々に増大していました。今回の修正により、clear-locks コマンドの実行時に関連するメモリーがリリースされるようになりました。
BZ#1510725
gluster volume clear-locks volname コマンドを使用してボリュームの古いロックを消去すると、ロックが破棄された後も、ロックへの参照の 1 つがメモリー内に留まります。クライアントから切断すると、無効なメモリーにアクセスし、クラッシュが発生します。今回のリリースにより、ロックへの最終参照が clear-locks コマンドの一部としてクリアされるため、操作によってメモリーアクセスが不合格になりました。
BZ#1495161
以前は、複数の POSIX ロックを使用するプロセス (gluster clear-locks コマンドとの組み合わせ) が原因で、ブリックプロセスでメモリーリークが発生していました。場合によっては、OOM killer エラーがトリガーされました。今回のリリースにより、トランスレーターに存在するリークに関連する問題が修正されました。

VDSM

BZ#1503070
VDSM パッケージがアップストリームバージョン 4.19 にアップグレードされ、以前のバージョンに対するバグ修正および機能拡張が数多く追加されました。今回の更新で、クラスターの互換バージョン 4.1 を持つ Red Hat Gluster Storage 3.4 ノードが Red Hat Virtualization によって管理されるようになりました。
BZ#1542859
VDSM からの応答に ’device’ フィールドが含まれていない場合、ovirt-engine はデータベースを更新しないため、ステータス情報が管理ポータルに表示されていました。今回の修正により、デバイスフィールドが VDSM 応答の一部であるようになり、brick ステータスが管理ポータルで正確に反映されるようになりました。

posix

BZ#1464350
POSIX トランスレーターが強化され、ユーザーはブリックでディスク領域を予約できるようになりました。ストレージの拡張やノード全体でデータのリバランスなど、一部の管理操作では、ディスク上に十分な作業領域が必要になります。storage.reserve オプションを使用すると、バックエンドブリックが満杯になる場合に、ユーザーがディスクまたはクラスターを拡張することができ、マウントポイントでの ENOSPC エラーを回避できます。
BZ#1620765
以前は、linkto ファイルに設定されている xattr の値が正しくないため、linkto ファイルの名前を変更できませんでした。これは、glusterfind が使用されているボリュームで確認されました。その結果、ボリュームで lookup-optimize オプションが有効になっていると、ファイルにアクセスできませんでした。今回の修正により、linkto ファイルに設定された xattr の値が変更を続行することができるようになりました。

protocol

BZ#1319271
以前は、auth.allow または auth.reject オプションは、FQDN が指定されている場合にホスト名を値として受け入れませんでした。今回の修正により、これらのオプションは FQDN で指定された場合にホスト名を受け入れるようになりました。

quota

BZ#1414456
以前のバージョンでは、symlink リンクファイルに複数のハードリンクがある場合には、追加のパスが正しく設定されていませんでした。これにより、エントリーヒールが保留されていました。今回の修正により、複数のハードリンクを含むシンボリックリンクファイルのシナリオを処理することで、上位が生成されます。
BZ#1475779
以前では、ディレクトリーのクォータが add-brick の前にハード制限を超過している場合に、ディレクトリーは、add-brick 操作に修復したポストを与えられませんでした。その結果、新たに追加したブリックでは、ディレクトリー構造が不完全のままになっていました。今回の修正により、ディレクトリーは、生成されるクォータ制限に関係なく機能するようになりました。
BZ#1557551, BZ#1581231
以前のバージョンでは、クォータがボリュームで有効になっていた間、クォータ使用値はクライアントのマウントポイントからルックアップが実行されるまで list コマンドに更新されませんでした。このため、クロール操作を実施した後も、ファイルサイズの報告が正しくありませんでした。今回の修正により、クロール操作がすべてのファイルを検索し、使用される正確なクォータを報告するようになりました。
BZ#1511766
以前のバージョンでは、quota.conf ファイルの読み書き方法の制限により、ボリュームに 7712 を超える制限を設定することができませんでした。今回の修正により、1 つのボリュームに 65000 を超える制限を設定できるようになりました。

readdir-ahead

BZ#1463592
parallel-readdir ボリュームオプションはトランスレーターの一部ではありませんでした。このため、’parallel-readdir’ が有効な場合に、クライアントログに以下の警告メッセージが表示されました。「option 'parallel-readdir' is not recognized」。今回の修正により、parallel-readdir が readdir-ahead translator のオプションとして追加され、警告メッセージがクライアントログに表示されなくなりました。
BZ#1559884
gluster ボリュームに以下の組み合わせがある場合、readdir 操作を実行した後、一部のファイルがマウントポイントに 2 回表示されていました。以下のボリュームオプションの組み合わせにより、「performance.stat-prefetch off performance.readdir-ahead on performance.parallel-readdir on」エラーが発生していました。今回の修正により、readdir がマウントポイントで発行されても、単一ファイルに重複したエントリーが表示されなくなります。

replicate

BZ#1286820
Red Hat Gluster Storage 3.4 では、summary コマンドが導入されました。このコマンドは、スプリットブレインで待機しているエントリーの統計と、修復中のエントリーを表示します。
BZ#1413959
今回のリリースで、GFID スプリットブレインは、どのポリシー (brick、mtime、または size) を使用して CLI から解決できるようになりました。GFID 修復が必要なファイルの絶対パスを指定する必要があります。
BZ#1452915
以前は、heal disable コマンドを使用して修復デーモンを無効にした場合は、gluster volume heal volname コマンドを使用して修復を手動でトリガーする必要がありました。heal コマンドは、正しくないエラーメッセージや誤解を招くエラーメッセージが表示されていました。今回の修正により、無効なデーモンで手動修復をトリガーしようとすると、ユーザーに対し、修復をトリガーするためにはこのデーモンを有効にするように指示するエラーメッセージが表示されました。
BZ#1489876
レプリカ 2 ボリュームはスプリットブレインが発生する可能性があるため、Red Hat Gluster Storage 3.4 の今後のリリースで非推奨になります。したがって、レプリカ 2 ボリュームの作成時には、Abiter またはレプリカ 3 の設定を使用することを推奨する適切な警告メッセージが表示されます。
BZ#1501023
以前は、AFR が choose-local オプションの再設定を処理しないため、choose-local オプションの再設定に使用した volume-set コマンドが想定どおりに機能していませんでした。今回の修正により、AFR ハンドルが選択ローカルオプションを再設定するように適切な変更が加えられました。
BZ#1593865
glusterd は、後者のグラフが完全に初期化される前に、ホストに関連するリクエストを自己修復デーモンに送信できます。この場合、特定のデータ構造にアクセスしようとする際にクラッシュするために使用される自己修復デーモン。この修正により、自己修復デーモンがグラフを初期化する前に要求を受信すると、リクエストを無視します。
BZ#1361209
以前は、heal disable コマンドを使用して修復デーモンを無効にした場合は、gluster volume heal volname コマンドを使用して修復を手動でトリガーする必要がありました。heal コマンドは、正しくないエラーメッセージや誤解を招くエラーメッセージが表示されていました。今回の修正により、無効なデーモンで手動修復をトリガーしようとすると、ユーザーに対し、修復をトリガーするためにはこのデーモンを有効にするように指示するエラーメッセージが表示されました。
BZ#1470566
ユーザーは、クライアントで I/O が発生していない場合に、’gluster volume add-brick’ コマンドを実行することで、プレーンな分散ボリュームを分散複製ボリュームに変換できるようになりました。
BZ#1552414
レプリカ 3 ボリュームでは、複数のクライアントが、重複のないリージョンで同じファイルにデータを同時に書き込むと、スプリットブレインで終了する可能性がありました。新しい cluster.full-lock オプションを使用すると、ファイルロックを完全にできます。これにより、データの一貫性を維持し、スプリットブレインで終了しないようにすることができます。デフォルトでは、cluster.full-lock オプションは完全なファイルロックを取得するように設定され、必要に応じて範囲ロックを取得するように再設定できます。
BZ#1566336
以前は、レプリカ 3 ボリュームのブリックでファイル作成に成功すると、保留中の changelog がそのファイルの新しいエントリーマークの一部として設定されていました。エントリートランザクションがブリックのクォーラム数で失敗したため、親ファイルにはエントリー保留中の changelog が設定されていません。その結果、エントリートランザクションは修復情報の出力に一覧表示されますが、SHD クロールやインデックス修正では回復されません。今回の修正により、ブリックのクォーラム数でエントリートランザクションが失敗すると、トランザクションが成功したブリックの親ファイルにダーティーマークが設定されます。このアクションにより、次の SHD クローまたはインデックス修復の一部としてエントリーを修復できます。
BZ#1397798, BZ#1479335
glustershd などの一部の gluster デーモンは、修復するデータやエントリーが多くなると、CPU またはメモリーの消費量が高くなります。これにより、リソースの消費が遅くなっていました。今回の修正により、ユーザーは control-cpu-load.sh スクリプトを実行してリソースの低速な消費を解決できるようになりました。このスクリプトは、gluster デーモンの CPU およびメモリー消費を調整するコントロールグループを使用します。

rpc

BZ#1408354
この機能は、ソケットごとに TCP のキープアライブ機能タイミングを制御します。ユーザーがデプロイしたアプリケーションには、システムコールのレイテンシーに関する前提条件がありました。gluster をファイルシステムとして使用すると、既存のシステム呼び出しレイテンシーにさらにネットワークレイテンシーが加わります。これらの gluster オプションをユーザーが使えることで、TCP ソケットが切断として想定される許容範囲のネットワークレイテンシーを超えてアプリケーションを微調整するのに役立ちます。これらのオプションに割り当てられるデフォルト値は、そのようなオプションが明示的に設定されていない場合に、システムのデフォルトの値にすべての TCP ソケットを設定します。ユーザーが利用できる gluster ボリュームオプションは、以下のとおりです。
  • server.tcp-user-timeout
  • client.tcp-user-timeout
  • transport.socket.keepalive-interval
  • transport.socket.keepalive-count
  • server.tcp-user-timeout
これらのオプションは、TCP(7) man ページで説明されている同様のオプションと 1:1 の互換性があります。この機能により、より優れたユーザーエクスペリエンスが得られるようにアプリケーションの動作を微調整するメカニズムが提供されます。

snapshot

1464150
GlusterFS は、デフォルトで /run/gluster/snaps の下に非アクティブなスナップショットをマウントするために使用されます。スナップショットのステータスコマンドは、非アクティブなスナップショットの関連情報を表示します。マウントが存在するため、スナップショットの削除中にボリュームのマウントを解除している間に、一部のプロセスがマウントに問題を引き起こす可能性があります。この機能により、GlusterFS が、非アクティブなスナップショットをマウントせず、スナップショットのステータスコマンド用の Volume Group フィールドに N/A(Deactivated Snapshot) のテキストが表示されません。

vulnerability

BZ#1601298
glusterfs サーバーが、trusted.io-stats-dump トランスレーターが使用する debug/io-stats 拡張属性のファイルパスを適切にサニタイズしないことが確認されました。攻撃者はこの脆弱性を使用してファイルを作成し、任意のコードを実行できます。これを悪用するにあたり、攻撃者は gluster ボリューム上のファイルの拡張属性を変更するのに十分なアクセスが必要です。
BZ#1601642
glusterfs サーバーは、server-rpc-fopc.c の関数により、alloca(3) を使用して固定サイズバッファーを割り当てることで、複数のスタックベースのバッファーオーバーフローに対して脆弱であることが発見されました。認証された攻撃者は、gluster ボリュームをマウントし、固定バッファーサイズで文字列を送信してクラッシュやコード実行を発生する可能性があります。
BZ#1610659
mknod(2) から派生した mknod 呼び出しにより、glusterfs サーバーノード上のデバイスを参照するファイルを作成できることが確認されました。認証された攻撃者は、これを使用して任意のデバイスを作成し、glusterfs サーバーノードに接続されているデバイスからデータを読み取ることができます。
BZ#1612658
glusterfs サーバーで gfs3_lookup_req を使用する RPC リクエストで不具合が発見されました。認証された攻撃者は、この脆弱性を使用して情報を漏えいし、gluster brick プロセスをクラッシュさせてリモートサービス拒否を実行する可能性があります。
BZ#1612659
glusterfs サーバーの gfs3_symlink_req を使用した RPC リクエストで不具合が発見されました。これにより、シンボリックリンク (symlink) の宛先が、gluster ボリューム外部のファイルパスを参照できるようになります。認証された攻撃者はこの脆弱性を利用してサーバー上のどこにでもポイントする任意のシンボリックリンクを作成し、glusterfs サーバーノードで任意のコードを実行する可能性があります。
BZ#1612660
glusterfs サーバーで gfs2_create_req を使用する RPC リクエストで不具合が発見されました。認証された攻撃者はこの脆弱性を利用して任意のファイルを作成し、glusterfs サーバーノードで任意のコードを実行する可能性があります。
BZ#1612664
glusterfs サーバーの gfs3_rename_req を使用した RPC リクエストで不具合が発見されました。認証された攻撃者は、この脆弱性を使用して、gluster ボリューム外部の宛先に書き込む可能性があります。
BZ#1613143
glusterfs サーバー処理でサポートされる gfs3_mknod_req を使用した RPC リクエストで不具合が発見されました。認証された攻撃者は、この脆弱性を使用してパストラバーサルを介して任意の場所にファイルを書き込み、glusterfs サーバーノードで任意のコードを実行する可能性があります。
BZ#1601657
glusterfs の dict.c:dict_unserialize 関数が鍵の長さの負の値を処理しない不具合が見つかりました。攻撃者はこの脆弱性を利用して、他の場所から、保存された dict 値へのメモリーを読み取ることができます。
BZ#1607617
攻撃者は、glusterfs FUSE による xattr リクエストを発行して、gluster brick プロセスをクラッシュさせ、リモートのサービス拒否を発生させる可能性があることが判明しました。gluster の多重化を有効にすると、複数のブリックボリュームと gluster ボリュームがクラッシュします。
BZ#1607618
glusterfs サーバーで情報公開の脆弱性が発見されました。攻撃者は、glusterfs FUSE による xattr リクエストを発行し、任意のファイルの存在を判断することが可能でした。

write-behind

BZ#1426042
performance.write-behind-trickling-writes および performance.nfs.write-behind-trickling-writes オプションにより、FUSE および NFS クライアントの write-behind トランスレーターの trickling-write ストラテジーが可能になります。

Web Administration

BZ#1590405
raterl-ansible はデフォルトで yum update を実行するため、関係するすべてのシステムが最新のパッケージで更新されます。したがって、OS とサービスの意図しないパッチが発生します。これは、実稼働システムには望ましくありません。
likelyrl-ansible による意図しないパッケージの更新を避けるには、Ansible Playbook から yum update 変数をドロップします。
BZ#1518525
以前のバージョンでは、Red Hat Gluster Storage Web Administration のインストール時に、サーバーに複数のアクティブな IP アドレスがある場合、teamrl-ansible は正しい IP アドレスを自動的に選択できず、インストールが失敗していました。このバージョンでは、インストール手順に従って、payrl-ansible に必要な変数をすべて設定する必要があります。
BZ#1563648
以前のバージョンでは、中央ストア (etcd) のオブジェクト詳細を維持する際の infra レベルで、各フィールドを個別に記述されることで、etcd に複数の REST API 呼び出しが発生していました。
オブジェクトを etcd に永続化するこの手法により、複数の REST API 呼び出しがトリガーされ、大量のネットワーク呼び出しが発生していました。また、これは、保存スレッドが依然としてデータを etcd に書き込む間、他のスレッドがオブジェクトの更新を試行する際に競合状態になるために使用されました。
パフォーマンスが改善され、競合状態から離れると、オブジェクト全体が単一の JSON にシリアライズされ、etcd に書き込まれます。etcd からオブジェクトの状態を読み取る間、この単一の JSON は読み取り、詳細を使用してオブジェクトを優先します。
その結果、etcd への各オブジェクトの読み取りおよび書き込み操作により、単一の REST API 呼び出しが可能になりました。また、システムのさまざまなフローで多くの問題を引き起こした重大な競合状態を回避します。
BZ#1512937
Grafana のホストレベルのダッシュボードには、ピアプローブの実行方法に関係なく、特定のストレージノードの FQDN および IP アドレスを持つ重複するホスト名が一覧表示されます。これにより、同じノードの重複データが時系列データと Grafana ダッシュボードに表示されていました。
今回の修正により、ホストレベルのダッシュボードおよびその他のダッシュボードは、Gluster クラスターの作成時にピアプローブに使用された 1 度のみホストの名前を表示するようになりました。
BZ#1514442
以前のバージョンでは、インポートクラスターが Web 管理インターフェースで失敗した場合、UI からインポートを再度開始する方法はありませんでした。ユーザーは、etcd の詳細をクリーンアップし、インポートを再度開始する必要がありました。その結果、同じクラスターのインポート試行が連続して失敗していました。
インポートクラスターの最新の変更と、クラスターとインポートの解除を行う市機能により、コンポーネントのインストールについてストレージノードで設定されたリポジトリーが無効なことで、クラスターに対してインポートクラスターが失敗しても、ユーザーはノードの問題を修正して、クラスターのインポートを再起動することができます。管理外のクラスター操作は、クラスターの管理を解除して再インポートできるため、このワークフローでも役立ちます。インポートジョブは、すべての必要なコンポーネントがすべてインストールされ、最初のラウンドの同期が完了した状態で実行されている場合にのみ正常に実行されます。いずれかのノードが同じ報告に失敗すると、クラスタージョブのインポートに失敗します。
今回の修正により、インポートが失敗すると、ユーザーは基礎となるノードで問題を修正し、クラスターの再インポートを実行できるようになりました。
BZ#1516417
以前のバージョンでは、Web 管理では、gluster 信頼済みストレージプールに追加された新規ストレージノードの検出または拡張を行えませんでした。そのため、Web 管理ではクラスターの初回のインポート後に新たに追加されるノードにメトリクスを提供することができませんでした。
今回の修正により、Web 管理は、gluster 信頼済みストレージプールに新規ノードが追加されると、既存の管理対象クラスターに新規ノードを検出し、拡張できるようになりました。
BZ#1549146
以前のバージョンでは、Grafana ダッシュボードは、パフォーマンスユニットがないさまざまなパフォーマンスパネルについて、現実的で現実的でない値を報告していました。現実的でない数字が表示されるパネルの一部は、週、IOPS、Throughput などでした。
今回の修正により、IOPS や Weeks Remaining パネルを含む Grafana パネルには、適切なパフォーマンスユニットとともにユーザーが理解できる実際の値が表示されるようになりました。さらに、Inode パネルは Grafana の brick-level およびボリュームレベルのダッシュボードから削除されました。
BZ#1516135
以前のバージョンでは、クラスターのいくつかのノードでは、laterl-gluster-integration のインストールの失敗が原因で部分的にインポートされたクラスターの管理を解除する方法はありませんでした。インポートに失敗したにもかかわらず、クラスターは、Web 管理によって正常にインポートされ、管理されているステータスを表示していました。
そのため、Web 管理インターフェースのクラスターの記述は、クラスターのすべてのピアが正常にインポートおよび報告されているわけではないため、正しくありませんでした。
今回の修正により、インポートジョブは、すべてのピアが実行中のピアが実行中の prorl-gluster-integration を報告し、データの同期の最初のラウンドが Web 管理環境で行われる場合にのみ、インポートジョブが終了とマークされるようになりました。管理対象でないクラスター機能を使用すると、影響を受けるクラスターは管理対象外になり、Web 管理環境でクラスターを再インポートする前に根本的な問題を修正できます。
インポートに失敗した場合には、基礎となるクラスターで問題を修正し、Web 管理環境で再インポートできます。
BZ#1519158
以前のバージョンでは、Web 管理インターフェースの Clusters ビューでは、Mozilla Firefox Web ブラウザーでクラスター属性をフィルターするフィルターボタンが応答しなくなっていました。この問題により、ユーザーは特定のクラスター属性に基づいてクラスタービューをフィルターできませんでした。
このブラウザーの問題は本リリースで修正され、Firefox でフィルターボタンが応答するようになりました。