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>