[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Copier 300GB d'un disque dur a un autre



Le 16/09/2022 à 11:49, Hugues MORIN-TRENEULE a écrit :
Salut

Dans la commande
rsync -aPv /xxx/yyy/source /vvv/zzz/destination && sync

Le "sync" correspond bien à cette commande: http://manpagesfr.free.fr/man/man8/sync.8.html <http://manpagesfr.free.fr/man/man8/sync.8.html> J'ai compris qu'elle permettait de s'assurer que le contenu en mémoire soit bien inscrit sur le disque mais je ne comprends pas bien pourquoi on l'appelle après rsync?
Quelle est sa fonction dans le processus de copie?

Dans un disque mécanique, il y a une tete le lecture qui bouge. Plus on la fait bouger, plus le mécanisme s'use. C'est donc une bonne idée d'économiser les mouvements de cette tete de lecture.

Un moyen simple de le faire, c'est de ne pas aller écrire chaque chose a écrire au fur et a mesure mais de les grouper. Il y a donc une mémoire cache. Quand tu écris quelque chose sur le disque, en fait c'est pas écrit directement sur le disque mais dans la mémoire cache. Quand cette mémoire cache est pleine, tout son contenu est écrit en une fois sur le disque. Et puis ca recommence.

Comme le système fait beaucoup de toutes petites écritures (a savoir rajouter une ligne dans un fichier de log) le fait de grouper ainsi les écritures fait économiser beaucoup de mouvements de la tete de lecture, et prolonge d'autant la durée de vie du disque.

Mais ca a aussi un défaut : quand tu écris quelque chose sur le disque, en fait ca s'écrit pas, ca attend que le cache soit plein pour s'écrire vraiment. Typiquement si tu écris un gros fichier, ca remplit le cache, ca l'écrit sur le disque, ca re-remplit le cache, ca l'écrit sur le disque, etc… un certain nombre de fois. Et puis arrive la fin du fichier. Le dernier morceau du fichier n'est pas assez gros pour remplir le cache, alors il est pas écrit tout de suite. Et tu te retrouve pendant un certain temps avec un fichier qui est écrit sur le disque, sauf la toute fin. Combien de temps dure ce "certain temps" ? Jusqu'a ce que tu ait écrit suffisamment d'autres trucs pour finir de remplir le cache.

La commande sync force l'écriture de ce qui est dans le cache, meme si il n'est pas plein. Tu peux la lancer a la main, et elle est aussi lancée automatiquement quand tu démonte un truc. C'est pour ca qu'il ne faut pas débrancher un disque externe sans l'éjecter au préalable. Quand tu éjecte le disque externe, ca lance sync pour vider le cache et ca le démonte. Tu peux alors le débrancher sans qu'il n'y ait le dernier bout du dernier fichier écrit qui reste oublié dans le cache.

PS : les clef USB, les cartes mémoire, les disque SSD (tout ce qui est de la mémoire flash en fait) n'ont pas de tete de lecture qui bouge. Grouper ainsi les écritures n'économise en rien leur usure. Dans ce cas, le cache est plus une source d'ennui qu'autre chose. Ca oblige a faire une action manuelle pour prévenir le système qu'on va débrancher. Ca fait des fichiers corrompus en cas de débranchement intempestif. Qui n'a jamais eu de faux contact dans une prise USB ???

Et puis ca empeche de faire une barre de progression réaliste pour les trucs avec une vitesse d'écriture un peu lente.

Tu a peut etre remarqué que quand tu écris un gros fichier sur une clef USB, au début la barre de progression avance super vite. Tu te dis "super, ca va pas durer longtemps". Et puis la barre de progression ralentit brusquement et sur la fin du fichier elle avance comme un escargot, pendant que tu fulmine en disant "et alors, qu'est-ce que ca attend, ca allait vite au début". Quand la copie est enfin terminée, tu fais "ejecter la clef" et la ca se met a te faire poireauter encore un bon moment avant de te dire "ca y est, vous pouvez retirer la clef sans risque".

Tout ca c'est la faute du cache. Au début ca va super vite parce que ca n'écrit pas sur la clef mais dans le cache. Quand de cache est plein, ca se met a écrire vraiment sur la clef, et la barre de progression ralentit beaucoup. Ce n'est qu'a ce moment la que tu vois la vraie vitesse d'écriture de la clef. Quand ca t'affiche que la copie est finie, en fait ca veut dire que ca a fini d'écrire le fichier dans le cache. Quand tu éjecte, ca force a écrire ce qui reste dans le cache, c'est pour ca que ca met des plombes avant de te dire "vous pouvez retirer sans risque".

Je rève d'un système qui sache faire la différence entre les disques mécaniques et les mémoires flash, pour utiliser automatiquement un cache d'écriture sur les disques mécaniques mais PAS sur la mémoire flash.


Reply to: