2015-11-21 1 views
0

Je suis en train de développer un système qui copie et écrit des fichiers sur NTFS dans une machine virtuelle. A tout moment, la VM peut s'éteindre (arrêt direct). La coupure est contrôlée de l'extérieur, donc je n'ai aucun moyen de le détecter. En raison de ces fichiers et des répertoires complets qui sont écrits pour se perdre. Est-il possible d'empêcher cela ou dois-je développer mon propre système de fichiers? Je dois stocker les fichiers sur le disque local et ne peux pas envoyer de fichiers via le réseau.Système de fichiers avec protection "Corruption"

+0

NTFS peut facilement faire face à cela, il est conçu de cette façon (mais oui, vous perdrez des données non écrites). Développer son propre système de fichiers n'est pas une bonne idée ... –

Répondre

1

Il existe toujours une période [courte] entre l'écriture de vos données (envoyée à l'API) et l'écriture de ces données sur le matériel physique. Si le système se bloque au milieu, les données seront perdues.

Il existe un paramètre dans Windows pour désactiver le cache d'écriture système pour certains disques. Ce paramètre peut vous aider à garantir que les données sont au moins envoyées au matériel de l'hôte. Probablement c'est la réponse que vous cherchiez.

L'écriture de votre propre système de fichiers n'aidera pas beaucoup car c'est principalement le cache d'écriture qui provoque la perte des données. Il peut exister un cache au niveau du système de fichiers, bien que, et je ne sais pas si le paramètre de cache d'écriture que j'ai mentionné ci-dessus affecte également le cache de système de fichiers interne.

0

Si vous écrivez des données dans un fichier ouvert avec "write through" activé, la méthode ne revient qu'après l'écriture physique des données sur le disque afin que vous puissiez être sûr qu'il a été écrit. Vous le faites normalement en transmettant un indicateur WRITE_THROUGH lorsque vous ouvrez le fichier.