Como clonar e estender para um novo disco no FreeBSD?

Como clonar e estender para um novo disco no FreeBSD?

Um servidor rodando FreeBSD está em produção desde aproximadamente 2004. Recentemente houve uma queda de energia e ao reiniciar ele exibe uma mensagem de erro "... sistema de arquivos cheio".

Naquela época, ele estava em uma unidade de 40 GB, peguei um de 1 TB para substituí-lo. Copiei a unidade com dd e tentei o Gparted, mas parece não reconhecer o sistema de arquivos.

Pergunta - qual é a maneira mais simples de clonar a unidade antiga e redimensionar as partições para usar todo o espaço da nova unidade?

Responder1

Você precisa usar gpart(não gparted) para criar partições e depois colocar sistemas de arquivos na nova partição usando newfs. Em seguida, use dump | restoreou rsyncpara copiar os dados para o novo disco. Finalmente, use gpartpara garantir que haja código de inicialização na unidade. Consulte as páginas de manual desses comandos para obter mais detalhes.

Porém, uma observação: dada a pergunta, acho que o sistema operacional não foi atualizado desde 2004 e não é mais compatível e não recebe atualizações de segurança. Então, realmente, é melhor instalar um novo sistema no novo disco e depois usar dump | restoreou rsyncou cpcopiar manualmente os dados relevantes para o novo disco. Não recomendo colocar o sistema operacional de 2004 novamente em produção.

Responder2

Acabei de fazer isso, embora em um disco do mesmo tamanho com um sistema de arquivos / um pouco menor. Tenho certeza de que o procedimento funcionará com um disco maior.

# 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 -

Meu disco de sistema original tinha blocos defeituosos irrecuperáveis; o novo sistema está limpo. Tive sorte, pois os blocos defeituosos estavam em arquivos não utilizados em /var/db/freebsd-update/files/ e todo esse diretório não é mais necessário (backup de uma atualização do sistema há 6 meses).

informação relacionada