Pourquoi les fichiers sont-ils corrompus au redémarrage?

0

Lorsque vous enregistrez un fichier texte, changez le contenu, enregistrez à nouveau et appuyez sur le bouton de redémarrage du matériel, le fichier a de grandes chances d'être corrompu (!) (Tout le contenu est devenu \ 0 caractères). Je peux reproduire cela sur différentes machines sous Windows 7, 8.1 et 10, même si j'attends plusieurs secondes, ferme le fichier ou même l'application. Je l'ai essayé avec Notepad, Notepad ++, Paint, copie de fichier dans l'explorateur et une application de lecture / écriture de fichier UWP naïf. J'ai été déconcerté quand j'ai vu ce comportement pour la première fois et je ne comprends pas pourquoi, en 2017, vous ne pouvez toujours pas compter sur la sauvegarde de vos fichiers après une coupure de courant soudaine.

  • Faut-il s'attendre à ce que des fichiers soient corrompus comme cela lors d'une coupure de courant soudaine?
  • Quand et comment savoir si un fichier est conservé "pour de vrai" sur une unité de disque dur?
  • Pourquoi les fichiers sont-ils toujours corrompus comme ça et quels filets de sécurité devraient empêcher cela?
  • Si des filets de sécurité sont impliqués, dans quelles circonstances peuvent-ils échouer?

J'imagine que les fichiers ne sont pas réellement écrits à l'emplacement désigné lors de l'utilisation de l'opération file_write (), car une certaine mise en cache et une journalisation sont impliquées et, à la fin, le système d'exploitation et / ou le contrôleur de disque décident à quel moment. Mais je pensais que la journalisation en particulier avait été inventée pour empêcher cela. Et l'écriture de fichier réelle devrait se produire lors de l'appel d'une opération file_flush () ou file_close ().

Mise à jour: Il existe une option dans Windows - & gt; Gestionnaire de périphériques - & gt; Unités de disque - & gt; MyDiskDrive - & gt; Propriétés - & gt; Politiques - & gt; [x] Activer la mise en cache en écriture sur le périphérique

Améliore les performances du système en permettant la mise en cache en écriture sur le périphérique,   mais une panne d'électricité ou une défaillance de l'équipement peut entraîner une perte de données   ou la corruption

Cela correspond exactement au comportement décrit ci-dessus, sauf que même si je désactive la mise en cache des écritures, effectue un redémarrage propre et teste à nouveau, les fichiers sont toujours corrompus. WTF?

Gerold Meisinger
la source
1
NTFS ne dispose pas de journalisation de données, mais uniquement de métadonnées.
Daniel B
Hein, tu as raison. "NTFS est un système de fichiers journalisé ... pour enregistrer changements de métadonnées au volume. ... Le journal USN ... peut être activé ou désactivé sur des volumes non-système. " en.wikipedia.org/wiki/NTFS#Journaling msdn.microsoft.com/en-us/library/…
Gerold Meisinger

Réponses:

1

Raymond Chen, ingénieur chez Microsoft, a écrit deux articles sur la case à cocher au sujet de laquelle vous parlez:

Cependant, il existe plusieurs couches de mise en cache, certaines hors du contrôle du système d'exploitation, si bien que sans émettre de commande d'arrêt, il est impossible d'être certain qu'un fichier donné est écrit.

Si vous êtes préoccupé par l'intégrité de vos données, achetez un UPS. Cela résoudra votre problème de panne d'électricité.


la source
THX. Nous recevons des rapports sur les "sauvegardes perdues" sur les appareils Windows Phone et je ne peux pas dire à nos clients d'acheter des appareils UPS ... pour les téléphones :)
Gerold Meisinger
@ Gold Meisinger Windows Les téléphones ont une batterie. Ils n'ont pas besoin d'UPS. Je ne pense pas que la raison pour laquelle il y a une panne de courant.
Batterie vide ou retirée.
Gerold Meisinger
Ouais. Pas assez d'avertissements dans le monde entier pour certaines personnes ...