mvコマンドの奇妙な動作 - オープンシステムコールの問題ですか?

mvコマンドの奇妙な動作 - オープンシステムコールの問題ですか?

私は「open」システムコールに関連しているかもしれないし、そうでないかもしれない「mv」コマンドの非常に奇妙な動作を見つけました。私たちはRedHat v5を実行しています。 2つの別々の記憶装置があります。 1 つは "/diskTo" にマウントされ、もう 1 つは "/diskFrom" にマウントされます (この例では)。

通常の操作では、何千ものファイルでなくても、何百ものファイルを/ diskFromから/ disk Toに移動(移動)します。ほとんどのファイルはうまく移動します。ただし、1000個のファイルのうち1〜5個が失敗します。失敗は権限拒否エラーです。ファイルの宛先を確認すると、ファイル存在するしかし、inodeの内容はゴミです。たとえば、タイムスタンプはガベージ(「1969」ですが異なる)、権限は「0」です。

したがって、mvコマンドでstraceを実行し、失敗した出力をキャプチャする必要があると思います。これが私が見つけたものです:

munmap(0x2b0328770000, 4096)            = 0
geteuid()                               = 31169
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff90de9500) = -1 ENOTTY (Inappropriate ioctl for device)
stat("/diskTo/foo.dat", 0x7fff90de95d0) = -1 ENOENT (No such file or directory)
lstat("/diskFrom/bar.dat", {st_mode=S_IFREG|0444, st_size=234632119, ...}) = 0
lstat("/diskTo/foo.dat", 0x7fff90de9370) = -1 ENOENT (No such file or directory)
rename("/diskFrom/bar.dat", "/diskTo/foo.dat") = -1 EXDEV (Invalid cross-device link)
unlink("/diskTo/foo.dat") = -1 ENOENT (No such file or directory)
open("/diskFrom/bar.dat", O_RDONLY|O_NOFOLLOW) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=234632119, ...}) = 0
open("/diskTo/foo.dat", O_WRONLY|O_CREAT|O_EXCL, 0400) = -1 EEXIST (File exists)
write(2, "mv: ", 4)                     = 4
write(2, "cannot create regular file `/diskTo"..., 76) = 76
write(2, ": File exists", 13)           = 13
write(2, "\n", 1)                       = 1

ご覧のとおり、解く呼び出されると -1 を返します。これはファイルが存在しないことを示します。その後、「mv」が試みます。開いているファイルを送信し、EEXISTエラーが発生します。しかし、ファイルは存在できません!ここでは示していませんが、このテストケースを生成するスクリプトは固有の番号を使用してディレクトリを構築するため、ファイルが実際に存在する可能性はほとんどありません(不可能ではありません)。言及する必要はない、解くファイルが存在しないことを証明します。

どう解決するかという問題かもしれません開いているinodeコンテンツを作成していますか?今はどこを見るべきかわかりません。 「mv」をさらに調べるか、「open」システムコールを見てみましょうか?

ベストアンサー1

diskでファイル全体を実行すると、fsck(8)わずかなinodeが浮かんでいるように見えます(または動的に生成された可能性があります)。実行してbadblocks(8)ディスクに問題がないか確認します。手順については、ログ(またはその他のディスク診断)を確認してください。

すべてのソフトウェアが最新ですか?

これはどのファイルシステムですか?邪魔になる可能性がある他の活動はありますかdiskTo?ディスクはほとんどいっぱいですか(スペース、inode)?ログに別のレポートがありますか?

また、機械を徹底的に確認してください。メモリエラー可能同様の状況が発生すると、過熱につながる可能性があります。これは可能性が低い原因ですが、分解してファンを確認することは問題にならないのでうまく機能しており、中規模農場に内部に土が十分ではありません。機械がUPSまたは同様のデバイスに接続されていない場合、電圧変動によってランダムエラーが発生する可能性があります。

おすすめ記事