Necesitaba transferir un archivo de disco virtual KVM de 20 GB , almacenando el sistema de archivos raíz de una VM CentOS 6.5, de un servidor de laboratorio a otro. El gran tamaño del archivo y el hecho de que una vez comprimí un archivo de disco virtual de este tipo a unos cientos de megabytes me hicieron habilitar instintivamente la compresión, scp
pero me sorprendió ver una velocidad de transferencia bastante baja. Luego intenté bzip2
en combinación con ssh
y cat
y me sorprendió. Aquí está el resumen de los métodos y el rendimiento promedio.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 11 MB / s.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
, 5 MB / s. Este resultado aún menor provocó la búsqueda en la red.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 13 MB / s. Este uso de-c arcfour
como se sugirió en una respuesta en serverfault. Apenas ayudó. Finalmente, deshabilité la compresión.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 23 MB / s.
¿No debería la compresión haber sido más rápida?
EDITAR: No sé por qué la pregunta ha sido rechazada. Pensé que hay algo que aprender aquí.
Después de recibir la ssh(1)
sugerencia de la página de manual de @sven, probé un par de métodos alternativos de transferencia de archivos que no implican compresión, ambos con mejores resultados.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
, 26 MB / s.nc -l 5678 > /mnt/vdisks/vm1-root.img
en el receptor ync 192.168.161.62 5678 < vm1-root.img
en el transmisor, 40 MB / s. El puerto5678
es arbitrario y estaba disponible.
¡El uso nc
resultó ser el método de copia más rápido!
En el pasado, scp -C
funcionó muy bien siempre que pensé que lo haría. Por ejemplo, al transferir syslogs ( /var/log/messages*
) de pocos GB de tamaño. Una velocidad de transferencia sin comprimir de unos pocos cientos de KB / s aumentaría a 1-2 MB / s. Este ejemplo cae en el caso de una conexión lenta como se ha señalado en la página del manual.
Tengo un caso en el que una imagen de disco virtual recién creada para una partición de 20 GB tiene un tamaño comprimido de solo 200 MB. ¡Con una velocidad de transferencia de aproximadamente 25 MB / s, podríamos hacer la copia en solo 8 segundos en lugar de más de 13 minutos! Claramente, scp
sin compresión es ineficiente en este caso y scp -C
es aún peor.
Supongo que la principal lección aprendida aquí es que scp -C
debe considerarse como una conveniencia. Si un archivo se puede comprimir significativamente, entonces es mejor comprimirlo primero en el origen, transferir el formulario comprimido y finalmente comprimirlo en el destino. Las herramientas que realizan la compresión y descompresión rápidamente (por ejemplo, pbzip2 ) serán de mayor ayuda.