É possível dd o disco atual do qual você é inicializado?

23

Eu tenho uma cópia do FreeNAS executando um disco USB ativo. E eu gostaria de fazer um backup disso.

Ao tentar evitar a quebra de um sistema perfeitamente funcional, eu seria capaz de ddacessar o disco enquanto o sistema operacional estivesse em execução?

Ou eu teria que desligar a máquina e executar ddoutra máquina?

stuartc
fonte

Respostas:

16

Você pode executar ddno disco em execução. Isso deve ser evitado quando houver grandes alterações na estrutura do disco. Além disso, você deve fschko destino quando terminar. Quanto mais silencioso o sistema estiver durante o backup, melhor.

A execução de um backup a frio (sistema de arquivos desmontado) é a melhor opção se você deseja usar o `dd '.

Existem melhores opções para fazer backup de um sistema em execução.

  • tarou cpiolerá os arquivos e lida razoavelmente bem com os arquivos abertos. Você provavelmente perderá algumas das alterações que ocorrem durante o backup.
  • rsyncse comporta como tarem relação a arquivos abertos e alterações ausentes durante o backup. Ele pode ser usado para fazer o backup inicial e faz backups incrementais muito bem. Ao executar um backup incremental, ele pode pular a cópia de partes inalteradas do arquivo.

Se você estiver fazendo backup de um sistema de arquivos com arquivos de dados do banco de dados, investigue o suporte para backups ativos.

BillThor
fonte
Bons pontos sobre o uso de ferramentas de nível superior - tar, cpioe rsynctodos funcionam no sistema de arquivos , portanto isso pode ser apropriado. dd, OTOH, trabalha diretamente com blocos de disco, ignorando o FS.
Piskvor 4/03/12
16

É tecnicamente possível (como em "dar um tiro no pé"), mas altamente desaconselhável, especialmente se alguma partição do disco for gravável.

Imagine este cenário:

  • dd começa a ler o disco no início e caminha alegremente até o fim.
  • Quando está na metade do caminho, o sistema operacional grava um arquivo no disco. O arquivo está um pouco fragmentado - uma parte está fisicamente localizada no início do disco e outra no final.
  • Não há problema para o sistema operacional - ele grava o arquivo muito bem e o expulsa de seus caches de gravação; agora está escrito corretamente no disco.
  • O problema está no seu backup: ddjá passou e copiou a primeira parte do arquivo; portanto, ele captura um estado inconsistente quando chega à segunda parte - cada parte será de uma versão diferente!

Se você é capaz de remontar todas as partições no disco USB como somente leitura, esse problema não deve ocorrer (ênfase em " não deveria "); isso requer uma preparação inicial significativa / preparação offline e configuração de tempo de inicialização para a /partição - acho que você normalmente não pode remontar /o tempo de execução imediatamente, haverá várias coisas pendentes que exigem r / w Acesso.

Portanto, a execução da cópia provavelmente não interromperá o sistema em execução, mas não fornecerá um backup viável , tornando a tarefa discutível. Eu recomendo fazer a cópia offline - o que exigiria o desligamento da máquina.

Piskvor
fonte
11
Obrigado por uma ótima resposta, eu esperava uma saída fácil, mas você está correto, não consigo imaginar um bom cenário surgindo do que você apontou.
stuartc
11
@stuartc: Exigiria uma grande cooperação do driver FS - informando o processo de cópia de todas as alterações ocorridas desde o início da cópia e se ela chega a um estado consistente. Se esse for um problema grave, procure sistemas de arquivos que suportem snapshots, como btrfs.
Piskvor 4/03/12
4

Você nunca deve criar uma imagem de uma partição montada. Não importa se você inicializou ou não.

Mas será difícil tentar desmontar a partição da qual você inicializou.

Der Hochstapler
fonte
4

Para isso, eu uso dump(8)no FreeBSD. Por exemplodump -auLf /mnt/some-other-disk/root.dmp /

A -Lopção permite a cópia de um sistema de arquivos ao vivo tirando uma captura instantânea.

Os despejos podem ser restaurados usando restore(8).

Pode funcionar apenas com UFS; Eu não tenho certeza sobre isso.

maxelost
fonte
0

É incrível quantas dicas de backup não mencionam o seguinte:

O sistema linux (e a maioria dos sistemas operacionais com vários threads) geralmente precisa estar inativo enquanto você faz o backup e a restauração.

Isso é mais facilmente alcançado ao não executar um sistema operacional enquanto você tenta imaginá-lo.

Para backup e restauração, ele pode ser montado e, de fato, provavelmente deve ser, mas não pelo sistema operacional em execução como raiz (/).


Motivo: em todo sistema operacional multitarefa, incluindo o linux, há threads de código simultâneos em execução que afetam os arquivos, o que torna impossível executar backups ou restaurações precisas em todo o sistema.

Em particular, enquanto você captura arquivos, pode haver alguma outra tarefa de criação ou exclusão de arquivos, para que seu backup não represente uma imagem verdadeira e precisa do sistema de arquivos a qualquer momento. Se você tentar restaurar esse backup, haverá corrupção de dados, o que causará falhas e outras anomalias.


Opções: Os backups precisam ser feitos por software e / ou sistemas de disco especiais (como o Acronis no Windows, por exemplo, que pode fazer backup de um sistema operacional em execução) ou por um sistema operacional secundário externo acessando os arquivos do sistema operacional em execução que você está tentando backup ou restauração.

!!! Portanto, quando você vê páginas da Web dizendo para você usar o Deja-dup, por exemplo, para fazer seus backups, isso só funciona /homee então APENAS se você não estiver executando nenhum programa que /homeesteja afetando enquanto estiver executando o deja-dup. (E mesmo assim, convém cruzar os dedos, a menos que saiba realmente o que pode tocar seus arquivos por meio de um daemon.)

Vista elíptica
fonte
0

Eu já faço isso com sucesso no ambiente de teste, com fsck e rsync no final para melhorar as chances de uma boa cópia do dispositivo.

João
fonte
11
Você pode explicar como você usa rsyncpara melhorar um dump de disco inteiro (sistema de arquivos inteiro) feito com  dd? (E, se você tiver acesso rsync, por que não a usaria como sua ferramenta de backup principal, e não como uma ferramenta secundária secundária?)……………………………… Por favor, não responda nos comentários; edite  sua resposta para torná-la mais clara e completa.
Scott