web-dev-qa-db-fra.com

Clé USB: la copie prend environ 3 minutes mais le démontage prend un temps très long: 10 à 12 minutes

J'utilise Ubuntu 17.10.

J'ai formaté une clé USB en NTFS pour préparer un programme d'installation Windows7 USB.

J'ai mis l'indicateur de démarrage sur ce lecteur de stylo et y ai copié les fichiers.

EDIT 1: La clé USB est automatiquement montée par udev.

umount /dev/sdb1 prend de 10 à 12 minutes.

Voici les options de montage:

$ mount | grep sdb
/dev/sdb1 on /media/mansfeld/Win7_USB_Installer type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)

EDIT 2: l'opération cp n'est pas INSTANTANÉE du tout, il a fallu 3 minutes pour copier les fichiers sur la clé USB.

EDIT 3: L'opération sync (effectuée juste après le cp) a duré 12 minutes! Mais alors le umount sera instantané.

Pour FAT32 (avec la synchronisation également désactivée pendant le montage), je remarque le même comportement.

Des idées pour lesquelles le démontage de la clé USB NTFS prend autant de temps?

6
SebMa

Vous êtes probablement souffrant de mise en mémoire tampon mise en cache. Pour accélérer l'écriture sur les clés USB (et les disques durs en général), Linux utilise un cache de système de fichiers:

Lorsque vous pensez que vous écrivez quelque chose sur la clé, celle-ci est d'abord écrite dans la mémoire cache (en RAM) et la commande cp(par exemple) retourne immédiatement en prétextant une opération d'écriture très rapide. Pendant que vous faites autre chose, le contenu du cache est ensuite écrit sur la clé en arrière-plan. Vous remarquerez peut-être qu'une DEL sur le stick continue à clignoter pour indiquer les opérations d'écriture (cela dépend de votre stick) bien que rien ne se passe.

Lorsque vous émettez umountpeu de temps après une opération d'écriture, umountattend que tout le contenu de la mémoire cache du système de fichiers soit écrit sur la clé afin de s'assurer qu'aucune donnée n'est perdue.

Avec syncname__, vous pouvez forcer manuellement vider le cache et écrire les données sur la clé. Toutefois, cela n’accélérera pas le temps total écoulé, car vous devrez alors attendre que syncsoit terminé (au lieu d’attendre umountname__). Mais umountreviendra alors instantanément car le cache est déjà vidé.

En résumé, vous avez trois choix après la copie de fichiers volumineux ou nombreux sur la clé:

  • umountet attendez 10 minutes qu'il soit terminé
  • syncname__, attendez 10 minutes pour terminer, suivi de umount(sera renvoyé presque immédiatement)
  • attendez simplement 10 minutes (peut-être un peu plus) et ne faites rien (ou quelque chose qui n’ait rien à voir avec le bâton) et alors émettez umountname__. Etant donné que le cache est automatiquement écrit en arrière-plan, umountsera également renvoyé presque immédiatement.
4
PerlDuck

Lorsque vous copiez des fichiers sur votre clé USB, ils ne sont pas écrits directement dessus. La synchronisation du système de fichiers est en cours sur la commande unmount, les données réelles sont écrites pendant que vous attendez votre démontage. Si vous exécutez syncavant umountname__, umountest instantané.

4
Pasi Suominen