Наразі немає жодної відповіді на цю проблему.
Зазвичай після деяких проблем із читаннями чи записами для блокування пристрою, ядро вирішує переключити прапор НА ЦІЛЬНУ ПРИСТРОЮ як лише для читання. Після цього будь-які записи в будь-який розділ / файлову систему, що знаходиться на цьому пристрої, викликають перемикання його як повністю прочитане разом із станом пристрою, оскільки будь-які записи неможливі.
Приклад з dmesg, це моделювання для гостьового Linux на Windows8 за допомогою VirtualBox, коли defrag знімає зображення пристрою гостей:
[11903.002030] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
[11903.003179] ata3.00: failed command: READ FPDMA QUEUED
[11903.003364] ata3.00: cmd 60/08:00:a8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 in
[11903.003385] res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11903.004074] ata3.00: status: { DRDY }
[11903.004248] ata3: hard resetting link
[11903.325703] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11903.327097] ata3.00: configured for UDMA/133
[11903.328025] ata3.00: device reported invalid CHS sector 0
[11903.329664] ata3: EH complete
[11941.000472] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen
[11941.000769] ata3.00: failed command: READ FPDMA QUEUED
[11941.000952] ata3.00: cmd 60/08:00:c8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 in
[11941.000961] res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11941.001353] ata3.00: status: { DRDY }
[11941.001504] ata3: hard resetting link
[11941.320297] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11941.321252] ata3.00: configured for UDMA/133
[11941.321379] ata3.00: device reported invalid CHS sector 0
[11941.321553] ata3: EH complete
[11980.001746] ata3.00: exception Emask 0x0 SAct 0x11fff SErr 0x0 action 0x6 frozen
[11980.002070] ata3.00: failed command: WRITE FPDMA QUEUED
[11980.002255] ata3.00: cmd 61/18:00:28:23:59/00:00:00:00:00/40 tag 0 ncq 12288 out
[11980.002265] res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
-------------------
There are many other errors, like "lost write page", "Journal has aborted", "Buffer I/O error", "hard resetting link" and many others.
Після цього перераховуйте причину:
mount / -o remount,rw
mount: cannot remount block device /dev/sda1 read-write, is write-protected
тому що КОЛИЙ пристрій sda, що зберігає rootfs sda1, НАЙКРАДНО.
На мій досвід, це відбувається в таких ситуаціях:
- Жорсткий диск дійсно пошкоджений. Повернені проблеми із записом залежать від стану жорсткого диска
- Хост-машина перевантажена, тоді записи віртуального жорсткого жорсткого диска linux затягуються
- Кабель FC або SAN-пристрій (диски масиву по Fiber Channel) перевантажені
- Моментне втрачене з'єднання через FC або FCoE. Можливо, загублений / вичерпаний пакет FC
У цій ситуації пристрій дійсно читає-пише, але ядро Linux позначає цей пристрій внутрішньо як лише для читання і використовується як лише для читання. Це функціональність ядра, створена для запобігання пошкодженням, але вона може використовуватися лише в 1. точці.
Питання є. Як вручну сказати ядро, що пристрій блокування hdd працює нормально?
Якщо це буде, ядро служить пристрою лише для читання, як-от "CD-ROM", і жодна інша команда не має шансів працювати належним чином, включаючи mount / remount -o read-write, fsck та інші.
Непридатні відповіді, справді кваліфіковані як спам від людей, які хочуть допомогти, але не розуміють про проблему:
- Спробуйте перезаписати як читання-запис (неможливо, пристрій - RO)
- fsck це (що для? пристрою RO, ремонт не можливий)
- "Я не знаю" (спочатку з розумом, але непридатним)
- "Замініть свій пристрій" * (зазвичай проблема полягає в чомусь іншому)
Хтось має формулу для питання вище? Переключити прапор блокового пристрою, що записується, який повертає його з режиму лише для читання до стану читання-запису? У цей час здається, що ніхто не знає як.
Це деякі способи вирішення, але зазвичай напівпридатні або непридатні для використання:
- Видалити модуль підтримує доступ до вказаного hdd або масиву зберігання. На жаль, зазвичай пошкоджений пристрій зберігає рутви, або драйвер зберігає як пошкоджений пристрій, так і пристрій, який зберігає rootfs
- Видаліть доступ FC до пристрою і приєднайтеся до цього знову (fctools), не завжди це можливо, не завжди працює.
- Перезавантажте всю машину. Зазвичай тільки це завжди можливо, і ми завжди змушені це робити.
У пунктах 1. і 2. ми кажемо ядру, що ми повністю відключаємо пристрій і знову підключаємось до нього. Кернел визнав це приєднанням до нового належного операційного пристрою. Ми можемо імітувати це за допомогою USB-пристрою та миттєвого відключення живлення. Точка 3. є останнім шансом і зазвичай працює. Але чому ми повинні все перезапустити? На жаль, у всіх моментах ми втратили всі оновлення журналів та брудні буфери.
Зауважте, в тих же ситуаціях у мене немає проблем із Windows (настільний ПК та сервер).