디렉토리에 액세스 할 때 "입력 / 출력 오류"


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이기 때문에 이것을 배제하지는 않습니다.
Gilles

답변:


36

파일 시스템 액세스 시도 중 입 / 출력 오류는 일반적으로 하드웨어 문제를 의미합니다.

dmesg마지막 몇 줄의 출력을 입력 하고 확인하십시오. 디스크 또는 디스크 연결에 실패하면 여기에 기록됩니다.

편집은 당신을 통해 장착 있습니까 ntfs또는 ntfs-3g? 내가 기억 하듯이 레거시 ntfs드라이버는 안정적인 쓰기 지원 이 없었ntfs-3g 으며 상당히 안정적이고 안전한 것으로 판명되었을 때 대부분 버려졌습니다 .


3
이동식 하드 드라이브를 Ubuntu 12.04에 연결하면 자동으로 마운트됩니다. 그래서 나는 추측한다 ntfs-3g?
Tim

7
" 추측 " 하지 마십시오 . 확인- mount명령 을 입력 하고 출력을 보면 모든 것이 어떻게 마운트되는지 확인할 수 있습니다 .
Shadur

1
(1) dmesg디렉토리의 내용을 나열하려고 시도한 후 출력의 마지막 부분을 추가했습니다 . 어떻게 도움이되는지 모르겠습니다. (2) nfts-3g 또는 ntfs로 마운트되어 있는지 여부를 알 수 없습니다 mount./dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Tim

2
fuseblk사용하는 fuser파일 시스템 사용자 공간 방법을 사용하고 있음을 의미 ntfs-3g합니다. 그래서 당신은 그런 점에서 좋습니다.
Shadur

19

Sadhur가 말했듯이 이것은 아마도 디스크 하드웨어 문제로 인한 것일 수 있으며 dmesg출력은 이것을 확인하기에 적합한 장소입니다.

Linux에서 디스크 표면 스캔을 실행할 수 있습니다 /sbin/badblocks /dev/sda.

기본 픽스 (블록 재배치)에 대한보다 철저한 테스트는 매뉴얼 페이지를 확인하십시오. 이것은 모든 파일 시스템에 구애받지 않으므로 '디스크 표면'수준에서 작동하는 NTFS 파일 시스템에서도 안전합니다.

나는 개인적으로 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제 경우입니까?
Tim

아니요. dmesg 출력에 따르면 sdb : /sbin/badblocks /dev/sdb또는 sdc 를 사용해야 합니다. 나는 당신이 무슨 일이 있었는지 / 당신이 한 일을 알아낼 수 없습니다dmesg
jippie

명령을 사용 하여 /dev/sd{x}디스크를 찾을 수 있습니다fdisk -l
lucidyan

badblocks 앱은 "정지 / 재개"를 원할 경우 작업을 위해 시작 및 끝 블록을 수락한다는 것을 기억하십시오.
Aquarius Power

9

NTFS 볼륨의 경우 파일 시스템이 손상 chkdsk되어 Windows 시스템에서 실행해야 하지만 복구가 거의 불가능합니다. 때로는 디스크를 포맷해야 할 수도 있습니다.


감사! 내 다른 디렉토리는 괜찮습니다. 전체 드라이브를 포맷 할 수없고 문제의 디렉토리에서 공간을 되 찾을 수 있습니까?
Tim

1
@ 팀, 하나는 NTFS 구조에 익숙하지 않은 단일 노드 ... 제거 할 수 있는지 몰라요 ... 나머지 아웃 형식의 모두 복사했다 다시 복사
데이지

3
포맷하기 전에 badblocksLinux 에서 명령을 시도하십시오 .
jippie

7

나에게 맞는 해결책 ntfs-3g은 2014 릴리스에서 2012 릴리스로 버전 을 다운 그레이드하는 것 입니다. 이것은 ntfs 파티션 액세스 문제를 해결해야합니다. 결국에는 최신 릴리스를 실행해야하므로 장기적으로는 솔루션이 아닙니다.

더 많은 정보는 여기에


3
정말 고맙습니다. 그게 내 문제를 해결했다. 소스에서 최신 안정 릴리스 (2016.2.22)를 설치했으며 이제 완벽하게 작동합니다. 내가 사용한 설치 지침 : tuxera.com/community/open-source-ntfs-3g
Ricardo Pereira

알았어요. 따라서 기본적으로 2012 년부터 2016 년 사이에 드라이브가 작동하지 않는 창이 있습니다.

2

방금 다른 사람의 이익을 위해이 스레드에 솔루션을 추가하고 싶었습니다. 전원 공급 장치에 장애가 발생했을 때 시스템에서 일부 작업을 수행했습니다 .SATA 케이블을 전환 할 때 잘못된 순서로 SATA 케이블을 다시 연결해야합니다. 모든 것이 다시 작동했습니다. 어쨌든 부트 디스크가 특정 SATA 포트에 있어야하는 이유를 전혀 알지 못합니다.


2

Linux 도구가 작동하지 않고 Windows 만 아니라 Mac 만 사용할 수있는 경우 수행 할 작업을 아무도 언급하지 않았습니다.

Paragon NTFS로 OS X에서 수정 가능

제 경우에는 gparted찾을 수 없었던 Windows PC를 찾으라고 말했습니다. 그러나 Mac은이 훌륭한 소프트웨어를 구할 수있었습니다. 평가판을 설치하고 확인을 수행 한 다음 복구 하고 수리하십시오 !


빌드 툴 체인에서 sshfs를 사용하여 그러한 오류가 발생했을 때 macOS에 대한 사례가있었습니다. brew를 통한 osxfuse & sshfs 설치가 도움이되었습니다.
sdd

2

방금 경험을 나누고 싶었습니다. FreeBSD 10.3에서 외장 하드 드라이브를

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

하드 드라이브 내부에서 나는 mkdir디렉토리를 만들고 mv명령 을 사용하여 일부 파일을 디렉토리로 옮겼습니다 . 마지막으로 다음 명령을 수행했습니다.

$ sudo sync

그런 다음 커널 4.4.0-78-generic을 사용하는 Linux 시스템에 하드 드라이브를 마운트했습니다. 이제 하드 드라이브의 내용을 나열하면 FreeBSD에서 생성되고 이름이라는 디렉토리 Jeff가 아래와 같이 표시됩니다.

$ 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에서 하드 드라이브를 다시 마운트했습니다. 그러나 ls, cdrmFreeBSD의에서 명령은 동일하게 생성 Input/output error. FreeBSD ntfs-3g패키지에 버그가있는 것 같습니다 .


최신 정보

모든 데이터를 외장 하드 드라이브에서 Linux 컴퓨터 Jeff로 옮겼습니다. 물론 I / O 오류로 인해 손상된 파일을 옮길 수 없었습니다. 그런 다음 볼륨을 0으로 설정하고 불량 섹터 검사를 모두 수행하여 외장 하드 드라이브를 다시 포맷했습니다.

$ sudo mkfs.ntfs /dev/sdb1

그런 다음 모든 데이터를 다시 외부 볼륨으로 옮겼습니다. 이렇게하면 손상된이라는 파일을 잃어 버렸지 Jeff만 외부 하드 드라이브는 I / O 오류가 없습니다.


0

이 오류가 발생하는 디스크에 액세스하려고 할 때 마지막으로 복사 한 파일을 마지막 파일에 쓰려고 시도했지만 이미 작성된 레코드가 마지막으로 복사 한 항목과 일치하지 않아 액세스 시도가 실패하여 실패했습니다. 디스크를 구출하는 가장 건강한 방법은 창에 마지막으로 복사 한 항목을 제거하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.