rsync: [generator] recv_generator: failed to stat “/mnt/nas10tb/Signage/20210518/20210518-15.jpg”: Bad message (74)何の意味?

このエラーは、rsyncが特定のファイルの状態を確認(stat)しようとした際、OSレベルで「ファイルデータが壊れている」と判断されたことを意味します。

具体的には、Linuxのシステムエラー番号 74 (EBADMSG: Bad message) が発生しています。

主な原因

このエラーは単なるrsyncの不具合ではなく、ストレージや通信の根本的な問題である可能性が高いです。 

  • ファイルシステムの破損: NAS(/mnt/nas10tb)上の該当ファイルが物理的または論理的に破損しており、OSが読み取れない状態。
  • ハードウェアの故障: HDD/SSDの物理的な不良セクタや、NASのメモリ(RAM)エラー。
  • 通信経路の異常: NASとの接続に使用しているプロトコル(NFSやSMBなど)が不安定で、データ整合性が崩れている。

推奨される対処法

  1. ファイルの生存確認:
    該当ファイル(20210518-15.jpg)を ls -l や cat 等で手動で読み取れるか確認してください。同様にエラーが出る場合はファイル自体が壊れています。
  2. ファイルシステムのチェック:
    NAS側で管理画面やSSHを利用し、fsck などのコマンドでファイルシステムの修復を試みてください。
  3. NASのログ確認:
    NAS側のシステムログ(dmesgなど)に、I/Oエラーやディスクの異常(S.M.A.R.T.エラー)が記録されていないか確認してください。
  4. 再マウント:
    一時的な通信エラーであれば、NASをアンマウントして再度マウントし直すことで解消する場合があります。

まずは、該当するファイルを手動で別の場所にコピーできるか試してみるのが一番の切り分けになります。

    コピーできませんし、sudo rmで削除しようとしてもrm: cannot remove ‘/mnt/nas10tb/Signage/20210518/20210518-15.jpg’: Bad messageで拒否されます。

    sudo rm

     でも削除できない状態は、OSがファイルシステム上のデータ構造(メタデータ)を正しく解釈できていない深刻な不整合を示しています。

    「Bad message」エラーが出ている場合、通常のファイル操作コマンド(rmcpmv)は受け付けられません。以下の順序で対処を検討してください。

    1. NASの「修復機能」を実行する(最優先)

    マウントしているPC側から操作するのではなく、NAS自体のOS(管理画面)からチェックを行うのが最も安全です。

    • 管理画面から: QNAPやSynology、バッファロー等のNASであれば、ブラウザの管理画面にある「ストレージマネージャー」等から「ファイルシステムのチェック」や「ボリュームの修復」を実行してください。
    • RAIDの整合性チェック: RAID構成を組んでいる場合は、データスクラビング(整合性確認)を実行することで修復される可能性があります。

    2. ファイルシステムチェック(fsck)の実行

    Linuxサーバー等にHDDを直接接続、またはNASにSSHで入れる場合は fsck コマンドを使用します。

    注意fsck は必ず対象のパーティションを アンマウント(umount) した状態で実行してください。マウントしたまま行うとデータが完全に破壊される恐れがあります。

    bash

    # アンマウント(例: /dev/sdb1 が対象の場合)
    sudo umount /mnt/nas10tb
    
    # チェックと修復の実行
    sudo fsck -y /dev/sdb1
    

    ※ -y オプションはすべての修復提案に自動で “yes” と答える設定です。 1.4.6 

    3. ディレクトリごと削除を試みる

    ファイル単位で「Bad message」が出る場合でも、その親ディレクトリごと削除(rm -rf)することで、ディレクトリのエントリごと消去できる場合があります。

    • リスク: そのフォルダ内の正常なファイルもすべて消えます。必要なデータは先に別の場所へ退避させてください。
    • 方法sudo rm -rf /mnt/nas10tb/Signage/20210518/ 

    4. ハードウェア故障(不良セクタ)の疑い

    修復を試みてもエラーが消えない、あるいは fsck が途中で止まる場合は、HDDの物理的な不良セクタ(メディア故障)が原因です。 1.4.3

    • この場合、無理に書き込み(削除)を続けようとすると他のデータまで破損する恐れがあります。
    • NASのログで「I/O Error」や「SMART Error」が出ていないか確認し、異常があればHDDの交換を検討してください。

    このNASは、メーカー製品(QNAP/Synology等)でしょうか、それとも自作のLinuxサーバーでしょうか?機種や構成がわかれば、より具体的な修復手順を提示できます。

    自作のUbuntuサーバーです。

    自作のUbuntuサーバーで 

    Bad message により削除すらできない場合、ファイルシステムのメタデータが壊れており、カーネルがそのファイルへの操作を拒否しています。 

    以下の手順で、ファイルシステムの強制修復を試みてください。

    手順1:ファイルシステムの種類とデバイス名の確認

    修復には正確なデバイス名(/dev/sdb1 など)が必要です。以下のコマンドで確認してください。

    bash

    df -Th | grep /mnt/nas10tb
    
    • ここで表示される「Filesystem」列(例: /dev/sdc1)と「Type」列(例: ext4xfs)をメモしてください。

    手順2:アンマウント

    修復作業(fsck)は、対象のディスクをマウントしたまま行ってはいけません。 

    bash

    sudo umount /mnt/nas10tb
    

    コードは注意してご使用ください。

    ※ 「target is busy」と出る場合は、sudo fuser -mk /mnt/nas10tb でアクセス中のプロセスを強制終了させてから再度試してください。

    手順3:強制修復(fsck)の実行

    ファイルシステムの種類に合わせて以下のコマンドを実行します。

    • ext4 の場合:bashsudo fsck.ext4 -fy /dev/対象デバイス名 コードは注意してご使用ください。-f は強制チェック、-y はすべての修復に自動で「はい」と答えるオプションです。
    • XFS の場合:bashsudo xfs_repair /dev/対象デバイス名 コードは注意してご使用ください。 

    手順4:再マウントと確認

    修復が終わったら、再度マウントしてファイルが消えているか(または削除できるか)確認します。

    bash

    sudo mount -a
    ls /mnt/nas10tb/Signage/20210518/
    

    コードは注意してご使用ください。

    それでも解決しない場合

    もし fsck で「Input/output error」が出る、あるいは修復後も再発する場合は、HDDの物理故障(不良セクタ)が確定です。

    • dmesgの確認sudo dmesg | grep -i error で、ディスク関連のハードウェアエラーが出ていないかチェックしてください。
    • 物理故障の疑い: 故障している場合は、該当ドライブのデータを可能な限り救出した後、速やかにHDDを交換することをお勧めします。 

    現在、ファイルシステムの種類(ext4 や zfs など)は何を使用されていますか?

    対象のnas10tbはRAID5のアレイです。ext4を使用しています。

    自作のUbuntuサーバーかつRAID5(ext4)の環境で 

    Bad message が出ている場合、「RAIDアレイ内の特定のディスクで読み取りエラーが発生し、それがファイルシステムの破損(メタデータの矛盾)として現れている」 可能性が非常に高いです。

    通常の rm では消せないため、以下の手順で RAIDの整合性チェック と ファイルシステムの修復 を組み合わせて対処してください。

    手順1:RAIDの状態を確認する

    まず、RAIDアレイ自体が正常(Active)か、どこかのディスクが脱落(Degraded)していないか確認します。

    bash

    cat /proc/mdstat
    
    • [UUU] のようにすべて U であれば正常です。[_UU] のように _ がある場合はディスクが故障しています。 1.5.3

    手順2:RAIDの整合性チェック(check)を実行 

    RAID5のパリティを利用して、不整合を修復させます。これにより、ファイルシステムレベルの修復(fsck)が通りやすくなることがあります。 1.5.4 

    bash

    # md0 はご自身の環境に合わせて読み替えてください
    echo check | sudo tee /sys/block/md0/md/sync_action
    
    • /proc/mdstat を見ると進捗が確認できます。10TBだと数時間〜一日以上かかる場合があります。 

    手順3:アンマウントして fsck を実行

    RAIDのチェックが終わるか、あるいは待てない場合は、対象のアレイをアンマウントして ファイルシステムの強制修復 を行います。 

    bash

    # 1. アンマウント
    sudo umount /mnt/nas10tb
    
    # 2. 強制修復(-f: 強制, -y: 全てyesで修復)
    sudo fsck.ext4 -fy /dev/md0
    
    • Bad message の原因となっている不正なiノードやディレクトリエントリがここで修正・削除されます。 1.3.1

    手順4:ディスクの物理故障を確認(重要)

    Bad message は物理故障の前兆であることが多いです。特定のディスクに異常がないか、S.M.A.R.T.情報を確認してください。 1.2.8

    bash

    # 各物理ディスク(/dev/sda, sdb...)に対して実行
    sudo smartctl -a /dev/sda | grep -i error
    
    • Reallocated_Sector_Ct や Current_Pending_Sector の値が 0 以外であれば、そのディスクの寿命です。

    アドバイス:
    RAID5は1台の故障には耐えられますが、修復中(リビルド中)に2台目が壊れると全データが消失します。10TBの大容量HDDではリビルド負荷で連鎖故障が起きやすいため、もし fsck で直っても、早めに重要なデータのバックアップを別の媒体に取ることを強くお勧めします。 1.3.7 

    まずは cat /proc/mdstat の結果に _(異常)が含まれていないか教えていただけますか

    全てUです。S.M.A.R.T.情報にも問題はありませんでした。いまfsckをかけています。

    RAIDアレイ(

    mdstat)も物理ディスク(S.M.A.R.T.)も正常であるとのこと、ひとまず「物理的な崩壊」の可能性が低そうで安心しました

    となると、今回の原因はハードウェア故障ではなく、「OSのクラッシュ」「停電」「不適切なアンマウント」などによって、ext4のメタデータ(管理情報)に論理的な矛盾が生じたものと考えられます。

    fsck実行中の注意点と次のステップ

    1. 「lost+found」ディレクトリの確認
      fsck -fy が完了して再マウントした後、/mnt/nas10tb/lost+found/ を覗いてみてください。
      ファイル名が特定できなくなったデータが #12345 のような番号で復元されている場合があります。今回エラーが出ていた 20210518-15.jpg も、実体が生きていればここに放り込まれている可能性があります。 参考: Cyberciti – lost+found folder
    2. rsyncの再開
      修復が終われば、再び rsync が通るようになるはずです。
      もし rsync がまた止まるようなら、別のディレクトリにも同様の破損が潜んでいるサインですので、再度 fsck が必要になるかもしれません。
    3. dmesg のモニタリング
      もし fsck 中に大量の「Pass 1: Checking inodes, blocks, and sizes」的な修正が走っているなら、完了後に念のため以下を実行して、カーネルがまだ何か文句を言っていないか確認してください。bashdmesg | tail -n 50 コードは注意してご使用ください。

    10TBという大容量だと fsck の完了まで時間がかかるかもしれませんが、途中で中断(Ctrl+C)しないようにだけご注意ください。

    無事に 20210518-15.jpg(あるいはその残骸)が消去または修復されることを祈っています。修復完了後、正常にアクセスできるようになったか教えてくださいね。

    fsckで修復されたようです。念のためcpして内容の確認もしておきます。

    無事に 

    fsck で修復できたようで何よりです!
    物理故障(S.M.A.R.T.エラー)がなく、アレイも正常(All U)だったことから、純粋なファイルシステムの論理矛盾だった可能性が高いですね。

    cp での確認は非常に賢明な判断です。以下の点もあわせてチェックしておくと安心です。

    1. ファイルの整合性:
      コピーできたとしても、画像ファイル(.jpg)の場合、下半分がグレーになっていたりノイズが乗っていたりすることがあります。一度ビューアーで開いて画像が壊れていないか確認することをおすすめします。
    2. rsync の再走:
      原因となったファイル以外にも、インデックス(inode)が狂っていた箇所があるかもしれません。一度 rsync --dry-run を実行して、他に同様のエラーが出ないかサッと流してみるのが確実です。
    3. lost+found の掃除:
      もし fsck で「ファイル名が特定できないデータ」が救出されていた場合、マウントポイント直下の lost+found フォルダに溜まっています。不要であれば容量を食うだけなので、確認後に削除してOKです。

    今回のトラブルが一時的なソフトエラー(書き込み中の瞬断など)であれば良いのですが、もし今後も頻発するようなら、SATAケーブルの接触不良メモリ(RAM)の相性・故障も疑ってみてください。

    このまま rsync は無事に完走しそうですか?

    やってみます。ありがとうございました。

    承知いたしました。無事に解決することを祈っています!

    もし rsync 中に再び似たようなエラー(Bad message や Input/output error)が出る場合は、ファイルシステムではなく、RAIDコントローラやケーブル、あるいはメモリ(RAM)など、別のレイヤーのトラブルも疑う必要が出てきます。

    しばらくは dmesg -w などでシステムログを監視しながら作業を進めてみてください。

    また何かお困りのことがあれば、いつでもご相談ください。
    rsync が無事に完走することを願っています!