Backup e restauração usando dd e gzip

1

Eu vi vários posts discutindo o uso do dd para criar uma imagem de uma unidade e apenas armazenar 'dados usados'. Antes de colocar o problema / questão, vamos supor algumas coisas.

Pressupostos

  1. A unidade para clonar / image é / dev / sda
  2. / dev / sda é 10TBs
  3. O espaço usado em / dev / sda é de 1 TB
  4. O armazenamento da imagem é em algum local remoto montado no CIFS

Pergunta / Problema

Usar algo como cp com a opção --sparse=always em conjunto com dd deve produzir um arquivo esparso para que o arquivo apareça como 1 GB:

cp --sparse=always <(dd if=/dev/sda bs=8M) /mnt/remote/location/disk.img

Como alternativa abaixo, você deve compactar todo o espaço zerado:

dd if=/dev/sda1 | gzip -c > /mnt/remote/location/disk.img.gz

Então, qual é o impacto de um arquivo de imagem esparsa na restauração? Os dados transferidos serão de 1 GB ou 10 GB, incluindo o espaço vazio / zerado percebido? Isso é obviamente uma consideração para avaliar a possível carga de rede e o tempo para restauração.

P.S. Eu entendo que existem outras opções, como Clonezilla e algo como ddrescue permitirá a capacidade de currículo, mas a questão é especificamente sobre o uso de dd no contexto acima.

Obrigado.

    
por Sapient Saxon Saboo 11.03.2017 / 15:24

2 respostas

1

Gravando em um compartilhamento CIFS do Windows SMB1

A palavra da Microsoft is: "Nos sistemas de arquivos Windows NTFS, os arquivos não são tornados esparsos por padrão. O aplicativo ou usuário precisa marcar explicitamente o arquivo esparso através do código de controle FSCTL_SET_SPARSE." Infelizmente o Linux não marca esses arquivos via SMB1. Alegadamente se você tornar o arquivo esparso no lado do Windows (com Cygwin dd if=/dev/zero of=BigFile bs=1M count=1 seek=150000 ), então você pode continuar a escrever é tão esparso do Linux. Eu acredito que a leitura não será otimizada.

Experimentos

Com o RHEL6 coreutils-8.4, o cp --sparse=always local_file /mnt/cifs/file_on_cifs não escreve um arquivo esparso. Ao ler um arquivo CIFS, ele lê as áreas zeradas (não otimização do fiemap ). No RHEL6, tanto o backup quanto a restauração transferirão todo o arquivo pela rede; melhor gzip.

Mesma situação com o coreutils-8.25 no Ubuntu 14x.

Gravando em um compartilhamento do Windows CIFS SMB2 / SMB3

Existe um patch de 2014 "Adicionar suporte de arquivo esparso às montagens de SMB2 / SMB3" , portanto, esperanças são arquivos esparsos serão suportados em compartilhamentos montados do Windows 8.1 e outras plataformas.

Escrevendo para um compartilhamento CIFS do Linux

Quando você monta no cliente Linux um compartilhamento Samba de algum servidor Linux, pode gravar arquivos esparsos, mesmo no SMB1. Não há otimização de leitura.

    
por 11.03.2017 / 16:24
0

Você pode usar o ddrescue com sua opção -S :

-S --sparse Use sparse writes for outfile. (The blocks of zeros are not actually allocated on disc). May save a lot of disc space in some cases. Not all systems support this. Only regular files can be sparse.

Você pode emitir algo semelhante a ddrescue /dev/sda1 /path/to/outfile

    
por 11.03.2017 / 20:44