外部HDDにファイル(cpとrsync)をコピーすると、ターゲットでI / Oエラーとデータ損失が発生します。

外部HDDにファイル(cpとrsync)をコピーすると、ターゲットでI / Oエラーとデータ損失が発生します。

USB3.0で新しく購入したNTFSでフォーマットされた4TB外付けSeagate拡張ポータブルハードドライブにデータ(230GB、160,000ファイル)をバックアップしようとしています。私はUbuntu 18.04.3 LTSを実行しています。

最初は端末で単純なcpコマンドを試してみましたが、コピーが数%進んだ後もコピーが途切れて遅くなり始めました。しばらくするとディスクが応答しなくなります。ディスクを再マウントしても効果はありません。ディスクを別のコンピュータに接続しようとしましたが、最初はマウントできず、数回試した後はマウントできましたが、読み書きが非常に遅かったです。

cpが失敗し始めると、dmesgで次のエラーが発生します(これらのメッセージは何度も繰り返されますが、数字は異なります)。

[67598.098118] sd 4:0:0:0: [sdb] tag#18 uas_zap_pending 0 uas-tag 19 inflight: CMD 
[67598.098122] sd 4:0:0:0: [sdb] tag#18 CDB: Write(16) 8a 00 00 00 00 01 1c 75 24 18 00 00 04 00 00 00
[67598.225621] usb 1-9: reset high-speed USB device number 5 using xhci_hcd
[67598.378202] scsi host4: uas_eh_device_reset_handler success
[67598.378466] sd 4:0:0:0: [sdb] tag#14 FAILED Result: hostbyte=DID_RESET driverbyte=DRIVER_OK
[67598.378468] sd 4:0:0:0: [sdb] tag#14 CDB: Write(16) 8a 00 00 00 00 01 1c 74 d0 18 00 00 04 00 00 00
[67598.378470] blk_update_request: I/O error, dev sdb, sector 4772384792 op 0x1:(WRITE) flags 0x104000 phys_seg 128 prio class 0
[67598.378473] buffer_io_error: 246 callbacks suppressed
[67598.378474] Buffer I/O error on dev sdb2, logical block 596515075, lost async page write
[67635.212662] scsi host4: uas_eh_device_reset_handler start
[67635.213657] sd 4:0:0:0: [sdb] tag#28 uas_zap_pending 0 uas-tag 10 inflight: CMD 
[67635.213658] sd 4:0:0:0: [sdb] tag#28 CDB: Write(16) 8a 00 00 00 00 01 1c 75 e8 18 00 00 04 00 00 00
[67635.340988] usb 1-9: reset high-speed USB device number 5 using xhci_hcd
[67635.490335] scsi host4: uas_eh_device_reset_handler success

1週間ディスクを放置した後、Seagate Bootable Toolを使用してSMARTスキャンを実行しましたが、問題は発生しませんでした。

だから私はもう一度データをコピーしてみました。これでディスクが正しくマウントされ、問題なく読み書きできるため、rsyncコマンドを起動しました。私が最初にやった

rsync -avh source dest

速度は遅いですが、データの20%程度しか転送されず、一気に始めて転送を中断しました。以下を使用して転送を再開します。

rsync -avhW source dest --inplace

より速くしてみてください。うまく動作し、最初の試みよりはるかに高速ですが、数分後にエラーが発生します。

rsync: recv_generator: failed to stat "..." : Input/output error (5)
rsync: write failed on "...": Input/output error (5)
rsync error: error in file IO (code 11) at receiver.c(393) [receiver=3.1.2]

dmesg には以下が表示されます。

[ 6772.890553] buffer_io_error: 1092735 callbacks suppressed
[ 6772.890556] Buffer I/O error on dev sdb2, logical block 874428, async page read

これが発生すると、ディスクは応答しなくなります。数分後に再インストールでき、最初のrsync試行中に正しくコピーされたファイルを含む、データをコピーしたフォルダが完全に空であることを確認できました。データがまだ破損していないことを確認するために、データ復旧を試みませんでした。ただファイルテーブルが破損しているようです。

失敗した場合、コピーされたファイルは.mat.gzタイプで、それぞれサイズは約1 MBです。

しかし、最近このコンピュータに少量のデータをコピーしている間、古いSeagate外付けハードドライブが死んでいました(悪名高いデスクリック...)それは私の最初のハードドライブが死んでいました。

データのコピー方法に問題がある場合(データをコピーするとディスクが破損しますか?)、ハードウェア(コンピュータ、HDD、USB-SATAコンバータなど)に問題がある場合、またはUbuntuに関連する場合。普通万子でしか実行していませんが、そのような問題は一度も体験できませんでした。

ベストアンサー1

助けてくれてありがとう。

これでこの問題を解決しました。ドライブをext4に再フォーマットした後、次のコマンドを使用しました。

rsync -avhW source dest --inplace --exclude=".*/"

どこ

-a is for archive, which preserves ownership, permissions etc.
-v is for verbose, to see what is happening
-h is for human-readable, so the transfer rate and file sizes are easier to read 
-W is for copying whole files only, without delta-xfer algorithm which should reduce CPU load
--inplace tells rsync to not create a temporary copy of the file to be transferred, which is then copied to the destination. This should speed up the process.
--exclude=".*/" is for excluding all hidden folders

392 GBの平均データ転送速度は81.3 MB / sで、これはドライブを再フォーマットする前よりもはるかに高速です。

今回はdmesgにエラーはありません。

工場で提供されている特定のNTFSパーティションに問題があるかどうか、またはNTFS自体が問題を引き起こしているかどうかを確認するために、ドライブに新しいNTFSパーティションを作成しようとしました。残念ながら、これは問題が何であるかについて完全な答えを持っていないことを意味します。また、タイムアウトしきい値を増やす試みはしませんでしたが、今回はより速いデータレートを考えると、タイムアウトしきい値を増やすことが解決策よりもせいぜい回避策だと言いたいと思います。

おすすめ記事