2013-06-12 2 views
1

Je suis en train de lire certains concepts de système d'exploitation et je suis tombé dessus.Que se passe-t-il lorsque la requête d'écriture se produit dans la copie d'instantané lors de l'écriture?

D'après ce que je comprends, quand vous prenez un instantané,

copie sur écriture enregistre l'état actuel du système de fichiers (métadonnées). Cela entraînera une légère interruption du système (presque instantané).

Si le système de fichiers reçoit une demande de lecture sur un fichier non modifié, nous lisons les métadonnées de l'instantané et il nous redirige vers la copie d'origine. Que se passe-t-il lorsque le système de fichiers reçoit une demande d'écriture? Met-il à jour le système de fichiers original et copié?

Répondre

0

Cela dépend beaucoup du type d'instantanés dont vous parlez. Si vous parlez du type de snapshots intégrés à un système de fichiers copy-on-write comme Btrfs ou ZFS, alors les demandes d'écriture sur les snapshots "fonctionnent" comme un effet secondaire du fonctionnement du système de fichiers: les données sont écrites, elles sont écrites dans un nouvel emplacement et de nouvelles métadonnées sont écrites pour refléter cela. Mais à la fois les nouvelles données et les métadonnées sont écrites dans un seul instantané, pas dans l'autre. Une fois que les nouvelles données et les nouvelles métadonnées sont écrites, l'instantané qui a été écrit libère les anciennes copies - mais l'autre instantané utilise toujours cette copie pour ne pas être réellement publié. Le résultat final est que ces données ne sont plus partagées entre les deux instantanés. J'utilise les termes "snapshot" et "autre snapshot" car dans ce type de système, une fois qu'un snapshot est pris, l'instantané et l'original sont sur un pied d'égalité.

Si vous parlez de quelque chose comme des instantanés LVM, le système de fichiers ignore complètement ce qui se passe. En ce qui le concerne, il écrit sur un périphérique bloc standard. Dans ce cas, LVM doit gérer quels blocs sous-jacents sont toujours partagés entre l'instantané et l'origine de l'instantané et ceux qui ont divergé. Les instantanés stockent les copies des blocs qui ont divergé (soit parce qu'ils ont été écrits dans l'instantané, soit dans le périphérique d'origine).

Questions connexes