web-dev-qa-db-fra.com

Gnome, Nautilus copie des fichiers sur USB s'arrête à 100% ou près

J'ai eu des problèmes similaires auparavant, mais je ne me souviens pas comment je les ai résolus.

Lorsque j'essaie de copier quelque chose sur une clé USB, avec FAT, cela s'arrête vers la fin, parfois à 100%. Et bien sûr, lorsque je transfère la clé USB ailleurs, elle ne contient pas de fichier complet. (le fichier est un film!)

J'ai essayé de monter le périphérique avec le montage -o flush, mais j'obtiens le même problème.

De plus, j'ai formaté la clé USB avec la nouvelle partition FAT ...

Une idée du froid que je fais?

p.s. Je crois que ce n'est pas lié au système d'exploitation, qui est Debian, et je pense que la copie depuis un disque SSD ne le rend pas bloqué.

35
user27938

La raison pour laquelle cela se produit de cette façon est que le programme dit "écrire ces données" et que le noyau linux les copie dans une mémoire tampon qui est mise en file d'attente pour aller sur le disque, puis dit "ok, c'est fait". Le programme pense donc qu'il a tout copié. Ensuite, le programme ferme le fichier, mais soudainement, le noyau le fait attendre pendant que ce tampon est poussé vers le disque.

Donc, malheureusement, le programme ne peut pas vous dire combien de temps il faudra pour vider le tampon car il ne sait pas.

Si vous voulez essayer quelques astuces pour les utilisateurs expérimentés, vous pouvez réduire la taille du tampon utilisé par Linux en définissant le paramètre du noyau vm.dirty_bytes à quelque chose comme 15000000 (15 Mo). Cela signifie que l'application ne peut pas obtenir plus de 15 Mo avant sa progression réelle. (Vous pouvez modifier les paramètres du noyau à la volée avec Sudo sysctl vm.dirty_bytes=15000000 mais les faire rester pendant un redémarrage nécessite de changer un fichier de configuration comme /etc/sysctl.conf qui pourrait être spécifique à votre distribution.)

Un effet secondaire est que votre ordinateur peut avoir un débit d'écriture de données inférieur avec ce paramètre, mais dans l'ensemble, je trouve utile de voir qu'un programme s'exécute longtemps alors qu'il écrit beaucoup de données par rapport à la confusion d'avoir un Le programme semble avoir terminé son travail, mais le système est à la traîne car le noyau fait le travail réel. Réglage dirty_bytes à une valeur raisonnablement petite peut également aider à empêcher votre système de ne plus répondre lorsque vous manquez de mémoire et exécutez un programme qui écrit soudainement beaucoup de données.

Mais ne le mettez pas trop petit! J'utilise 15 Mo comme une estimation approximative que le noyau peut vider le tampon sur un disque dur normal en 1/4 de seconde ou moins. Cela empêche mon système de se sentir "lent".

47
dataless

Vieille question, mais il semble que le problème persiste. La définition du tampon à 15 Mo comme suggéré ici n'a pas fonctionné sur Ubuntu 19.04 et a mis mon système à l'arrêt.

J'essayais de copier un fichier de 1,5 Go sur un lecteur FAT32 16 Go vide (nouvellement formaté). Je l'ai laissé fonctionner pendant environ 10 minutes juste pour voir s'il finirait, sans chance.

Le reformatage en NTFS a laissé l'opération se terminer en moins de 10 secondes. Je ne sais pas pourquoi cela importerait car FAT32 devrait autoriser tout ce qui est inférieur à 2 Go, mais cela semblait fonctionner très bien. Pas une solution idéale pour les disques que vous souhaitez utiliser avec MacOS, mais une solution de contournement facile pour tous les autres cas d'utilisation. J'imagine qu'exFAT aurait fonctionné de la même manière, mais je ne l'ai pas testé.

1
Jacob Jones