“ ข้อผิดพลาดอินพุต / เอาต์พุต” เมื่อเข้าถึงไดเร็กทอรี


80

ฉันต้องการแสดงรายการและลบเนื้อหาของไดเรกทอรีในฮาร์ดไดรฟ์ที่ถอดออกได้ แต่ฉันพบ "ข้อผิดพลาด Input / output":

$ 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และเนื้อหาทั้งหมดได้อย่างไร

ระบบปฏิบัติการของฉันคือ 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?
ทิม

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หมายความว่ามันกำลังใช้วิธีการfuserfilesystem-in-userspace ซึ่งเป็นสิ่งที่ntfs-3gใช้ ดังนั้นคุณจะดีในเรื่องนั้น
Shadur

19

เนื่องจาก Sadhur ระบุว่าสิ่งนี้อาจเกิดจากปัญหาฮาร์ดแวร์ดิสก์และdmesgเอาต์พุตเป็นสถานที่ที่เหมาะสมในการตรวจสอบ

/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
jippie

คุณสามารถค้นหา/dev/sd{x}ดิสก์ของคุณด้วยfdisk -lคำสั่ง
lucidyan

จำแอป badblocks ยอมรับการเริ่มต้นและสิ้นสุดบล็อกเพื่อทำงานร่วมกับในกรณีที่คุณต้องการ "หยุดชั่วคราว / กลับสู่การทำงาน" :)
Aquarius Power

9

ระบบไฟล์ของคุณได้รับความเสียหายสำหรับวอลุ่ม NTFS คุณควรเรียกใช้chkdskภายใต้ระบบ windows แต่เกือบจะเป็นไปไม่ได้ที่จะกู้คืน บางครั้งคุณอาจต้องฟอร์แมตดิสก์


ขอบคุณ! ไดเรกทอรีอื่นของฉันก็ใช้ได้ ฉันไม่สามารถฟอร์แมตไดรฟ์ทั้งหมดเพียงแค่เรียกคืนพื้นที่จากไดเรกทอรีที่เป็นปัญหา
ทิม

1
@ เวลาคุณต้องคัดลอกส่วนที่เหลือทั้งหมดจัดรูปแบบและคัดลอกกลับ ... ฉันไม่ทราบว่าสามารถลบโหนดเดียว ... ไม่คุ้นเคยกับโครงสร้าง NTFS
เดซี่

3
ก่อนการจัดรูปแบบลองใช้คำสั่งbadblocksบน Linux
jippie

7

ทางออกสำหรับฉันคือการลดntfs-3gรุ่นจากรุ่น 2014 เป็นรุ่น 2012 สิ่งนี้ควรแก้ปัญหาการเข้าถึงพาร์ติชัน ntfs ของคุณ ในระยะยาวนี่ไม่ใช่ทางออกเพราะในที่สุดคุณจะต้องเปิดตัวรุ่นล่าสุด

ข้อมูลเพิ่มเติมที่นี่


3
ขอบคุณมาก. นั่นช่วยแก้ไขปัญหาของฉัน ฉันติดตั้งรุ่นเสถียรล่าสุด (2016.2.22) จากแหล่งที่มาและตอนนี้มันทำงานได้อย่างไม่มีที่ติ คำแนะนำในการติดตั้งที่ฉันใช้: tuxera.com/community/open-source-ntfs-3g
Ricardo Pereira

โอเคนั่นเป็นการดีที่จะรู้ โดยทั่วไปจะมีหน้าต่างระหว่างปี 2555 ถึงต้นปี 2559 ซึ่งเป็นช่วงที่ไดรฟ์ใช้งานไม่ได้

2

ฉันต้องการเพิ่มวิธีแก้ไขปัญหาของฉันไปยังเธรดนี้เพื่อประโยชน์ของผู้อื่น - ฉันทำงานบางอย่างในระบบของฉันเมื่อแหล่งจ่ายไฟของฉันล้มเหลว - ฉันต้องเชื่อมต่อสายเคเบิล SATA อีกครั้งในลำดับที่ไม่ถูกต้อง - ไม่รู้เลยว่าทำไมดิสก์สำหรับบูตจำเป็นต้องอยู่บนพอร์ต SATA ที่เฉพาะเจาะจงอย่างไรก็ตามอาจเป็นคำตอบสำหรับคนอื่น


2

ไม่มีใครพูดถึงว่าต้องทำอย่างไรหากเครื่องมือของ Linux ไม่ทำงานและมีเพียง Mac เท่านั้น แต่ไม่สามารถใช้กับ Windows ได้

สามารถแก้ไขได้บน OS X ด้วยParagon NTFS

ในกรณีของฉันgpartedบอกว่าจะไปหาพีซีที่ใช้ Windows ซึ่งไม่มีที่ไหนเลยที่จะพบ แต่มี Mac อยู่ใกล้ ๆ ซึ่งมีซอฟต์แวร์ชั้นเลิศชิ้นนี้ให้บริการ ติดตั้งรุ่นทดลองทำการตรวจสอบแล้วซ่อมแซม - และvoilà!


ฉันมีกรณีบน macos เมื่อข้อผิดพลาดดังกล่าวถูกผลิตโดยการใช้ sshfs (ดูเหมือน) ในการสร้าง toolchain การติดตั้ง osxfuse & sshfs ผ่านทาง brew ช่วย
sdd

2

ฉันแค่อยากจะแบ่งปันประสบการณ์ของฉัน: บน FreeBSD 10.3 ฉันติดตั้งฮาร์ดไดรฟ์ภายนอกด้วย

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

ภายในฮาร์ดไดรฟ์ฉันได้mkdirสร้างไดเรกทอรีแล้วย้ายไฟล์บางไฟล์ไปพร้อมกับmvคำสั่ง ในที่สุดฉันก็ทำตามคำสั่งต่อไปนี้:

$ sudo sync

จากนั้นฉันก็ติดตั้งฮาร์ดไดรฟ์บนเครื่อง Linux ที่มีเคอร์เนล 4.4.0-78-generic ตอนนี้เมื่อฉันแสดงรายการเนื้อหาของฮาร์ดไดรฟ์ไดเรกทอรีที่สร้างบน 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

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่สามารถกำจัดJeffไดเรกทอรีบนเครื่อง Linux ได้ดังนั้นฉันจึงใช้เครื่อง FreeBSD และติดตั้งฮาร์ดไดรฟ์บน FreeBSD อีกครั้ง แต่ls, cdและrmคำสั่งบน FreeBSD Input/output errorสร้างเดียวกัน ดูเหมือนว่าจะมีข้อผิดพลาดในntfs-3gแพ็คเกจFreeBSD


UPDATE

ฉันย้ายข้อมูลทั้งหมดของฉันจากฮาร์ดไดรฟ์ภายนอกไปยังเครื่อง Linux แน่นอนว่าไฟล์ที่เสียหายJeffไม่สามารถย้ายได้เนื่องจากข้อผิดพลาด I / O จากนั้นฉันทำการฟอร์แมตฮาร์ดไดรฟ์ภายนอกอีกครั้งโดยตรวจสอบระดับเสียงและเซกเตอร์เสียให้เป็นศูนย์:

$ sudo mkfs.ntfs /dev/sdb1

จากนั้นย้ายข้อมูลทั้งหมดกลับไปยังระดับเสียงภายนอก ด้วยวิธีนี้ฉันได้สูญเสียไฟล์เสียหายที่ชื่อJeffอย่างไรก็ตามฮาร์ดไดรฟ์ภายนอกของฉันสะอาดหมดจดจากข้อผิดพลาด I / O


0

ฉันปล่อยว่าเมื่อฉันพยายามเข้าถึงดิสก์ที่เกิดข้อผิดพลาดนี้มันพยายามเขียนไฟล์ล่าสุดที่คัดลอกถูกเขียนทับไปยังไฟล์สุดท้ายจากนั้นความพยายามในการเข้าถึงล้มเหลวเนื่องจากระเบียนที่เขียนแล้วไม่ตรงกับรายการที่คัดลอกล่าสุดดังนั้นจึงล้มเหลว วิธีที่ดีที่สุดในการช่วยเหลือดิสก์คือการลบรายการสุดท้ายหรือรายการที่คัดลอกใน windows

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.