2017-11-02 9 views
1

RHEL6.5 ext4からRHEL7.3 XFSにアプリケーションをアップグレードしています。私たちは、コールドリブートを実行するXFSファイルシステム(システムコンソールから - iLO)で、数秒ごとにディスクに書き込まれるファイルの一部をゼロバイトに切り詰めることを確認しました。アプリケーションだけでなく、あるコマンドの出力をコールドリブート後に消えるファイルを ">"にリダイレクトするとしましょう。私たちは、fysncをやっている明白性に関する勧告を知っています。しかし、Javaのコードは何ですか?私たちのpythonスクリプトのケースはどうですか?XFS RHEL7.3コールドリブート、ファイルの切り捨て

これで、ext4またはXFSを使用するかどうかを判断するジレンマがあります。 XFSには利点があり、我々の最初の好みであろう。そして、世界の残りの国がこれを認識していないとは信じられません。これはRHEL固有のものです(RHLE6.5 https://bugzilla.redhat.com/show_bug.cgi?id=845233で修正された同様の問題があります)。これは現代のFileSystemsの予想される動作ですか?

答えて

1

JavaとPythonの両方が、I/Oライブラリのfsyncオペレーションへのアクセスを提供するため、これは言い訳ではありませんが、意味を理解しています。

ただし、この領域のキーext4/XFSの違いは、通常は別のものです。直

echo contents > file 

は時々書かれた内容は、わずか数バイト以上である場合は特に、もext4のゼロ長ファイルを残すであろう。どのような(デフォルトの設定で)ext4の上で動作することが保証されてはこれです:ext4の-と、デフォルトでは

echo contents > file.new 
mv file.new file 

、これは部分的に書き込まれfile(のみfile.newが不完全であるかもしれない)を残すことはありません。この点でXFSは異なります。名前が変更される前に内容がfsyncになる必要があります。

2014年、Eric Sandeen proposed a patch to align the XFS behavior with what ext4 doesでは、その時点で受信されておらず、マージされませんでした。多分、潮流はそれ以来変わってきており、再配置されたパッチは今日受け入れられるだろう。 (現在のコードは一掃されませんが、私はXFSデベロッパーではありません)

これがXFSへの移行をブロックする場合は、必ずサポートチケットを提出してください。このために上流のカーネルから逸脱することは実際には選択肢ではありませんが、そのような顧客の要求は常に重要なフィードバックです。

+0

ありがとう、フロリアン。それをはっきりさせます。 ext4ではマウントオプションにnodelallocがあり、問題のある動作を再現することはできません。 fsyncを追加する上での私たちの問題は、私たちの巨大なコードベースです。私たちは数千時間を費やしてしまいますが、私たちのカバレッジが100%であるかどうかは分かりません。我々はすでに、赤い帽子のサポートを開いているケースを持っています。標準のレスポンスは、 "これはRed Hatの問題ではありません。これはXFSが提供するものです.fsyncを追加するか、ドロップしてください。" Ericのパッチのリンクは、もう少しプッシュするのに役立つかもしれません。私は深く懐疑的です。 – Avita

関連する問題