Question

Est-il un moyen d'avoir Linux de lecture à l'avance lors du clonage d'un disque?J'utilise le programme nommé "dd" pour cloner des disques.La dernière fois que je l'ai fait, il semblait que l'OS a été la lecture puis l'écriture, mais jamais en même temps.Idéalement, le disque de destination, serait constamment écrit sans attente c'est sûr que si le disque source peut tenir.

Mise à JOUR:J'ai l'habitude de choisir une grande taille de bloc lors du clonage (ex.M 16 ou 32 MO).

Était-ce utile?

La solution

Le Commodore Jaeger est juste à propos de:

dd if=/dev/sda of=/dev/sdb bs=1M

En outre, l'ajustement "readahead" sur les disques améliore généralement les performances.La valeur par défaut peut être quelque chose comme 256, et optimale 1024.Chaque installation est différente, de sorte que vous devez exécuter des repères pour trouver la meilleure valeur.

# blockdev --getra /dev/sda
256
# blockdev --setra 1024 /dev/sda
# blockdev --getra /dev/sda
1024
# blockdev --help
Usage:
  blockdev -V
  blockdev --report [devices]
  blockdev [-v|-q] commands devices
Available commands:
    --getsz (get size in 512-byte sectors)
    --setro (set read-only)
    --setrw (set read-write)
    --getro (get read-only)
    --getss (get sectorsize)
    --getbsz    (get blocksize)
    --setbsz BLOCKSIZE  (set blocksize)
    --getsize   (get 32-bit sector count)
    --getsize64 (get size in bytes)
    --setra READAHEAD   (set readahead)
    --getra (get readahead)
    --flushbufs (flush buffers)
    --rereadpt  (reread partition table)
    --rmpart PARTNO (disable partition)
    --rmparts   (disable all partitions)
#

Autres conseils

Vous pouvez essayer d'augmenter la taille de bloc à l'aide de la bs de l'argument;par défaut, je crois que dd utilise une taille de bloc égale sur le disque préféré de la taille du bloc, ce qui signifie beaucoup plus de lectures et d'écritures pour copier un disque entier.Linux dd supports lisibles par l'homme suffixes:

dd if=/dev/sda of=/dev/sdb bs=1M

La manière la plus rapide pour moi:

dd if=/dev/sda bs=1M iflag=direct | dd of=/dev/sdb bs=1M oflag=direct

atteint ~100MiB/s, alors que d'autres options (processus unique, pas de direct, par défaut différente de 512 octets taille de bloc, ...) n'arrivent même pas à 30MiB/s...

Pour surveiller les progrès, courir dans une autre console:

watch -n 60 killall -USR1 dd

Peut-être que vous pouvez utiliser deux processus

dd if=indevfile | dd of=outdevfile

Je vais supposer que vous pouvez définir les autres dd options comme il vous convient.Cela a une surcharge, mais devrait permettre d'asynchronisme entre la lecture un disque et de l'écriture de l'autre.

si les deux disques utiliser différents canaux (par exemple, SATA) vous pouvez utiliser l'outil de hautes performances comme fastDD.Les auteurs affirment:

"Dans ce travail, nous avons examiné le problème de manière fiable et efficace la copie de données, rappelant que tous les matériels et logiciels des mécanismes qui intervenir et intervenir dans le processus de copie.Notre examen ont été codé en fastdd, un programme C++ permet de copier les données très de manière efficace, comme nous le montrons dans notre test."

En outre l'outil conserve une syntaxe très similaire à l'ancienne dd.

http://www.dei.unipd.it/~zagonico/fastdd/

https://github.com/zagonico86/fastdd

Êtes-vous sûr qu'il n'est pas fait en même temps?Je m'attends à ce que le disque caches pour s'assurer qu'il arrive.Si pas, non-blocage ou même asynchrone des lectures/écritures peut aider,

À propos de votre mise à jour:Quelle est la taille des caches de votre HDs?(spécialement l'écriture d'un).Il est peut-être que c'est trop et vous devrez peut-être réduire à prévenir les blocages inutiles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top