OpenDedup

De Wiki Projeto Root
Ir para navegação Ir para pesquisar

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

https://youtu.be/nBxthHuF7sU

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>