"Помилка вводу / виводу" під час доступу до каталогу


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та весь його вміст?

Моя ОС - 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
Помилка вводу / виводу може бути проблемою з обладнанням (пошкоджена оперативна пам'ять або жорсткий диск). Це також може означати пошкоджену файлову систему або помилку драйвера; оскільки це NTFS, я б не виключав цього.
Жиль

Відповіді:


36

Помилки введення / виводу під час спроб доступу до файлової системи, як правило, означають проблеми з обладнанням.

Введіть dmesgі перевірте останні кілька рядків виводу. Якщо диск або з'єднання з ним не вдається, це буде помічено.

EDIT Ви монтуєте його через ntfsабо ntfs-3g? Наскільки я пам’ятаю, застарілий ntfsдрайвер не мав стабільної підтримки для запису і був значною мірою відмовлений, коли виявився ntfs-3gзначно стабільнішим та безпечнішим.


3
Я підключаю знімний жорсткий диск до свого Ubuntu 12.04, і він автоматично встановлюється. Так я здогадуюсь ntfs-3g?
Тім

7
Не вгадайте . Перевірте - ви можете побачити, як усе монтується, ввівши mountкоманду і подивившись на вихід.
Шадур

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використовується. Тож ви в цьому відношенні добрі.
Шадур

19

Як зазначає Садхур, це, ймовірно, викликано проблемами апаратного забезпечення диска, і 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в моєму випадку?
Тім

Ні. Відповідно до висновку dmesg, ви повинні використовувати sdb: /sbin/badblocks /dev/sdbабо sdc. Я не можу реально зрозуміти, що сталося з того, що ти зробивdmesg
jippie

Ви можете знайти свій /dev/sd{x}диск з fdisk -lкомандою
lucidyan

пам'ятайте, що додаток badblocks приймає блоки для початку та кінця для роботи на випадок, якщо ви хочете "призупинити / відновити" :)
Power Aquarius

9

Ваша файлова система пошкоджена, для томів NTFS вам слід запустити систему chkdskпід Windows, але відновити її майже неможливо. Іноді може знадобитися відформатувати диск.


Дякую! Інші мої каталоги чудово. Чи не можу я відформатувати цілий диск, просто наберіть пробіл у відповідному каталозі?
Тім

1
@Tim, вам довелося скопіювати всі решта, відформатувати та скопіювати їх назад ... я не знаю, чи можна видалити один вузол ... не знайомий зі структурою NTFS
Дейзі

3
Перед форматуванням спробуйте команду badblocksна Linux.
jippie

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.

Можна виправити на OS X за допомогою Paragon NTFS

У моєму випадку gpartedсказали, що потрібно знайти ПК з Windows, яких ніде не було знайдено. Але навколо був Mac, для якого цей чудовий фрагмент програмного забезпечення доступний. Встановлювали пробну версію, виконували перевірку , потім ремонтували - і voilà!


У мене був випадок на macos, коли така помилка була створена за допомогою використання sshfs (здавалося б) у інструментальній збірці інструментів. Допомога встановлення osxfuse & sshfs за допомогою варіння.
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 сталася помилка .


ОНОВЛЕННЯ

Я перемістив усі свої дані з зовнішнього жорсткого диска на машину Linux, звичайно, пошкоджений файл Jeffне вдалося перемістити через помилку вводу / виводу. Потім я переформатував зовнішній жорсткий диск з нулюванням гучності та з поганою перевіркою сектору так:

$ sudo mkfs.ntfs /dev/sdb1

А потім перемістив усі дані назад у зовнішній об'єм. Таким чином, я втратив пошкоджений файл з назвою Jeff, однак мій зовнішній жорсткий диск чистий від будь-яких помилок вводу / виводу.


0

Я випустив, що коли я намагаюся отримати доступ до диска, на якому виникає ця помилка, він намагався записати останні скопійовані файли, над ними були записані в останній файл, потім спроба доступу не вдається, оскільки запис, який уже написано, не збігається з останніми скопійованими елементами, тому його не вдається. Найздоровішим способом порятунку диска є видалення останнього елемента або елементів, скопійованих у Windows.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.