J'ai beau lire pas mal de chose, je ne comprends pas comment calculer la bonne valeur de bs quand on fait un dd pour cloner un disque?
J'ai beau lire pas mal de chose, je ne comprends pas comment calculer la bonne valeur de bs quand on fait un dd pour cloner un disque?
# use qwant ?
Posté par ckiller . Évalué à -2.
https://serverfault.com/questions/650086/does-the-bs-option-in-dd-really-improve-the-speed
bs=1M
[^] # or any other search engine
Posté par gotcha5832 . Évalué à 2.
Mais la réponse n'est pas aussi simple.
https://stackoverflow.com/questions/6161823/dd-how-to-calculate-optimal-blocksize
Dans ce fil il parle énorme de la dépendance au système sur l'opti.
et chacun y va de son chiffre
lecture interessante
http://blog.tdg5.com/tuning-dd-block-size/
# Cela dépend du hardware
Posté par TheBreton . Évalué à 1.
Le disque d'entré et de sortie peuvent avoir des secteur de taille différentes (ancien 512 bytes et disque récent 4*1024 bytes) donc j'utilise plutôt les options ibs et obs que bs (si obs est un fichier j'utilise 4K généralement car c'est la taille d'un cache page ram). D'autre part il peuvent avoir du cache RAM dans le contrôleur (si le chiffre est connu c'est bien de spécifié cette taille en iobs)
D'autre part le nombre de secteurs physique disponible est souvent indiqué sur l'étiquettes du DD (mais attention les disque dur ne sont plus équipé d'un nombre puissance de 2 nombre de secteur depuis longtemps) cela me donne l'argument count.
Et voila mes 2cts sur dd
# cp
Posté par Anthony Jaguenaud . Évalué à 3.
La plupart du temps, je ne m’embête pas, j’utilise
cp
.ex :
cp /dev/disk_usb image_disque.img
Est-ce que je gagne ou perd 2 minutes, je n’en sais rien.
[^] # Re: cp
Posté par gotcha5832 . Évalué à 2.
cp pour cloner un disque entier de 500Go? MBR compris?
[^] # Re: cp
Posté par Anthony Jaguenaud . Évalué à 1.
Oui, tu fait un
cp /dev/sda /dev/sdb
(à adapter à tes besoins). Pour moi dd n’a d’utilité que pour les bandes magnétiques qui ont quasiment disparue.[^] # Re: cp
Posté par Obsidian . Évalué à 10.
dd (Disk Dub) a quand même plusieurs utilités. Sa fonction principale (et originelle) sert bien à dupliquer des disques, mais il propose bien plus d'options que le simple bs.
Si spécifier la taille d'un bloc paraît inutile, c'est justement parce que cela fait double emploi avec la couche « périphérique bloc » du système d'exploitation, qui est censée lisser tout cela et nous permettre d'y accéder comme à un flux ordinaire. Par contre, quand on utilisait des raw devices, il était nécessaire de faire des accès atomiques de la taille d'un secteur et, par conséquent, alignés sur eux (pas question de copier deux demi-secteurs consécutifs, par exemple). Et là, il est quasiment impossible de manipuler sérieusement un volume sans recourir à ce genre d'outils.
En outre, dd propose ibs et obs qui permettent de spécifier une taille de bloc différente en entrée et en sortie. Utile pour le genre de périphérique, ou pour balancer des données à travers des sockets qui exigent des trames de taille fixe.
Dernier point mais non des moindres : il existe l'option noerror qui permet de continuer le traitement même en cas d'erreurs de lecture qui, sur un disque, correspondraient à des secteurs défectueux. C'est quand même un gros avantage sur cp qui, par ailleurs, n'est pas fait pour être interrompu. dd a le bon goût d'indiquer où il en est quand on le stoppe prématurément.
Du coup, il vaut mieux ne pas spécifier comme taille de bloc celle du volume entier car, à la moindre erreur, c'est justement le reste « du volume entier » qui est passé ou rempli avec des zéros. En ce sens, il est plus intéressant de choisir comme taille de bloc celle d'un secteur ou d'un bloc du système de fichier (généralement 4096 octets) et ensuite de la multiplier par un certain facteur pour profiter de la RAM disponible et limiter les appels système, mais en restant raisonnable pour les raisons évoquées. Un bloc de la taille d'une piste est généralement un bon compromis.
[^] # Re: cp
Posté par Anthony Jaguenaud . Évalué à 2.
Je me doutais que quelqu’un me répondrait pour m’apprendre quelque-chose, merci à toi.
Je retiens surtout que dd peut continuer en cas d’erreur.
Merci.
[^] # Re: cp
Posté par freem . Évalué à 3.
Outre la reponse d'obsidian, dd permets aussi de pas se prendre la tete pour creer un fichier de taille fixe, ca ma servi (entres autres) pour etendre un fs (le /var en l'occurrence) que j'avais sous dimensionne sans avoir a bidouiller des partoches ni demonter quoi que ce soit.
[^] # Re: cp
Posté par Anthony Jaguenaud . Évalué à 2.
Tu pourrais détailler ta méthode ?
[^] # Re: cp
Posté par freem . Évalué à 3.
dd permets de creer des fichiers, par exemple a partir de /dev/zero dont la taille est precisee par les options count et bs.
Il suffit ensuite d'utiliser mkfs en utilisant le fichier ainsi cree et de le monter comme on monte une iso ou une partition.
J'avais sature mon /var avec un proxy pour apt, du coup j'avais stoppe le proxy, deplace les donnees dans mon faux fs et ajoute une ligne dans le fstab (on peut aussi le monter a la mano temporairement bien sur). Naturellement, la partition qui contiens le fichier doit etre deja montee, et il vaut mieux que le fichier soit pas dans la partirion que tu veut "etendre". C'est de la bricole, mais ca marche.
On peut aussi utiliser ca pour ajouter arrificiellement des inodes, ou utiliser des tailles de secteurs differentes pour un dossier precis, enfin, tout ve qu'on peut faire avec des partitions quoi. Dans ces usages, dd sert surtout a avoir un fichier de taille fixe, on pourrait surement utiliser d'autres commandes a la place.
[^] # Re: cp
Posté par Anthony Jaguenaud . Évalué à 3.
Moi, j’utilise
truncate
dans ce cas là. C’est plutôt rapide :[^] # Re: cp
Posté par freem . Évalué à 2.
pas a ecrire ;)
blague a part, je ne connais pas vraiment truncate, ca ne me viens pas a l'esprit. J'essaierai d'y penser a l'avenir.
# stat
Posté par ninis666 . Évalué à 6. Dernière modification le 27 juin 2017 à 12:38.
stat permet de savoir la taille d'un bloc de ton fichier (dans la section IO Block).
Avec un fichier de 1k:
bash$ dd if=/dev/zero of=prout bs=$((1024 * 1)) count=1
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.000188972 s, 5.4 MB/s
bash$ stat -c "%o" prout
4096
Avec un fichier de 4k:
dd if=/dev/zero of=prout bs=$((1024 * 4)) count=1
1+0 records in
1+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.000185359 s, 22.1 MB/s
bash$ stat -c "%o" prout
4096
Avec un fichier de 8k:
bash$ dd if=/dev/zero of=prout bs=$((1024 * 8)) count=1
1+0 records in
1+0 records out
8192 bytes (8.2 kB, 8.0 KiB) copied, 0.000213151 s, 38.4 MB/s
bash$ stat -c "%o" prout
4096
Du coup, tu n'as plus qu'à le faire sur un fichier de ton FS source et un autre sur ton FS destination et spécifier à dd les tailles des blocs en lecture et écriture (avec ibs / obs).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.