La replicación es una tecnologín que usan muchas empresas y usuarios para hacer copias de respaldo de sus datos sin interrupciones. Cuando hay una réplica, simplemente significa que el discoB replica al discoA. O, quizá el discoC+D replica al discoA+B. Al margen de la configuración de los discos, lo importante es que la información de un disco o partición está siendo replicada. Más adelante se podría restaurar esa información más fácilmente, hacerse una copia de respaldo sin provocar intrrupciones de servicio o acceso, e incluso almacenarla físicamente en una caja fuerte para datos.
Para empezar, asegúrese de que el sistema tiene dos unidades de disco del mismo tamaño, eb este ejercicio se supone que son discos SCSI de acceso directo (da(4)).
Comience por instalar FreeBSD en el primer disco con sólo dos
particiones. Una debería ser una partición de intercambio,
de dos veces el tamaño de la RAM, y todo el
espacio restante se dedicará al sistema de ficheros raíz
(/
).
Es posible tener particiones aparte para otros puntos de montajes; sin
embargo, esto multiplicará por diez el nivel de dificultad, debido
a la alteración manual de las opciones de bsdlabel(8) y
fdisk(8).
Reinicie y espere a que el sistema se inicie por completo. Una vez
haya finalizado este proceso, ingrese como usuario
root
.
Cree el dispositivo /dev/mirror/gm
y
enlácelo a /dev/da1
:
#
gmirror label -vnb round-robin gm0 /dev/da1
El sistema debería responder con:
Metadata value stored on /dev/da1. Done.
Inicialice GEOM, esto cargará el módulo del
núcleo /boot/kernel/geom_mirror.ko
:
#
gmirror load
Esta orden debería haber creado en el directorio
/dev/mirror
los nodos de
dispositivo gm0
, gm0s1
,
gm0s1a
, y gm0s1c
.
Instale una etiqueta genérica fdisk
y
el código de arranque en el recién creado dispositivo
gm0
:
#
fdisk -vBI /dev/mirror/gm0
Ahora instale la información bsdlabel
genérica:
#
bsdlabel -wB /dev/mirror/gm0s1
Si hay varias slices (rodajas) y particiones, necesitará modificar las opciones de las dos órdenes anteriores. Deben coincidir con la slice y tamaño de partición del otro disco.
Utilice la utilidad newfs(8) para crear un sistema de ficheros
predefinido en nodo de dispositivo gm0s1a
:
#
newfs -U /dev/mirror/gm0s1a
Esto debería haber hecho que el sistema mostrara alguna
información y un puñado de números. Esto es bueno.
Examine la pantalla por si hay algún mensaje de error y monte el
dispositivo en el punto de montaje
/mnt
:
#
mount /dev/mirror/gm0s1a /mnt
Ahora mueva todos los datos del disco de arranque a este nuevo sistema de ficheros. Este ejemplo usa las órdenes dump(8) y restore(8); aunque, dd(1) también debería funcionar en este escenario. Evitamos utilizar tar(1) porque no copiará el código de arranque. De ese modo, el fallo estaría garantizado.
#
dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)
Se debe hacer esto para cada sistema de ficheros. Simplemente ponga el sistema de ficheros adecuado en la ubicación correcta al ejecutar la orden mencionada.
Ahora edite el fichero replicado /mnt/etc/fstab
y elimine o comente el fichero swap
[12]. Cambie la información del otro sistema de ficheros
para que utilice el nuevo disco. Vea el siguiente ejemplo:
# Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1
Ahora cree un fichero boot.conf
tanto en la
partición actual como en la nueva partición raíz.
Este fichero “ayudará” al BIOS
del sistema a arrancar la unidad correcta:
#
echo "1:da(1,a)/boot/loader" > /boot.config
#
echo "1:da(1,a)/boot/loader" > /mnt/boot.config
Lo hemos colcoado en ambas particiones raíz para asegurar un arranque correcto. Si por alguna razón el sistema no pudiera leer en la nueva partición raíz, está disponible un arranque a prueba de fallos.
Ahora agregue la siguiente línea al nuevo
/boot/loader.conf
:
#
echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
Esto le dice a la utilidad loader(8) que cargue el
geom_mirror.ko
durante la inicialización del
sistema.
Reinicie el sistema:
#
shutdown -r now
Si todo ha ido bien, el sistema debería haber arrancado desde
el dispositivo gm0s1a
, y un prompt
login
debería estar a la espera. Si algo fue
mal, consulte la sección posterior de resolución de
problemas. Ahora agregue el disco da0
al
dispositivo gm0
:
#
gmirror configure -a gm0
#
gmirror insert gm0 /dev/da0
La opción -a
le dice a gmirror(8) que
use sincronización automática; por ejemplo, que replique
las escrituras en disco automáticamente. La página de
manual explica como reconstruir y reemplazar discos, aunque utiliza
data
en vez de gm0
.
Si el sistema arranca hasta un prompt similar a:
ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>
Reinicie la máquina utilizando el botón de encendido o el de reset. En el menú de arranque, seleccione la opción seis (6). Esto llevará al sistema a un prompt de loader(8). Cargue el módulo del núcleo manualmente:
OK?load geom_mirror.ko
OK?boot
Si esto funciona, es que por alguna razón el módulo no se cargaba correctamente. Ponga:
options GEOM_MIRROR
en el fichero de configuración del núcleo, recompile y reinstale. Esto debería solucionar el problema.
[12] Debe advertirse que comentar la entrada del fichero swap en
fstab
probablemente le obligará a
reestablecer una manera diferente de habilitar el espacio de
intercambio. Consulte Sección 11.4, “Añadir espacio swap” para
más información.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.