Solução de backup para backup de terabytes e muitos arquivos estáticos no servidor linux?

4

Qual ferramenta ou solução de backup você usaria para fazer backup de terabytes e muitos arquivos em um servidor linux de produção?
Note que os arquivos são todos diferentes e quase nunca modificados, e o uso é principalmente adicionando arquivos, então o volume de dados hoje está crescendo 3TB o tempo todo em torno de + 15GB / dia.

Por favor, não responda o rsync. As ferramentas básicas do Unix não são suficientes, o rsync não mantém o histórico, o rdiff-backup falha miseravelmente de tempos em tempos e atrapalha o histórico. Além disso, estes são todos backups baseados em arquivos, que colocam muito IOwait apenas para procurar diretórios e consultar stat (). Mas eu acho, exceto R1Soft CDP, não há como evitar isso.

Nós testamos o backup do R1Soft CDP, que é um backup em nível de bloco, e ele se mostrou bom e eficiente para todos os nossos outros servidores, mas sistematicamente falha no servidor com 3 terabytes e milhões de arquivos. Isso já é mais de 2 meses que os engenheiros da R1Soft e datacenter estão jogando um jogo de bola quente ... e ainda não há backup, exceto rsync regular

Nunca experimentamos grandes soluções comerciais, exceto o R1Soft CDP, já que ele foi fornecido como um serviço opcional pelo data center que hospeda nossos servidores.

    
por Alex F 29.09.2010 / 10:35

7 respostas

2

Acho que a única solução para você é backups em nível de bloco
Você pode escrever scripts que usam instantâneos do LVM (ou mesmo dm-snapshots ) de baixo nível e transferi-los para o servidor de armazenamento

Você também pode dar uma olhada no projeto Zumastor e seus ddsnap utilitário

PS. Os servidores Solaris / FreeBSD têm o ZFS que pode automatizar esse processo usando instantâneos incrementais + envio / recebimento do ZFS

    
por 29.09.2010 / 15:34
2

Eu tentei muitas soluções de backup, iniciadas com o rsync e o rdiff-backup. Também puro tar-ing e bash scripts. Mas bacula bate todos eles. É baseado em design modular, tenho cerca de 8 PCs em rede de backup e crescendo.

Para quem eu recomendei bacula, eles estavam mais do que felizes em finalmente a sua casa.

    
por 29.09.2010 / 13:48
1

Você não diz o que deseja fazer o backup para ; fita ou disco? Assumindo o primeiro, endosso as recomendações para o bacula. Eu uso-o em vários sites diferentes, em um dos quais eu tenho que dirigir um robô LTO2 de 60 unidades com 60 slots, com um total de talvez 50 TB de armazenamento em fita distribuído em 120 fitas, e o maior servidor com cerca de 4 TB de disco . O Bacula é muito, muito bom quando está configurado corretamente.

Backups de disco eu não posso comentar de forma útil, já que eu sou um gravador de estilo antigo. Como você mencionou especificamente a manutenção do histórico, esperaria que estivesse aberto a backups de mídia removível (ou seja, fita).

    
por 11.10.2010 / 20:13
0

Tente BackupPC . Para mim, funciona muito bem com alguns terabytes de dados e dezenas de milhões de arquivos (cerca de 100.000 a 500.000 dos que mudam diariamente). OK, o BackupPC faz usar o rsync e é baseado em arquivos, então isso pode ser um show-stopper para você.

Bacula é outro popular, e com certeza tem o slogan mais legal de todos eles. E ainda não usa o rsync! : -)

    
por 29.09.2010 / 10:42
0

O EMC Networker tem uma opção chamada SnapImage que deve aumentar a velocidade de backup para o seu tipo de dados.

Eu só ouvi falar sobre isso, mas eu nunca tentei, desculpe ...

    
por 29.09.2010 / 11:39
0

rsnapshot

ou, se você quiser mais controle; Basta hackear um pequeno script bash para fazer a mesma coisa: um cp -al , alguns mv e rsync .

eu uso em um servidor de 30 TB muito ocupado com cerca de 5 milhões de arquivos, e funciona maravilhosamente.

    
por 29.09.2010 / 16:38
0

Tente usar o mirrordir . Com um roteiro apropriado, parece ser a solução ideal para você. Ele apenas atualiza os arquivos que foram alterados (modificados, criados ou excluídos), mas também tem a capacidade de preservar arquivos antigos. Não tenho certeza de como essa função funciona, mas não deve ser difícil. Aqui está o script que eu uso: (Editado um pouco para maior clareza. Espero não ter problemas com as edições)

#! /bin/bash

logfile="/home/share/Backup-log.txt"

echo "" | unix2dos >> $logfile
echo 'date'"   /bin/mirror_backup started" | unix2dos >> $logfile

echo ""
echo ""
echo "mirror_backup   Automatically archive a list of"
echo "                directories to a storage location"

# Mount mirror drive
mount -o remount,rw /mirror
xstatus=$?
if [ $xstatus -ne 0 ]
then
        mount -o remount,rw /mirror 2>&1 | unix2dos >> $logfile
        echo 'date'"   Mount failed, aborting /bin/mirror_backup..." 1>&2
        echo 'date'"   Mount failed, aborting /bin/mirror_backup..." | unix2dos >> $logfile
        mount -o remount,ro /mirror 2>> /dev/null
        exit $xstatus
fi

# Define Source Directories
sourcelist="/home /etc /root"
dest="/mirror"

for dir in $sourcelist
do
        if [ ! -d ${dest}${dir} ]
        then
                mkdir -p ${dest}${dir} 2>&1 | unix2dos >> $logfile
#               chown mirror:mirror ${dest}${dir}
        fi
done


# Mirror directories

for dir in $sourcelist
do
        # Delete old files
        echo ""
        echo "Deleting old files in "${dest}${dir}
        mirrordir --nice 0  --exclude-from /root/exclude-list --only-delete ${dir} ${dest}${dir} 2>> /dev/null

        # Run full mirror
        echo "Mirroring "${dir}" to "${dest}${dir}
        mirrordir --nice 0 --restore-access --access-times --exclude-from /root/exclude-list ${dir} ${dest}${dir} 2>&1 | unix2dos >> $logfile

done

# Perform miscellaneous tasks

report="/home/share/disk-report.txt"
echo "Report generated on "'date' | unix2dos > $report
echo "" | unix2dos >> $report
echo "RAID drive status:" | unix2dos >> $report
cat /proc/mdstat | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk usage per slice:" | unix2dos >> $report
df -h | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk Usage per User:" | unix2dos >> $report
du -h --max-depth 1 /home | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk Usage on Share drive:" | unix2dos >> $report
du -h --max-depth 1 /home/share | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Filesystem Usage Overview:" | unix2dos >> $report
du -h --max-depth 1 / | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Report Complete" | unix2dos >> $report

echo ""
echo "mirror_backup complete."

# Unmount Mirror Drive
mount -o remount,ro /mirror 2>&1 | unix2dos 2>> $logfile
echo 'date'"   /bin/mirror_backup completed successfully" | unix2dos >> $logfile

exit 0

Sem alterações no commit (segundo run-through, por exemplo), leva cerca de 5-7 minutos para varrer 1,5 TB de arquivos. Claro, é muito mais lento na primeira execução.

A propósito, este script foi escrito por mim para meu uso no meu servidor pessoal em casa. Enquanto alguém é absolutamente livre para usá-lo ou modificá-lo por si mesmo, eu não estou fazendo absolutamente nenhuma garantia ou garantia. É grátis, então você recebe o que você paga. Espero que ajude, no entanto!

    
por 11.10.2010 / 19:57