[過去ログ] 初心者もOK! FreeBSD質問スレッド その124 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
850
(3): 2021/03/21(日)11:04 AAS
ZFS(と関係ないかもしれないけど)について不思議な現象が起きています。
tank というZPOOLに大量のデータ(数百万個,トータル数TB)が入っているとして意図しないデータの改竄や
破壊がないかバッチで以下のような処理をしてチェックしてます。
find /tank -type f | xargs md5 > log.txt

前回実行時とMD5が変わっているファイルがいくつか見つかり,確認のためコマンドラインでそのファイルを
md5 XXXXX.dat
とやるとMD5は前回と同じでした。再度バッチを実行してみたところ実行の度に結果が変わります。感覚としては
実行の度にMD5変更として誤検知されるファイルの数が増えます。しかし直接手動でmd5コマンドを打つとどの
ファイルもMD5変更無し。つまりxargs経由でmd5を実行すると百万個に数個の頻度でMD5が正しく得られません。
(OSのシステムエラーが出ないところが悩ましい)

このZPOOLは長らくFreeNAS-11で使っていました。最近Linuxにエクスポートしたところこの現象が発現したため
再度FreeBSDに戻しました。この時一度OpenZFSに読ませたため現在FreeBSD-13-RC3で使っています。Linuxほど
ではないですがFreeBSD-13でも時々発生しています。FreeNAS-11では一度も問題は起きていませんでした。
何かチェックすべきところはありますか?個人的にはOpenZFSが怪しい気がします。
851
(1): 2021/03/21(日)15:21 AAS
>>850

(find /tank -type f -print0 | sort -Vz | xargs -0 -n1 md5 )> log.txt

でやってみては?
852: 2021/03/21(日)22:26 AAS
>>850
コマンドに流せる文字数には制限があるからそういう制限無しファイルリストを渡すのは予期しない引数あふれを起こす可能性がある。
それと、ファイル名もディレクトリ名も引数で受け渡すときは空白などトラブルを起こす文字があるパターンがあるので
その辺も加味してコマンドを組まないと大体ハマる。

自分は似たようなことをしてハマった。
859: 2021/03/22(月)12:52 AAS
>>850 を書いた者です。ZFSを疑っていると書きましたが今はxargsが犯人の気がして
ます。GNUとBSDでxargsの仕様に違いがあることが分かりました。とは言えどっちを
使うにせよ安全に使えるものとばかり信じていたのでショック。
改めてLinuxとFreeBSDで試したら対象ファイル数が数千程度では問題ないけど
数百万個の場合はLinuxではほぼ100%,最低1箇所は誤検知が発生します。FreeBSDでは
今日は一度も発生しなかった。

私の関わっている仕事ではこれは致命的なんでバグとして直したいがどういう
タイミングで発生するのランダム性が強すぎて時間がかかりそうです。

>>850 >>851
レスありがとうございます。ファイル名にスペースがあってトラブルが出るのは
うちの会社でもよく起きますがその場合File Not Foundのようなエラーが出るので
少なくとも見落とすことはなく今まで大きな問題にはなってないです。今回のは
標準エラー出力を一切出さず見た目上は成功を返すのにしれっと間違った結果を出力
しているという性質の非常に悪い障害になってます。

>>853
{} + というのは知らなかったので詳しく調べてみます。xargsは,OSの定義する制限
ギリギリを狙うのではなく余裕をもたせるようなオプションがなければ信用できない
ので見限ってバッチプログラムを再設計中です。多少遅くなってもPythonとかで
確実なのを作る予定。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.154s*