OpenDedup
Sobre
Olá! Visitante, reunimos aqui, informações sobre a ferramenta OpenDedup, não sabe o que é Dedup ou Deduplicação?
Deduplicação vem do termo em inglês deduplication que é o processo de analisar identificar e remover duplicidade nos dados, diminuindo assim a quantidade de informação a ser manipulada e armazenada. A deduplicação surgiu para tirar algum benefício do fato que existirem arquivos parecidos, como réplicas e arquivos com diferentes versões. Em uma réplica, o software de deduplicação pode apenas gravar um dos arquivos e criar links para os demais. Em arquivos de diferentes versões, os pedaços de arquivos comuns são gravados apenas uma vez, sendo criados links nos demais arquivos. A ideia é fazer com que no sistema de arquivos nunca exista um cluster contendo os mesmos dados. Com isso, ganha-se espaço em disco e diminuição no tempo de backup.
Vídeo
OpenDedup
Desde 2010, o OpenDedupe desenvolveu ativamente o sistema de arquivos SDFS e o dispositivo Datish NAS que o usa. O SDFS executa a desduplicação em linha para armazenamento local ou em nuvem e tem muitos recursos avançados que permitem aos usuários otimizar o uso de armazenamento, dimensionar e proteger grandes quantidades de dados. O SDFS é um ótimo ajuste para casos de uso como backup, retenção de longo prazo, virtualização e dimensionamento de armazenamento.
Fonte: http://opendedup.org/
Instalação
Instalação da Ferramenta de Deduplicação OpenDedup
1 - Download
wget http://www.opendedup.org/downloads/sdfs-latest.deb
2 - Instalação do binário
dpkg -i sdfs-latest.deb
3 - Instalação das dependências
apt-get -f install && apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
4 - Modificações dos limites
echo "* hard nofile 65535" >> /etc/security/limits.conf echo "* soft nofile 65535" >> /etc/security/limits.conf
Configurações
5 - Modificação do arquivo mount.sdfs
- Backup
cp /sbin/mount.sdfs /sbin/mount.sdfs.ori
- Alterando o arquivo original
nano /sbin/mount.sdfs
- Apague todo o conteúdo original e deixe como abaixo:
#!/bin/bash
#modprobe fuse > /dev/null
BASEMEMORY="1000"
CFG=""
MPTG=3
LMPTG=2
MU="M"
EXEC="/usr/share/sdfs/jsvc"
BASEPATH="/usr/share/sdfs"
PF="sdfs-ncfg.pid"
if [[ {$1:0:1} == '-' ]]; then
while getopts ":v:" opt; do
case $opt in
v)
CFG="/etc/sdfs/$OPTARG-volume-cfg.xml"
PF="$OPTARG.pid"
;;
z)
MEM=$OPTARG
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
else
CFG="/etc/sdfs/$1-volume-cfg.xml"
PF="$1.pid"
fi
if [ ! -n "$MEM" ]; then
if [ -n "$CFG" ] && [ -f "$CFG" ]; then
lm=$(echo 'cat //subsystem-config/local-chunkstore/@low-memory' | xmllint --shell "$CFG" | grep -v ">" | cut -f 2 -d "=" | tr -d - | tr -d \");
bm=$(echo 'cat //subsystem-config/io/@chunk-size' | xmllint --shell "$CFG" | grep -v ">" | cut -f 2 -d "=" | tr -d - | tr -d \");
th=$(echo 'cat //subsystem-config/io/@write-threads' | xmllint --shell "$CFG" | grep -v ">" | cut -f 2 -d "=" | tr -d - | tr -d \");
ac=$(echo 'cat //subsystem-config/local-chunkstore/@allocation-size' | xmllint --shell "$CFG" | grep -v ">" | cut -f 2 -d "=" | tr -d - | tr -d \");
cm=$(((bm*th)/1024));
if [ $lm == "true" ]; then
MEMORY=$(((ac/10737418240*LMPTG)+BASEMEMORY+cm))
else
MEMORY=$(((ac/10737418240*MPTG)+BASEMEMORY+cm))
fi
MEMORY=$((MEMORY+((bm*th)/1024)))
fi
else
MEMORY=$MEM
fi
LD_PRELOAD="${BASEPATH}/bin/libfuse.so.2" $EXEC -server -outfile '&1' -errfile '&2' -Djava.library.path=${BASEPATH}/bin/ -home ${BASEPATH}/bin/jre -Dorg.apache.commons.logging.Log=fuse.logging.FuseLog -Xss2m \
-wait 99999999999 -Dfuse.logging.level=INFO -Dfile.encoding=UTF-8 -Xmx$MEMORY$MU -Xms$MEMORY$MU \
-XX:+DisableExplicitGC -pidfile /var/run/$PF -XX:+UseG1GC -Djava.awt.headless=true \
-cp ${BASEPATH}/lib/commons-daemon-1.0.15.jar:${BASEPATH}/lib/sdfs.jar:${BASEPATH}/lib/* fuse.SDFS.MountSDFS "$@"
Utilização
6 - Criando o pool (Local)
mkfs.sdfs --volume-name=pool0 --volume-capacity=20GB
7 - Criando o ponto de montagem
mkdir -p /mnt/Backup
8 - Montando o pool
mount.sdfs pool0 /mnt/Backup
9 - Montando na inicialização do sistema
nano /etc/fstab pool0 /mnt/Backup sdfs defaults 0 0
10 - Verificando ponto de montagem
df -h cd /mnt/Backup
11 - Copiando arquivos para o ponto de montagem e verificando integridade
md5sum /etc/sdfs/pool0-volume-cfg.xml cp /etc/sdfs/pool0-volume-cfg.xml /mnt/Backup md5sum /mnt/Backup/pool0-volume-cfg.xml
Extras
12 - Criando pool Remoto (AWS)
mkfs.sdfs --volume-name=pool1 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>