Aquí está mi situación:
- Dos servidores dedicados en el mismo centro de datos con ethernet gigabit entre ellos.
- Ambos servidores dedicados arrancaron en un entorno de rescate basado en Debian Squeeze con herramientas y utilidades adicionales agregadas. También mucho espacio tmp (32 GB de RAM en ambas cajas) para descargar software, instalar paquetes y / o compilar según sea necesario.
- Ambos servidores dedicados tienen aproximadamente 3 TB de espacio utilizable.
- El servidor "fuente" tiene 4 discos de 1.5TB en Hardware RAID-10 con un controlador Adaptec de 4 puertos.
- El servidor "destino" tiene 2 discos de 3TB en hardware RAID-1 con un controlador de puerto Adaptec 2, la misma generación que el otro, pero con un número diferente de puertos.
- El número de bloques utilizables
/dev/sda
difiere en menos de 10 MB, pero la matriz del servidor de destino es, por alguna razón, un poco más pequeña. - Ambas matrices RAID están configuradas para usar toda la superficie del disco de todos los discos constituyentes para crear un único volumen RAID.
- El sistema operativo arranca en modo MBR; no se usa el arranque UEFI.
Lo que quiero hacer:
- Copie, en la capa de bloques, toda la imagen del sistema operativo (esto solo consiste en el cargador de arranque GRUB2 en la tabla de partición GPT, / partición de arranque y / partición) desde el servidor "fuente" al servidor "destino".
- Si es posible , la copia debe realizarse "en vivo": esto significa que no tengo suficiente espacio para almacenar un archivo adecuado de la imagen del disco en el lado de destino, a menos que esté desempacando la imagen del disco en el disco duro como copia que está teniendo lugar . La conexión de ethernet gigabit entre los servidores es lo suficientemente confiable como para que me sienta cómodo con esto y, por supuesto, ejecutaré
fsck
en ambos extremos (origen y destino) para verificar que el sistema de archivos esté bien antes y después de la transferencia. - Si es posible , no transfiera bloques a través de la red, que no son utilizados por los sistemas de archivos constituyentes en cada partición (todas las particiones están formateadas como ext4). Esto se debe a que más del 50% del disco "fuente" es espacio libre en la
/
partición. - Ajuste el tamaño de la
/
partición para que, cuando se copie, se redimensione para ajustarse al tamaño apenas más pequeño del disco de destino. - Una vez que la copia se realiza correctamente, monte cada volumen y arregle las referencias a IP estáticas para reflejar las IP del nuevo servidor. (Puede hacer esto bien sin ninguna otra ayuda)
Mis preguntas:
- ¿Debería calcular primero la diferencia (en bytes) entre el tamaño de
/dev/sda
cada servidor y luego usare2resize
para reducir de forma no destructiva el tamaño de la/
partición en el lado de origen para que se ajuste al espacio del lado de destino? - ¿Debo ejecutar
dd
en el dispositivo de bloque sin formato,/dev/sda
desde el origen hasta el destino (finalizadossh
), o debería crear un diseño de partición equivalente en el destino y ejecutarlodd
en cada partición ? Tenga en cuenta que el manejo de una partición a la vez me deja el problema del gestor de arranque, pero si no lo hago una partición a la vez,dd
debe saber dejar de transferir datos una vez que ha escrito tantos bytes como puede contener el destino (que con suerte "cerrará" el final de la/
partición en el último bloque, que está lógicamente "a la derecha de" todas las otras particiones en el diseño de la partición de la fuente).
Unos cuantos misceláneos. detalles específicos:
- El sistema operativo host en el cuadro de origen es Ubuntu Server 12.04 que ejecuta varios invitados OpenVZ
- Dado que ambos cuadros se inician en rescate, el acceso directo al disco es posible sin esperar ningún cambio en los datos subyacentes por parte del sistema operativo en ejecución.