内部に外付けハードドライブを取り付けました。 NTFS形式ですが、ext4に移行したいと思います。そのため、アーカイブしたいすべてを別のドライブにコピーし、単一のext4パーティションにまったく新しいパーティションテーブル(GPT)を作成してから、すべてをコピーし直したいと思います。rsync -a --info=progress2
ほとんどのコピー操作に使用します。
私の問題は、100 GBを超えると奇妙なエラーが発生する傾向があるということです。
rsync: 'somepath'への書き込みに失敗しました:読み取り専用ファイルシステム(30) rsyncエラー:Receiver.c(389)[receiver = 3.1.0]のファイルIO(コード11)でエラーが発生しました。
rsyncが失敗したときに処理されていたディレクトリを一覧表示しようとすると、奇妙な結果が表示されます。
drwx------ 3 pdaddy pdaddy 4096 2011年8月28日日付ディレクトリ1 drwx------ 3 pdaddy pdaddy 4096 2014年3月12日ディレクトリ2 ディ???????? ? ? ? ?サブディレクトリ3 ディ???????? ? ? ? ?サブディレクトリ 4
リストに疑問符が含まれているディレクトリと疑問符がないディレクトリの一部を一覧表示しようとすると、次の結果が表示されます。
ls: ディレクトリサブディレクトリの読み込み中 3: 入出力エラー 合計0
fdiskにもエラーがあります。
~%fdisk/dev/sde fdisk: /dev/sde を読み込めません: 入力/出力エラー
ドライブをマウント解除しようとすると、umount
コマンドは中断されます。少し実行してみるhtop
と、umountが1つのCPUコアを100%使用していることがわかりました。ログやそんなことをコミットするのだと思って、ある瞬間一晩放置しておいたのですが、朝でも同じ状態でした。発行または停止するsudo reboot
と、別の端末が停止します。電源ボタンを押し続ける必要がありますが、明示的に削除せずに再起動しようとしましたが、黒い画面が表示され(モニターがスリープモードになります)、SSHまたはキーボードを介して応答がありません。sudo init 6
umount
ハード再起動後、ディスクをアンマウントしてジョブを実行しましたが、エラーはありませsudo fsck.ext4 -f /dev/sde1
んでした。ファイルを確認してみると、すべてそこにあるようで、その中にあるサンプルも正しいようです。
ログが大きすぎて(おそらく最大サイズが制限されているのではないでしょうか?)エラーが発生したと思い、テラバイト級-o data=writeback
ファイルを復元するときに一時的にこのようにマウントしておくと良いと思いました。
これによりコピー速度が若干向上しますが、エラーの発生には役立ちません。もう一度同じ状況に陥りました。ハード再起動が私ができる唯一の方法でした。その後、ディスクスキャンでエラーが表示されず、ファイルは問題なく見え、さらに100 GBのファイルをコピーできました。
どうなりますか?ディスク自体は元気だと思います。再フォーマットする前は何の問題もありませんでした。ディスクのセクタスキャンを実行する必要がありますか? 5TBなのに悩みますね。
Stephen Kittのアドバイスに従って、より多くのファイルを復元し、カーネルログを観察しました。失敗する前に、rsync
いくつかの奇妙なエラーが表示され始めました。
[8807.572286] ata4.00: 例外 Emask 0x0 SAct 0x7fffffff SErr 0x0 ジョブ 0x6 停止 [8807.572290] ata4.00: コマンド失敗: FPDMA キューへの書き込み [8807.572293] ata4.00: cmd 61/40:00:c0:57:b6/05:00:b7:00:00/40 タグ 0 ncq 688128 出力 [8807.572293] リソース 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4(タイムアウト) [8807.572295]ata4.00: 状態: {DRDY}
最後の3つのメッセージが複数回繰り返されると、次のメッセージが表示されます。
[8807.572412] ata4: ハードリセットリンク [8808.060464] ata4: SATA リンク 3.0Gbps (SStatus 123 SControl 300) [8808.062462]ata4.00: UDMA/133用に構成 [8808.076459] ata4.00:デバイスは無効なCHSセクタ0を報告します。
最後のメッセージが約20回繰り返されると、次のメッセージが表示されます。
[8808.076526] ata4: EH 完了
47秒後、このプロセスを繰り返しました。 81秒が経過し、120秒が経過しました。ただし、今回は次のように始まりました。
[9160.779935] ata4.00:エラーが多すぎてNCQが無効になっています。
次回は状況が変わります。最初は同じでしたが、後で見ると次のようになりました。
[9235.819291] ata4: ハードリセットリンク [9241.181501] ata4:リンク応答が遅い少し待ってください。 (ready=0) [9245.839449] ata4: COMRESET 失敗 (errno=-16)
この操作は数回繰り返され、次のようになります。
[9290.922301] ata4:SATAリンク速度を1.5Gbpsに制限 [9290.922303] ata4: ハードリセットリンク [9295.948393] ata4: COMRESET 失敗 (errno=-16) [9295.948400] ata4:リセット失敗、放棄 [9295.948401] ata4.00:無効
いくつかの新しいエラーがあります:
[9295.948522] sd 3:0:0:0:[sdf] 失敗結果: ホストバイト=DID_BAD_TARGET ドライババイト=DRIVER_OK [9295.948524] sd 3:0:0:0: [sdf] CDB: [9295.948525] 書き込み(16): 8a 00 00 00 00 00 b9 0c fd 00 00 00 40 00 00 00 [9295.948538] blk_update_request: I/O エラー、dev sdf、セクタ 3104636160 [9295.948542] EXT4-fs 警告 (デバイス sdf1): ext4_end_bio:317: I/O エラー -5 書き込み inode 49807774 (オフセット 155189248 サイズ 4194304 開始ブロック 388079688) [9295.948543]デバイスsdf1のバッファI / Oエラー、論理ブロック388079264
(この投稿を開始してからいくつかのドライブを混在させましたが、ドライブはsdeではなくsdfです。)
最後のエラーは異なる論理ブロックを使用して複数回繰り返され、同じ回数が得られます。
[9295.948585] EXT4-fs 警告 (デバイス sdf1): ext4_end_bio:317: I/O エラー -5 書き込み inode 49807774 (オフセット 155189248 サイズ 4194304 開始ブロック 388079856)
同じことがさらにあり、不満なしにコピーが続きます。最後に、私は次のようになります。
[9295.950321] デバイス sdf1-8 のロギングを中止します。 [9295.950345] dev sdf1のバッファI / Oエラー、論理ブロック610304000、同期ページ書き込み損失 [9295.950361] EXT4-fs(sdf1): 論理オフセット 0、最大ブロック 1024、エラー 30 で inode 49807775 の遅延ブロック割り当てが失敗しました。 [9295.950362] dev sdf1のバッファI / Oエラー、論理ブロック0、同期ページ書き込み損失 [9295.950365] EXT4-fs(sdf1): このようなことは起こってはいけません!データが失われます [9295.950365] [9295.950366] ext4_writepages(デバイスsdf1)のEXT4-fsエラー:2421:ロギングが中断されました。 [9295.950368] EXT4-fsエラー(デバイスsdf1):ext4_journal_check_start:56:ジャーナルの中断が検出されました。 [9295.950370] JBD2:sdf1-8のログスーパーブロックの更新中にエラー-5が検出されました。 [9295.950371] EXT4-fs(sdf1): 読み取り専用ファイルシステムの再マウント [9295.950372] EXT4-fs(sdf1): スーパーブロックの以前の I/O エラーが検出されました。 [9295.950379] dev sdf1のバッファI / Oエラー、論理ブロック0、同期ページ書き込み損失 [9295.950394] dev sdf1のバッファI / Oエラー、論理ブロック0、同期ページ書き込み損失 [9326.009002] scsi_io_completion: 10個のコールバックを抑制 [9326.009007] sd 3:0:0:0:[sdf] 失敗結果: ホストバイト=DID_BAD_TARGET ドライババイト=DRIVER_OK [9326.009009] sd 3:0:0:0: [sdf] CDB: [9326.009011] 書き込み(16): 8a 00 00 00 00 00 00 00 0f b8 00 00 00 08 00 00 [9326.009018] blk_update_request:コールバック10個を抑制 [9326.009020] blk_update_request: I/O エラー、dev sdf、セクタ 4024 [9326.009023]開発者sdf1のバッファI / Oエラー、論理ブロック247、非同期ページ書き込み損失
(今回はdata = writebackを使用して削除して再インストールしなかったため、デフォルトのロギングを実行しています。)
その後、ファイルシステムが読み取り専用で再マウントされたため、rsyncは失敗します。
ログダンプについて申し訳ありません。コアだけを要約しようとしましたが、ここで何が起こっているのかよく分からず、さらに要約できないようです。
答え1
これはカーネルのバグではなくハードウェアの問題のようです。次のことを試すことができます。
- SATAケーブルを再取り付けしてください。
- 他のSATAケーブルを使用してください
- SMART診断の実行(自己テスト、参照
smartmontools
) badblocks
破壊的な検査の実行
空きドライブまたはコンピュータがある場合は、マザーボードに障害があるかどうかを確認するために切り替えを試すこともできます(同じコンピュータの別のドライブを使用し、別のコンピュータの問題のあるドライブを使用)。ロード時にドライブに問題があると思われるため、dd if=/dev/zero of=...
適切なサイズのパラメータを含む単純なパラメータだけでエラーを再現するのに十分です。
もともと外付けドライブだったので、そのドライブの保証が適用されるかどうかわかりません...