ディレクトリにアクセスするときの「入出力エラー」


80

リムーバブルハードドライブ上のディレクトリのコンテンツを一覧表示して削除したい。しかし、私は「入出力エラー」を経験しました:

$ rm  pic -R
rm: cannot remove `pic/60.jpg': Input/output error
rm: cannot remove `pic/006.jpg': Input/output error
rm: cannot remove `pic/008.jpg': Input/output error
rm: cannot remove `pic/011.jpg': Input/output error

$ ls -la pic
ls: cannot access pic/60.jpg: Input/output error
-????????? ? ?    ?         ?            ? 006.jpg
-????????? ? ?    ?         ?            ? 006.jpg
-????????? ? ?    ?         ?            ? 011.jpg

私は問題が何であるかと思っていましたか?

ディレクトリpicとそのすべてのコンテンツを回復または削除するにはどうすればよいですか?

私のOSはUbuntu 12.04で、リムーバブルハードドライブにはntfsファイルシステムがあります。picリムーバブルハードドライブを含まない、または内部にない他のディレクトリは正常に機能しています。


追加:

dmesgディレクトリのコンテンツをリストしようとした後の出力の最後の部分:

[19000.712070] usb 1-1: new high-speed USB device number 2 using ehci_hcd
[19000.853167] usb-storage 1-1:1.0: Quirks match for vid 05e3 pid 0702: 520
[19000.853195] scsi5 : usb-storage 1-1:1.0
[19001.856687] scsi 5:0:0:0: Direct-Access     ST316002 1A               0811 PQ: 0 ANSI: 0
[19001.858821] sd 5:0:0:0: Attached scsi generic sg2 type 0
[19001.861733] sd 5:0:0:0: [sdb] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[19001.862969] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.865223] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.865232] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.867597] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.869214] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.869218] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.891946]  sdb: sdb1
[19001.894713] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled
[19001.895950] sd 5:0:0:0: [sdb] Cache data unavailable
[19001.895953] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[19001.895958] sd 5:0:0:0: [sdb] Attached SCSI disk
[19113.024123] usb 2-1: new high-speed USB device number 3 using ehci_hcd
[19113.218157] scsi6 : usb-storage 2-1:1.0
[19114.232249] scsi 6:0:0:0: Direct-Access     USB 2.0  Storage Device   0100 PQ: 0 ANSI: 0 CCS
[19114.233992] sd 6:0:0:0: Attached scsi generic sg3 type 0
[19114.242547] sd 6:0:0:0: [sdc] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[19114.243144] sd 6:0:0:0: [sdc] Write Protect is off
[19114.243154] sd 6:0:0:0: [sdc] Mode Sense: 08 00 00 00
[19114.243770] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.243778] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.252797] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.252807] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.280407]  sdc: sdc1 < sdc5 >
[19114.289774] sd 6:0:0:0: [sdc] No Caching mode page present
[19114.289779] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[19114.289783] sd 6:0:0:0: [sdc] Attached SCSI disk

1
I / Oエラーはハードウェアの問題(RAMまたはハードディスクの損傷)である可能性があります。また、破損したファイルシステムまたはドライバーのバグを意味する場合もあります。これはNTFSなので、これを除外しません。
ジル

回答:


36

ファイルシステムへのアクセス試行中の入出力エラーは、一般にハードウェアの問題を意味します。

dmesg出力の最後の数行を入力して確認します。ディスクまたはディスクへの接続が失敗した場合は、そこに記録されます。

編集ntfsまたはでマウントしていntfs-3gますか?私が思い出すように、レガシntfsドライバーは安定した書き込みサポートがなく、ntfs-3g大幅に安定して安全であることが判明したときにほとんど放棄されました。


3
リムーバブルハードドライブをUbuntu 12.04に接続すると、自動的にマウントされます。だから私は推測するntfs-3g
ティム

8
推測」しないでください。チェック- mountコマンドを入力して出力を見ると、すべてがマウントされていることがわかります。
シャドゥール

1
(1)dmesgディレクトリの内容を一覧表示しようとした後、出力の最後の部分を追加しました。どのように役立つかわかりません。それはの出力を見ることで、NFTS-3GまたはNTFSでマウントされている場合(2)私が見ることができないmount/dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
ティム・

2
fuseblkfuserこれは、ユーザー空間のファイルシステム方式を使用していることを意味しntfs-3gます。だからあなたはその点で良いです。
シャドゥール

19

Sadhurが述べているように、これはおそらくディスクハードウェアの問題が原因であり、dmesg出力はこれをチェックする適切な場所です。

Linuxからディスクの表面スキャンを発行できます/sbin/badblocks /dev/sda

より徹底的なテストと基本的な修正(ブロックの再配置)については、マニュアルページを確認してください。これはすべてファイルシステムに依存しないため、「ディスク表面」レベルで動作するため、NTFSファイルシステムでも安全です。

私は個人的にこれをcronから毎月実行するようにしました。もちろん、メールボックスでcronメールを受信したかどうかを確認する必要があります(多くの場合、デフォルトではそうではありません)。これらのメールは最終的に、/var/mail/$USERまたは同様のものになります。

私が作成しました/etc/cron.d/badblocks

30 4 * * 3 root [ -x /sbin/badblocks ] && [ $(date +\%d) -le 7 ] && /sbin/badblocks /dev/sda

ありがとう!あなたが提案したコマンドを実行するには/sbin/badblocks /media/removable_drive、私の場合ですか?
ティム

いいえ。dmesgの出力によると、sdb:/sbin/badblocks /dev/sdbまたはsdc を使用する必要があります。何が起こったのか、あなたが何をしたのか、本当に分かりませんdmesg
ジッピー

あなたは見つけることができる/dev/sd{x}とのディスクをfdisk -lコマンド
lucidyan

badblocksアプリが開始および終了ブロックを受け入れて、「一時停止/再開」したい場合に使用することを忘れないでください:)
Aquarius Power

9

ファイルシステムが破損しています。NTFSボリュームの場合、chkdskWindowsシステムで実行する必要がありますが、回復することはほぼ不可能です。ディスクをフォーマットする必要がある場合があります。


ありがとう!私の他のディレクトリは大丈夫です。ドライブ全体をフォーマットすることはできません。問題のディレクトリのスペースを再利用するだけですか?
ティム

1
@Tim、残りをすべてコピーし、フォーマットし、コピーし直す必要がありました...単一のノードを削除できるかどうかわかりません... NTFS構造に精通していない
デイジー

3
フォーマットする前に、badblocksLinuxでコマンドを試してください。
ジッピー

7

私にとって有効な解決策は、ntfs-3gバージョンを2014リリースから2012リリースにダウングレードすることです。これにより、ntfsパーティションアクセスの問題が解決するはずです。最終的には最新リリースを実行する必要があるため、長期的にはこれは解決策ではありません。

詳細はこちら


3
どうもありがとうございます。これで私の問題は解決しました。ソースから最新の安定版リリース(2016.2.22)をインストールしましたが、問題なく動作しています。使用したインストール手順:tuxera.com/community/open-source-ntfs-3g
リカルドペレイラ

わかった、それはいいことだ。そのため、基本的には2012年から2016年の初めにかけてドライブが機能しなかった期間があります。

2

他の人のためにこのスレッドにソリューションを追加したかった-電源が故障したときにシステムでいくつかの作業を行った-切り替えたときにSATAケーブルを間違った順序で再接続しなければならなかった-ブートディスクを特定のSATAポートに配置する必要がある理由は、とにかく、他の誰かの答えになるかもしれません。


2

Linuxツールが機能せず、MacではなくWindowsしか使用できない場合の対処方法については誰も言及していません。

Paragon NTFSを使用してOS Xで修正可能

私の場合、gpartedどこにも見つからないWindows PCを探しに行くと言った。しかし、Macが登場し、この素晴らしいソフトウェアが利用できるようになりました。試用版をインストールし、verifyを実行してから修復します。


macosで、ビルドツールチェーンでsshfs(一見)を使用するとこのようなエラーが発生した場合がありました。brewを介したosxfuseとsshfsのインストールが役立ちました。
sdd

2

私は自分の経験を共有したかっただけです。FreeBSD10.3では、外付けハードドライブを

$ sudo ntfs-3g /dev/da0s1 /media

ハードドライブ内で、mkdirディレクトリを作成し、mvコマンドを使用していくつかのファイルを移動しました。最後に、次のコマンドを実行しました。

$ sudo sync

次に、カーネル4.4.0-78-genericのLinuxマシンにハードドライブをマウントしました。これで、ハードドライブの内容を一覧表示するとJeff、FreeBSDで作成されたという名前のディレクトリが次のように表示されます。

$ ls -lhrtci
ls: cannot access 'Jeff': Input/output error
total 20K
  ? d????????? ? ?    ?       ?            ? Jeff

ここに画像の説明を入力してください

また、Jeffディレクトリを削除しようとすると、次のエラーメッセージが表示されます。

$ sudo rm -f -R Jeff
rm: cannot remove 'Jeff': Input/output error

ここに画像の説明を入力してください

JeffLinuxマシンのディレクトリを削除できなかったため、FreeBSDマシンを使用して、FreeBSDのハードドライブを再度マウントしました。ただし、FreeBSDのlscdおよびrmコマンドは同じものを生成しInput/output errorます。FreeBSD ntfs-3gパッケージにバグがあったようです。


更新

すべてのデータを外部ハードドライブからLinuxマシンにJeff移動しました。もちろん、I / Oエラーのため、破損したファイルを移動できませんでした。次に、次のようにボリュームのゼロ化と不良セクタのチェックの両方で外付けハードドライブを再フォーマットしました。

$ sudo mkfs.ntfs /dev/sdb1

そして、すべてのデータを外部ボリュームに戻しました。このようにして、という名前の破損ファイルを失いましたがJeff、外付けハードドライブにはI / Oエラーがありません。


0

このエラーが発生したディスクにアクセスしようとすると、コピーされた最後のファイルを最後のファイルに上書きしようとしたときに、すでに書き込まれたレコードが最後にコピーされたアイテムと一致しないためアクセスが失敗するため、失敗しました。ディスクをレスキューする最も健康的な方法は、ウィンドウにコピーされた最後のアイテムを削除することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.