¿Cómo clonar y extender a un disco nuevo en FreeBSD?

¿Cómo clonar y extender a un disco nuevo en FreeBSD?

Un servidor que ejecuta FreeBSD ha estado en producción desde aproximadamente 2004. Recientemente hubo un corte de energía y al reiniciar muestra un mensaje de error "...sistema de archivos lleno".

Estaba en una unidad de 40 GB de ese entonces, tomé una de 1 TB para reemplazarla. Copié la unidad con dd y luego probé Gparted pero parece no reconocer el sistema de archivos.

Pregunta: ¿cuál es la forma más sencilla de clonar la unidad antigua y cambiar el tamaño de las particiones para utilizar todo el espacio de la nueva unidad?

Respuesta1

Debe usar gpart(no gparted) para crear particiones y luego colocar un sistema de archivos en la nueva partición usando newfs. Luego use dump | restoreo rsyncpara copiar los datos al nuevo disco. Finalmente, utilícelo gpartpara asegurarse de que haya un código de inicio en la unidad. Consulte las páginas de manual de estos comandos para obtener más detalles.

Sin embargo, una nota: dada la pregunta, supongo que el sistema operativo no se ha actualizado desde 2004 y ya no es compatible y no recibe actualizaciones de seguridad. Entonces, realmente es mejor instalar un nuevo sistema en el nuevo disco y luego usar dump | restoreo para copiar manualmente rsynclos cpdatos relevantes al nuevo disco. No recomiendo volver a poner en producción el sistema operativo de 2004.

Respuesta2

Acabo de hacer esto, aunque en un disco del mismo tamaño con un sistema de archivos / ligeramente más pequeño. Estoy bastante seguro de que el procedimiento funcionará con un disco más grande.

# newdisk=ada1
# echo $newdisk
ada1
# gpart create -s GPT $newdisk
# gpart add -t freebsd-boot -i 1 -a 4K -s 512K -l gptboot ${newdisk}
ada1p1 added
# gpart bootcode -p /boot/gptboot -i 1 ${newdisk}
partcode written to ada1p1
# gpart add -t freebsd-ufs -a 4K -s 70G -i 2 -l fbsdroot $newdisk
ada1p2 added
# gpart add -t freebsd-swap -a 4K -i 3 -l fbsdswap $newdisk
ada1p3 added
# gpart show
=>       34  156249933  ada0  GPT  (75G)
         34       1024     1  freebsd-boot  (512K)
       1058  148896768     2  freebsd-ufs  (71G)
  148897826    7352140     3  freebsd-swap  (3.5G)
  156249966          1        - free -  (512B)

=>       40  156301408  ada1  GPT  (75G)
         40       1024     1  freebsd-boot  (512K)
       1064  156300384     2  freebsd-ufs  (75G)

=>       40  156301408  diskid/DISK-5JVD21RN  GPT  (75G)
         40       1024                     1  freebsd-boot  (512K)
       1064  146800640                     2  freebsd-ufs  (70G)
  146801704    9499744                     3  freebsd-swap  (4.5G)
# newfs -U /dev/ada1p2
...
# mkdir /mnt/newsys
Reboot system into single-user mode; it should come up read-only
# mount /dev/ada1p2 /mnt/newsys
# cd /mnt/newsys
dump -0 -f - /dev/ada0p2 | restore -r -Dv -f -

El disco de mi sistema original tenía bloques defectuosos irrecuperables; el nuevo sistema está limpio. Tuve suerte, ya que los bloques defectuosos estaban en archivos no utilizados en /var/db/freebsd-update/files/ y todo ese directorio ya no es necesario (copia de seguridad de una actualización del sistema hace 6 meses).

información relacionada