Получил "ошибка ввода-вывода" при выполнении любых команд

Время от времени я сталкиваюсь с подсказкой «режим обслуживания», и мне также приходится прокручивать журнал на наличие ошибок. Так как journalctl использует less в качестве пейджера, вы должны иметь возможность применять меньше ярлыков к вашему поиску.

Как правило, я полагаюсь на функцию поиска (/ )и ищу что-либо эквивалентное «ошибке», «предупреждению» или «сбою». И обязательно -i для принудительного поиска без учета регистра.

Таким образом, мои нажатия клавиш будут иметь вид:

-i (case insensitive)
g (move to start)
/error
nnnn (skip through results)
g (move to start)
/fail
nnnn (skip through results)
g (move to start)
/warn
nnnn (skip through results)

Технически это не исчерпывающий или точный поиск точной проблемы, но я никогда не пропускал проблемы с загрузкой таким образом.

Некоторые связанные сочетания клавиш ниже:

http://www.thegeekstuff.com/2010/02/unix-less-command-10-tips-for-effective-navigation/

1
20.09.2019, 17:47
1 ответ

I found my server can't run any command, and it shouws "input output error"

Код ошибкиEIO(«Ошибка ввода/вывода» )при запуске команды может произойти, если ваша файловая система повреждена; или еще хуже, когда вы работаете на неисправном хранилище.

Скрестите пальцы; в любом случае имейте в виду, что в этот момент вам НЕ следует пытаться включать сервер без крайней необходимости . 1

Испытание

Существует один верный -способ различить две основные причины :провести сканирование системы на уровне блоков -и следить за сообщениями ядра.

  1. Загрузите систему с загрузочного диска восстановления GNU/Linux.
  2. Измените систему на обычную старую текстовую консоль (нажмите Ctrl+Alt+F1 ); не используйте для этого графический терминал .
  3. Войдите в систему как пользователь root.
  4. Запустите dmesg -E, чтобы включить отображение оперативных сообщений ядра на консоли.
  5. Запустите dmesg -n debug, чтобы разрешить сообщение ядра -низкого уровня.
  6. Запустите blkid, чтобы узнать, какой диск содержит системный раздел. (Обратите внимание, что blkidбудет перечислять разделы; уберите номер с конца пути к разделу, и вы получите диск)
  7. Запустите time -p dd if=/dev/sda of=/dev/null bs=4M, чтобы провести весь-диск тест чтения (пожалуйста, вводите внимательно ).Если ваш системный диск не /dev/sda, замените соответственно.
  8. Смотрите на экран (это займет много времени )...

Результаты

  • В лучшем случае, когда ddзавершился успешно и без происшествий, скорее всего, проблема в файловой системе.

    • Если вам удобно выполнять проверку файловой системы с загрузочного диска, вы можете сделать это сейчас (рекомендуется ).
    • Если вы предпочитаете, чтобы система сортировала все сама, перезагрузите (и удалите загрузочный диск )и загрузите свою обычную систему, но с добавлением fsck.mode=forceв конце командной строки ядра. (Подробнее см. в этом вопросе )
    • Однако при обсуждении результатов проверки файловой системы возникает другой вопрос.
  • Однако, в худшем случае , вы увидите сообщения ядра, подобные этому, извергающиеся на экран:

    ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
    ata2.00: irq_stat 0x40000001
    ata2.00: failed command: READ DMA EXT
    ata2.00: cmd 25/00:08:78:15:c5/00:00:6c:00:00/e0 tag 0 dma 4096 in
             res 51/40:00:78:15:c5/00:00:6c:00:00/e0 Emask 0x9 (media error)
    ata2.00: status: { DRDY ERR }
    ata2.00: error: { UNC }
    ata2.00: configured for UDMA/100
    sd 1:0:0:0: [sda] Unhandled sense code
    sd 1:0:0:0: [sda]  
    Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    sd 1:0:0:0: [sda]  
    Sense Key : Medium Error [current] [descriptor]
    Descriptor sense data with sense descriptors (in hex):
            72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
            6c c5 15 78 
    sd 1:0:0:0: [sda]  
    Add. Sense: Unrecovered read error - auto reallocate failed
    sd 1:0:0:0: [sda] CDB: 
    Read(10): 28 00 6c c5 15 78 00 00 08 00
    end_request: I/O error, dev sda, sector 1824855416
    Buffer I/O error on device sda, logical block 228106927
    ata2: EH complete
    

    Ищите ключевые части:

    • DRDY, ERRи UNCв фигурных скобках
    • Medium Errorстатус
    • Unrecovered read errorсмысловое сообщение

    Если вы заглянули и нашли их в сообщениях (хотя бы один раз ), они показывают, что вы столкнулись с ошибкой физического диска.

    В этом случае не позволяйте ddзакончить, нажмите Ctrl+C, чтобы остановить, СЕЙЧАС ; выключите систему и отнесите диск в мастерскую по восстановлению данных , которой вы доверяете.

  • Если вы не обнаружили вышеперечисленных контрольных сигналов в наихудшем -случае, а обнаружили повторяющиеся сообщения ядра такого типа:

    ata2: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
    ata2: irq_stat 0x00000040, connection status changed
    ata2: SError: { CommWake DevExch }
    ata2: hard resetting link
    ata2: link is slow to respond, please be patient (ready=0)
    

    Ключевые детали:

    • hard resetting link
    • link is slow to respond

    Тогда вы скорее столкнулись с проблемой соединения SATA (, например. плохой кабель ):нажмите Ctrl+C, чтобы остановить, выключите систему, исправьте кабель и подключение к диску и повторите попытку.

Дополнительные примечания

And I made a smartctl test to confirm if there is any promblem with hard disk. And it passed without error.

Имейте в виду, что некоторые жесткие диски откровенно лгут в своем статусе S.M.A.R.T.(Я смотрю на вас, Toshiba ); мой предыдущий жесткий диск ноутбука просто останавливался при чтении, извергая ошибки чтения, и он все еще говорил «все в порядке» в своих регистрах состояния.

Если ваш сервер является -критически важным, вам следует рассмотреть возможность установки на основе RAID -.


  • 1Предостережение:Мой сосед по дому однажды проигнорировал это предупреждение и все равно продолжал проверять файловую систему на своей настольной системе. Он не стал ждать, пока я его проверю, пока он не смог загрузиться . Как только я получил возможность проверить это, повреждение диска было уже невозможно восстановить (500-гигабайтный диск едва читался со скоростью улитки -КБ/с, и не было обнаружено значительной непрерывной читаемой области даже после нескольких дней ).

    С другой стороны, в другом случае с тем же симптомом владелец машины прислушался к моему предупреждению и не выключил устройство до тех пор, пока я не проверю. Конечно, это был сбой жесткого диска. После полдня сеанса GNU DDRescue и одного нового жесткого диска я сообщил ему хорошие новости о том, что его система и данные были восстановлены на 100% на блочном уровне -, т.е. все файлы целы и готовы к использованию. загрузитесь снова без каких-либо изменений.

7
27.01.2020, 23:30

Теги

Похожие вопросы