Bir dizine erişirken “Giriş / çıkış hatası”


80

Çıkarılabilir bir sabit sürücüdeki bir dizinin içeriğini listelemek ve kaldırmak istiyorum. Ancak "Girdi / çıktı hatası" yaşandı:

$ 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

Sorunun ne olduğunu merak ediyordum?

Dizini picve tüm içeriğini nasıl kurtarabilir veya kaldırabilirim ?

İşletim sistemim Ubuntu 12.04 ve çıkarılabilir sabit sürücüde ntfs dosya sistemi var. picÇıkarılabilir sabit sürücüyü içermeyen veya içinde olmayan diğer dizinler iyi çalışıyor.


Eklendi:

Çıktının son kısmı dmesgdizinin içeriğini listelemeye çalıştım:

[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
Bir G / Ç hatası donanım sorunu olabilir (hasarlı RAM veya sabit disk). Ayrıca hasarlı bir dosya sistemi veya bir sürücü hatası olabilir; bu NTFS olduğundan, bunu dışlamazdım.
Gilles

Yanıtlar:


36

Dosya sistemine erişim girişimleri sırasında Giriş / Çıkış hataları genellikle donanım sorunları anlamına gelir.

Yazın dmesgve çıktının son satırları işaretleyin. Diskin veya bağlantısının kopması durumunda, orada not alınacaktır.

DÜZENLEME sen yoluyla montaj musunuz ntfsya ntfs-3g? Hatırladığım kadarıyla, eski ntfssürücünün sabit bir yazma desteği yoktu ve ortaya çıktığı zaman büyük ntfs-3gölçüde daha istikrarlı ve güvenli olduğu için büyük ölçüde terk edildi .


3
Çıkarılabilir sabit sürücüyü Ubuntu 12.04 cihazıma bağlarım ve otomatik olarak monte edilir. Yani sanırım ntfs-3g?
Tim

8
" Tahmin et " deme . Kontrol Et - mountKomutu yazıp çıktıya bakarak her şeyin nasıl monte edildiğini görebilirsiniz .
Shadur

1
(1) dmesgDizinin içeriğini listelemeye çalıştıktan sonra çıktının son bölümünü ekledim . Nasıl yardımcı olduğunu bilmiyorum. (2) Çıktısına bakarak, nfts-3g veya ntfs ile monte edilip edilmediğini göremiyorum mount:/dev/sdb1 on /media/removable_drive type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Tim

2
fuseblkKullanıcının kullandığı fuserdosya sistemini ntfs-3gkullanıyor. Demek bu konuda iyisin.
Shadur

19

Sadhur'ın belirttiği gibi, bu muhtemelen disk donanımı sorunlarından kaynaklanıyor ve dmesgçıktı bunu kontrol etmek için doğru yer.

Diskin yüzey taramasını Linux'tan yapabilirsiniz /sbin/badblocks /dev/sda.

Daha kapsamlı testler için basit bir düzeltme için manuel sayfayı kontrol edin (blok yerleştirme). Bu, tüm dosya sistemi agnostiği olduğundan, 'disk yüzeyi' düzeyinde çalışırken NTFS dosya sisteminde bile güvenlidir.

Şahsen bunu cron'dan aylık olarak çalıştırmak için yaptım. Tabii ki posta kutunuzdaki cron postalarını alıp almadığınızı kontrol etmeniz gerekir (bu genellikle varsayılan olarak böyle değildir). Bu postalar /var/mail/$USERbuna benzer veya benzer şekilde sonuçlanır .

Ben yarattım /etc/cron.d/badblocks:

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

Teşekkürler! Önerdiğiniz komutu çalıştırmak için /sbin/badblocks /media/removable_drivebenim durumumda mı?
Tim

Hayır. Dmesg çıktısına göre sdb: /sbin/badblocks /dev/sdbveya sdc kullanmanız gerekir . Gerçekten ne olduğunu / ne yaptığını dmesg
çözemiyorum

/dev/sd{x}Diskinizi fdisk -lkomut ile bulabilirsiniz
lucidyan

badblocks uygulamasının "askıya alma / devam ettirme" durumunda çalışmak için başlangıç ​​ve bitiş bloklarını kabul ettiğini unutmayın :)
Kova Gücü

9

Dosya sisteminiz zarar görmüştür, NTFS birimleri için bir chkdskwindows sistemi altında çalışmalısınız, ancak kurtarılması neredeyse imkansızdır. Bazen diski biçimlendirmeniz gerekebilir.


Teşekkürler! Diğer rehberlerim iyi. Tüm sürücüyü biçimlendiremiyorum, sadece söz konusu dizindeki alanı geri alıyor musunuz?
Tim

1
@Tim, geri kalanını kopyalamanız, biçimlendirmeniz ve geri kopyalamanız gerekiyordu ... tek bir düğümü kaldırabilir mi bilmiyorum ... NTFS yapısına aşina değil
daisy

3
Biçimlendirmeden önce badblocks, Linux'ta komutu deneyin .
jippie

7

Benim için çalışan bir çözüm ntfs-3g, 2014 sürümünden 2012 sürümüne sürümün düşürülmesidir . Bu, ntfs bölüm erişim probleminizi çözmelidir. Uzun vadede bu bir çözüm değildir çünkü sonunda en son sürümü çalıştırmanız gerekecektir.

Daha fazla bilgi burada


3
Çok teşekkür ederim. Bu benim sorunumu çözdü. En son kararlı sürümü (2016.2.22) kaynaktan kurdum ve şimdi kusursuz çalışıyor. Kullandığım
Ricardo Pereira

Tamam, bunu bilmek güzel. Dolayısıyla, temel olarak 2012 ile 2016 arasında, sürücünün çalışmadığı bir pencere var.

2

Başkalarının faydası için çözümümü bu konuya eklemek istedim - güç kaynağım kesildiğinde sistemim üzerinde bazı çalışmalar yaptım - SATA kablolarını değiştirdiğimde yanlış sırayla yeniden bağlamalıydım, her şey tekrar çalıştı - Önyükleme diskinin neden belirli bir SATA bağlantı noktasında olması gerektiğine dair hiçbir fikrim yok, başka birinin yanıtı olabilir.


2

Linux araçları çalışmıyorsa ve yalnızca Mac değil, Windows kullanılabilir olduğunda kimse ne yapacağından bahsetmedi.

Paragon NTFS ile OS X'e sabitlenebilir

Benim durumumda gpartedhiçbir yerde bulunamadığı bir Windows PC bulmak gitmek dedi. Ancak bu harika yazılımın mevcut olduğu bir Mac vardı. Deneme sürümünü yükledi , doğruladı , sonra tamir et - ve voilà!


Macos'ta, bu tür bir hata sshfs (görünüşte) derleme araç zincirinde kullanıldığında ortaya çıktı. Osxfuse & sshfs kurulumunu brew üzerinden yapmak yardımcı oldu.
sdd

2

Sadece deneyimimi paylaşmak istedim: FreeBSD 10.3'te harici sabit diskimi monte ettim

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

Sabit sürücünün içinde, mkdirbir dizin oluşturmak için yaptım ve sonra bazı dosyaları elbette mvkomutla taşıdım . Sonunda şu komutu yaptım:

$ sudo sync

Daha sonra sabit sürücüyü çekirdek 4.4.0-78-jenerikli bir Linux makineye monte ettim. Şimdi Sabit sürücünün içeriğini listelediğimde, FreeBSD'de oluşturulmuş olan ve adlandırılmış dizini Jeffaşağıdaki gibi gösteriyor:

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

görüntü tanımını buraya girin

Ayrıca, Jeffdizini kaldırmaya çalışırken aşağıdaki hata iletisini alıyorum:

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

görüntü tanımını buraya girin

JeffLinux makinesindeki dizinden kurtulamadım , bu yüzden FreeBSD makinesini kullandım ve sabit diski tekrar FreeBSD'ye tekrar monte ettim. Ama ls, cdve rmFreeBSD'ye komutlar aynı üretmek Input/output error. FreeBSD ntfs-3gpaketinde bir hata olmuş gibi görünüyor .


GÜNCELLEME

Tüm verilerimi harici sabit diskten bir Linux makineye Jefftaşıdım , tabii ki bozuk dosya G / Ç hatası nedeniyle taşınamadı. Ardından, harici sabit diski hem birimin sıfırlanması hem de kötü sektör kontrolü ile yeniden biçimlendirdim:

$ sudo mkfs.ntfs /dev/sdb1

Sonra tüm verileri tekrar harici birime taşıdı. Bu yolla, adındaki bozuk dosyayı kaybettim Jeff, ancak harici sabit diskim G / Ç hatalarını temizledi.


0

Bu hatayı meydana getiren diske erişmeye çalıştığımda, kopyalanan son dosyaların son dosyaya yazılmaya çalışıldığını, daha sonra erişim girişiminin başarısız olduğunu, çünkü daha önce yazılan kayıtın son kopyalanan öğelerle eşleşmediğinden başarısız olduğunu açıkladım. Diski kurtarmanın en sağlıklı yolu, pencereye kopyalanan son öğeyi veya öğeleri kaldırmaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.