Lỗi đầu vào / đầu ra bị lỗi khi truy cập vào một thư mục


80

Tôi muốn liệt kê và xóa nội dung của một thư mục trên một ổ cứng di động. Nhưng tôi đã gặp "lỗi đầu vào / đầu ra":

$ 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

Tôi đã tự hỏi vấn đề là gì?

Làm cách nào tôi có thể khôi phục hoặc xóa thư mục picvà tất cả nội dung của nó?

Hệ điều hành của tôi là Ubuntu 12.04 và ổ cứng di động có hệ thống tập tin ntfs. Các thư mục khác không chứa hoặc bên trong picổ cứng di động đang hoạt động tốt.


Thêm:

Phần cuối của đầu ra dmesgsau khi tôi cố gắng liệt kê nội dung của thư mục:

[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
Lỗi I / O có thể là sự cố phần cứng (RAM bị hỏng hoặc đĩa cứng). Nó cũng có thể có nghĩa là một hệ thống tập tin bị hỏng hoặc lỗi trình điều khiển; vì đây là NTFS nên tôi sẽ không loại trừ điều này.
Gilles

Câu trả lời:


36

Lỗi đầu vào / đầu ra trong quá trình truy cập hệ thống tập tin thường có nghĩa là sự cố phần cứng.

Nhập dmesgvà kiểm tra một vài dòng đầu ra cuối cùng. Nếu đĩa hoặc kết nối với nó bị lỗi, nó sẽ được ghi chú ở đó.

EDIT Bạn đang gắn kết nó thông qua ntfshoặc ntfs-3g? Như tôi nhớ lại, ntfstrình điều khiển cũ không có hỗ trợ ghi ổn định và phần lớn bị bỏ rơi khi hóa ra nó ntfs-3gổn định và an toàn hơn đáng kể.


3
Tôi kết nối ổ cứng di động với Ubuntu 12.04 và nó được gắn tự động. Vậy tôi đoán ntfs-3gvậy?
Tim

8
Đừng " đoán ". Kiểm tra - bạn có thể thấy mọi thứ được gắn kết bằng cách gõ mountlệnh và nhìn vào đầu ra.
Shadur

1
(1) Tôi đã thêm phần cuối cùng của đầu ra dmesgsau khi tôi cố gắng liệt kê nội dung của thư mục. Tôi không biết làm thế nào nó giúp. (2) Tôi không thể xem liệu nó được gắn kết bởi nraft-3g hay ntfs, bằng cách nhìn vào đầu ra của mount:/dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Tim

2
fuseblkcó nghĩa là nó sử dụng fuserphương thức không gian hệ thống tập tin, đó là những gì ntfs-3gsử dụng. Vì vậy, bạn tốt trong vấn đề đó.
Shadur

19

Như Sadhur tuyên bố điều này có thể do sự cố phần cứng đĩa và dmesgđầu ra là nơi thích hợp để kiểm tra điều này.

Bạn có thể phát hành quét bề mặt đĩa từ Linux /sbin/badblocks /dev/sda.

Kiểm tra trang hướng dẫn để kiểm tra kỹ hơn một bản sửa lỗi cơ bản (di dời khối). Đây là tất cả các hệ thống tập tin không tin tưởng, vì vậy nó an toàn ngay cả với hệ thống tập tin NTFS khi nó hoạt động ở cấp độ 'bề mặt đĩa'.

Cá nhân tôi đã thực hiện điều này để chạy trên cơ sở hàng tháng từ cron. Tất nhiên bạn cần kiểm tra xem bạn có nhận được các cron mail trong hộp thư của bạn không (thường không phải là trường hợp theo mặc định). Những thư này kết thúc trong /var/mail/$USERhoặc tương tự.

Tôi đã tạo /etc/cron.d/badblocks:

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

Cảm ơn! Để chạy lệnh mà bạn đề xuất, có phải /sbin/badblocks /media/removable_drivetrong trường hợp của tôi không?
Tim

Không. Theo đầu ra dmesg, bạn phải sử dụng sdb: /sbin/badblocks /dev/sdbhoặc sdc. Tôi thực sự không thể hiểu được chuyện gì đã xảy ra / bạn đã làm từdmesg
jippie

Bạn có thể tìm thấy /dev/sd{x}đĩa của mình bằng fdisk -llệnh
lucidyan

hãy nhớ ứng dụng badblocks chấp nhận các khối bắt đầu và kết thúc để hoạt động trong trường hợp bạn muốn "tạm dừng / tiếp tục" :)
Aquarius Power

9

Hệ thống tập tin của bạn bị hỏng, đối với khối lượng NTFS, bạn nên chạy một chkdskhệ thống dưới cửa sổ, nhưng gần như không thể phục hồi. Đôi khi bạn có thể cần định dạng đĩa.


Cảm ơn! Các thư mục khác của tôi là tốt. Tôi có thể không định dạng toàn bộ ổ đĩa, chỉ cần lấy lại không gian từ thư mục trong câu hỏi?
Tim

1
@Tim, bạn phải sao chép tất cả phần còn lại, định dạng và sao chép chúng lại ... tôi không biết liệu người ta có thể xóa một nút không ... không quen với cấu trúc NTFS
daisy

3
Trước khi định dạng, hãy thử badblockscommANGE trên Linux.
jippie

7

Một giải pháp hiệu quả với tôi là hạ cấp ntfs-3gphiên bản từ phiên bản 2014 xuống phiên bản 2012. Điều này sẽ giải quyết vấn đề truy cập phân vùng ntfs của bạn. Về lâu dài đây không phải là một giải pháp vì cuối cùng bạn sẽ cần chạy bản phát hành mới nhất.

Thêm thông tin ở đây


3
Cảm ơn bạn rất nhiều. Điều đó đã giải quyết vấn đề của tôi. Tôi đã cài đặt bản phát hành ổn định mới nhất (2016.2.22) từ nguồn và bây giờ nó đang hoạt động hoàn hảo. Hướng dẫn cài đặt tôi đã sử dụng: tuxera.com/community/open-source-ntfs-3g
Ricardo Pereira

Được rồi, đó là điều tốt để biết. Vì vậy, về cơ bản, có một cửa sổ từ năm 2012 đến đầu năm 2016, trong đó ổ đĩa đơn giản là không hoạt động.

2

Tôi chỉ muốn thêm giải pháp của mình cho chủ đề này vì lợi ích của người khác - Tôi đã thực hiện một số công việc trên hệ thống của mình khi nguồn điện của tôi không thành công - tôi phải kết nối lại cáp SATA theo thứ tự sai khi tôi chuyển đổi chúng, mọi thứ hoạt động trở lại - không biết tại sao đĩa khởi động cần phải có trên một cổng SATA cụ thể, dù sao, có thể là câu trả lời cho người khác.


2

Không ai đề cập phải làm gì nếu các công cụ Linux không hoạt động và chỉ có Mac, nhưng không có Windows, có sẵn.

Có thể sửa trên OS X với Paragon NTFS

Trong trường hợp của tôi gparted, hãy đi tìm một PC Windows không tìm thấy ở đâu. Nhưng một máy Mac đã xuất hiện, trong đó phần mềm tuyệt vời này có sẵn. Đã cài đặt phiên bản dùng thử, thực hiện xác minh , sau đó sửa chữa - và voilà!


Tôi đã gặp trường hợp trên macos khi lỗi đó được tạo ra bằng cách sử dụng sshfs (dường như) trong xây dựng chuỗi công cụ. Cài đặt osxfuse & sshfs thông qua brew đã giúp.
sdd

2

Tôi chỉ muốn chia sẻ trải nghiệm của mình: trên FreeBSD 10.3, tôi đã gắn ổ cứng ngoài với

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

Bên trong ổ cứng, tôi đã mkdirtạo một thư mục và sau đó di chuyển một số tệp vào đó, tất nhiên là bằng mvlệnh. Cuối cùng tôi đã thực hiện lệnh sau:

$ sudo sync

Sau đó, tôi gắn ổ cứng trên máy Linux với kernel 4.4.0-78. Bây giờ Khi tôi liệt kê nội dung của ổ cứng, thư mục được tạo trên FreeBSD, được đặt tên Jeff, được hiển thị như bên dưới:

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

nhập mô tả hình ảnh ở đây

Ngoài ra, khi cố gắng xóa Jeffthư mục, tôi nhận được thông báo lỗi sau:

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

nhập mô tả hình ảnh ở đây

Tôi không thể thoát khỏi Jeffthư mục trên máy Linux, do đó tôi đã sử dụng máy FreeBSD và gắn lại ổ cứng trên FreeBSD. Nhưng ls, cdrmlệnh trên FreeBSD tạo giống nhau Input/output error. Có vẻ như đã có một lỗi trên ntfs-3ggói FreeBSD .


CẬP NHẬT

Tôi đã chuyển tất cả dữ liệu của mình từ ổ cứng ngoài sang máy Linux, tất nhiên tệp bị hỏng Jeffkhông thể di chuyển do lỗi I / O. Sau đó, tôi định dạng lại ổ cứng ngoài với cả zeroing của volume và bad sector như thế này:

$ sudo mkfs.ntfs /dev/sdb1

Và sau đó di chuyển tất cả dữ liệu trở lại âm lượng bên ngoài. Bằng cách này, tôi đã mất tệp bị hỏng có tên Jeff, tuy nhiên, ổ cứng ngoài của tôi không có bất kỳ lỗi I / O nào.


0

Tôi đã phát hành rằng khi tôi cố gắng truy cập vào đĩa xảy ra lỗi này, nó đã cố ghi các tập tin cuối cùng được sao chép vào tập tin cuối cùng sau đó truy cập không thành công vì bản ghi đã ghi không khớp với các mục được sao chép cuối cùng nên không thành công. Cách tốt nhất để cứu đĩa là loại bỏ vật phẩm cuối cùng hoặc vật phẩm được sao chép trong cửa sổ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.