web-dev-qa-db-fra.com

Pourquoi la synchronisation est-elle si importante lorsque vous faites un bâton USB de Linux amorçable?

De l'arche Linux wiki: https://wiki.archlinux.org/index.php/usb_flash_installation_media

# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

[...] DO non Miss Sync à compléter avant de tirer le lecteur USB.

J'aimerais savoir

  • Qu'est ce que ça fait?
  • Quelles conséquences y a-t-il si laissé de côté?

Remarques

dd commande utilisée avec optionnelle status=progress:

tar -xzOf archlinux-2016-09-03-dual.iso | dd of=/dev/disk2 bs=4M status=progress && sync

Ou en utilisant pv pour progresser

tar -xzOf archlinux-2016-09-03-dual.iso | pv | dd of=/dev/disk2 bs=4M && sync
15
Jonathan Komar

Le dd ne contourne pas les caches du disque du noyau lorsqu'il écrit sur un périphérique, une partie des données ne peut pas être écrite à la clé USB sur dd. Si vous débranchez votre bâton USB à ce moment-là, le contenu du bâton USB serait incompatible. Ainsi, votre système pourrait même ne pas démarrer à partir de ce bâton USB.

Sync afflète toutes les données toujours intégrées au périphérique.

Au lieu d'invoquer sync, vous pouvez utiliser fdatasyncdd Option de conversion:

fdatasync

écrire physiquement les données du fichier de sortie avant de finir

Dans votre cas, la commande serait:

tar -xzOf archlinux-2016-09-03-dual.iso | \
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync

Le conv=fdatasync Fait dd appeler efficacement fdatasync() appel du système à la fin du transfert juste avant dd sorties (j'ai vérifié cela avec dd Sources de's).

Cela confirme que dd ne contournerait pas ni ne rincerait les caches sauf indication contraire de le faire explicitement.

19
Serge

À partir de la page MANUEL SYNC (1): "Sync - Synchronize Cached écrit sur le stockage persistant". Fondamentalement sync veille à ce que toutes vos données soient écrites dans le bâton du cache.

0
schaiba