5 votos

de desduplicación y de la indexación de directorios de imágenes a través de 150 máquinas de linux

Tengo un cliente con 150 servidores Linux se extienden sobre los diversos servicios en la nube y los datos físicos de los centros. Gran parte de esta infraestructura se adquiere proyectos/equipos y pre-existentes servidores/instala.

El cliente es en gran parte sobre el procesamiento de la imagen, y muchos de los servidores tienen gran SAN o local de los arrays de disco con millones de jpeg/png archivos.

Hay una configuración del agente de gestión de cada cuadro, puedo ver que muchos de los discos son de 100%, algunos son bastante vacío, y hay una gran cantidad de la duplicación de los datos.

El cliente ahora tiene acceso a un CDN. Pero por el momento sólo la enumeración de lo que es posible es una tarea de enormes proporciones.

Existen herramientas para crear índices útiles de todos estos datos?

Veo a herramientas como GlusterFS para la gestión de estos sistemas de ficheros distribuidos, y Hadoop HDFS

Me pregunto si puedo usar las herramientas de indización de estos sistemas, sin la aplicación de la subyacente herramientas de administración de volumen.

Cuál debería ser el punto de partida para la generación de un índice de potencial de de-duplicación de los candidatos?

2voto

Derek Pressnall Puntos 478

La forma más fácil que he encontrado para encontrar archivos duplicados a través de un montón de sistemas es crear una lista de archivos con sus sumas MD5 para cada sistema, combinarlos en un solo archivo, a continuación, utilizar ordenar + un guión AWK para encontrar los duplicados, de la siguiente manera:

En primer lugar, ejecute esta en cada uno de los sistemas, en sustitución de la ruta de acceso según corresponda:

#!/bin/sh
find /path/to/files -type f -exec md5sum {} \; |\
while read md5 filename
do
    echo -e "${HOSTNAME}\t${md5}\t${filename}"
done >/var/tmp/${HOSTNAME}.filelist

De este modo se genera un archivo /var/tmp/nombre de host.filelist en cada host, lo que usted tendrá que copiar a una ubicación central. Una vez que hayas reunido todos estos filelists, a continuación, puede ejecutar el siguiente:

#!/bin/sh
export LANG=C
cat *.filelist |sort -t$'\t' +1 -2 |\
awk '
BEGIN {
    FS = "\t"
    dup_count = 0
    old_md5 = ""
}

{
    if ($2 == old_md5) {
        if (dup_count == 0 ) {
            printf("\n%s\n", old_inline)
        }
        printf("%s\n", $0)
        dup_count++
    }
    else {
        dup_count = 0
    }
    old_md5 = $2
    old_inline = $0
}'

Esto debe generar un archivo de salida que los grupos en los bloques de los archivos que los contenidos estén duplicados, ya sea dentro de la misma máquina, o a través de los ejércitos.

Ah, y como una alternativa a la primera secuencia de comandos (que se ejecute en cada host), consulte con el sistema de copia de seguridad en uso, para ver si se puede conseguir algo similar desde el informe de copia de seguridad (algo que incluye md5 y el nombre de archivo, al menos).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: