Pour le moment, aucun ansver pour ce problème.
Habituellement, après quelques problèmes avec les lectures ou les écritures pour bloquer le périphérique, le noyau décide de changer l'indicateur pour WHOLE DEVICE en lecture seule. Après cela, tout écrit sur n'importe quelle partition / système de fichiers situé sur ce périphérique provoque le basculement en lecture seule avec l'état du périphérique, car tout écrit est impossible.
Exemple de dmesg, il s'agit d'une simulation pour linux invité sur windows8 utilisant VirtualBox lorsque la défragmentation prend l'image du périphérique invités:
[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.
Après cela, remontez la cause:
mount / -o remount,rw
mount: cannot remount block device /dev/sda1 read-write, is write-protected
parce que tout le périphérique sda gardant rootfs sda1 est en lecture seule.
D'après mon expérience, cela se produit dans des situations:
- Le disque dur est vraiment endommagé. Les problèmes d'écriture retournés dépendent de l'état du disque dur
- La machine hôte est surchargée, puis les écritures du disque dur virtuel invité Linux sont expirées
- Le câble FC ou le périphérique SAN (disques de matrice sur Fibre Channel) est surchargé
- Connexion momentanément perdue sur FC ou FCoE. Peut-être un paquet FC perdu / expiré
Dans ces situations, le périphérique est vraiment en lecture-écriture, mais le noyau Linux marque ce périphérique en interne comme en lecture seule et est utilisé en lecture seule. Il s'agit d'une fonctionnalité du noyau conçue pour la prévention des dommages, mais elle n'est utilisable qu'à un point.
La question est. Comment dire manuellement au noyau, le périphérique de bloc hdd fonctionne normalement?
Sans cela, le noyau sert le périphérique en lecture seule, comme le «CD-ROM», et aucune autre commande n'a de chance de fonctionner correctement, y compris mount / remount -o lecture-écriture, fsck et autres.
Ansvers inutilisable, vraiment qualifié de spam de personnes qui veulent aider, mais ne comprennent pas la nature du problème:
- Essayez de remonter en lecture-écriture (impossible, l'appareil est RO)
- fsck ceci (pourquoi? l'appareil est RO, aucune réparation n'est possible)
- «Je ne sais pas» (d'abord avec sens, mais inutilisable)
- 'Remplacez votre appareil' * (généralement le problème est autre chose)
Quelqu'un at-il une formule pour la question ci-dessus? Indicateur de commutateur pour le périphérique de bloc inscriptible qui le fait passer de l'état lecture seule à l'état lecture-écriture? À l'heure actuelle, il semble que personne ne sache comment.
Il s'agit de quelques solutions de contournement, mais généralement semi-utilisables ou inutilisables:
- Le module de suppression prend en charge l'accès au disque dur ou à la baie de stockage spécifié. Malheureusement, le périphérique généralement endommagé conserve rootfs, ou le pilote conserve à la fois le périphérique endommagé et le périphérique qui conserve rootfs
- Supprimez l'accès FC à l'appareil et rejoignez-le à nouveau (fctools), ce n'est pas toujours possible, cela ne fonctionne pas toujours.
- Redémarrez la machine ENTIÈRE. Habituellement, cela est toujours possible et nous sommes toujours obligés de le faire.
Aux points 1. et 2. nous disons au noyau que nous déconnectons complètement le périphérique et que nous nous y connectons à nouveau. Le noyau a reconnu que cela rejoignait un nouveau périphérique fonctionnant correctement. Nous pouvons simuler cela en utilisant un périphérique USB et couper momentanément l'alimentation. Le point 3. est la dernière chance et fonctionne généralement. Mais pourquoi devrions-nous tout redémarrer? Malheureusement, à tout moment, nous avons perdu toutes les mises à jour des journaux et les tampons sales.
Remarquez, dans les mêmes situations, je n'ai aucun problème avec Windows (bureau et serveur).