Solución 1:
Opciones para acceder rápidamente y realizar copias de seguridad de millones de archivos
Tomar prestado de personas con problemas similares
Esto suena mucho como un tipo de problema más fácil que enfrentan los servidores de noticias de USENET y los proxies web de almacenamiento en caché:cientos de millones de archivos pequeños a los que se accede aleatoriamente. Es posible que desee tomar una pista de ellos (excepto que, por lo general, nunca tienen que realizar copias de seguridad).
http://devel.squid-cache.org/coss/coss-notes.txt
http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=4074B50D266E72C69D6D35FEDCBBA83D?doi=10.1.1.31.4000&rep=rep1&type=pdf
Obviamente, la naturaleza cíclica del sistema de archivos de noticias cíclicas es irrelevante para usted, pero el concepto de nivel inferior de tener múltiples archivos/dispositivos de disco con imágenes empaquetadas y un índice rápido de la información que proporciona el usuario para buscar la información de ubicación es muy apropiado.
Sistemas de archivos dedicados
Por supuesto, estos son solo conceptos similares a los que la gente estaba hablando sobre la creación de un sistema de archivos en un archivo y montarlo sobre bucle invertido, excepto que puede escribir su propio código de sistema de archivos. Por supuesto, dado que dijo que su sistema era de lectura en su mayoría, en realidad podría dedicar una partición de disco (o partición lvm para flexibilidad en el tamaño) a este único propósito. Cuando desee realizar una copia de seguridad, monte el sistema de archivos de solo lectura y luego haga una copia de los bits de partición.
LVM
Mencioné LVM anteriormente como útil para permitir el tamaño dinámico de una partición para que no necesite hacer una copia de seguridad de mucho espacio vacío. Pero, por supuesto, LVM tiene otras características que pueden ser muy aplicables. Específicamente, la funcionalidad de "instantánea" que le permite congelar un sistema de archivos en un momento en el tiempo. Cualquier rm -rf
accidental o lo que sea que no perturbe la instantánea. Dependiendo exactamente de lo que intente hacer, eso podría ser suficiente para sus necesidades de copias de seguridad.
RAID-1
Estoy seguro de que ya está familiarizado con RAID y probablemente ya lo use para la confiabilidad, pero RAID-1 también se puede usar para copias de seguridad, al menos si está usando RAID de software (puede usarlo con RAID de hardware, pero eso en realidad le da menor confiabilidad porque puede requerir el mismo modelo/controlador de revisión para leer). El concepto es que usted crea un grupo RAID-1 con un disco más de lo que realmente necesita conectado para sus necesidades normales de confiabilidad (por ejemplo, un tercer disco si usa el software RAID-1 con dos discos, o quizás un disco grande y un disco duro). RAID5 con discos más pequeños con un software RAID-1 encima del hardware RAID-5). Cuando llegue el momento de realizar una copia de seguridad, instale un disco, solicite a mdadm que agregue ese disco al grupo de incursión, espere hasta que indique que está completo, solicite opcionalmente una limpieza de verificación y luego retire el disco. Por supuesto, dependiendo de las características de rendimiento, puede tener el disco instalado la mayor parte del tiempo y solo quitarlo para intercambiarlo con un disco alternativo, o puede tener el disco instalado solo durante las copias de seguridad).
Solución 2:
Podría montar un sistema de archivos virtual utilizando el administrador de bucle invertido, pero si bien esto aceleraría el proceso de copia de seguridad, podría afectar las operaciones normales.
Otra alternativa es hacer una copia de seguridad de todo el dispositivo usando dd. Por ejemplo, dd if=/dev/my_device of=/path/to/backup.dd
.
Solución 3:
Como probablemente sepa, su problema es la localidad. Una búsqueda de disco típica tarda unos 10 ms. Así que simplemente llamar a "stat" (o abrir()) en 10 millones de archivos colocados al azar requiere 10 millones de búsquedas, o alrededor de 100000 segundos, o 30 horas.
Por lo tanto, debe colocar sus archivos en contenedores más grandes, de modo que el número relevante sea el ancho de banda de su unidad (50-100 MB/seg para un solo disco, por lo general) en lugar de su tiempo de búsqueda. También para que pueda lanzarle un RAID, lo que le permite aumentar el ancho de banda (pero no reducir el tiempo de búsqueda).
Probablemente no le estoy diciendo nada que no sepa, pero mi punto es que su idea de "contenedor" definitivamente resolverá el problema, y casi cualquier contenedor servirá. Es probable que los montajes de loopback funcionen tan bien como cualquier otra cosa.
Solución 4:
Hay un par de opciones. El más simple, y debería funcionar con todos los sistemas de archivos de Linux, es dd
copia toda la partición (/dev/sdb3
o /dev/mapper/Data-ImageVol
) a una sola imagen y archivar esa imagen. En caso de restaurar archivos singulares, monte la imagen en loopback (mount -o loop /usr/path/to/file /mountpoint
) y copie los archivos que necesita. Para una restauración de partición completa, puede invertir la dirección del dd
inicial comando, pero realmente necesita una partición de tamaño idéntico.
A juzgar por su caso de uso, supongo que las restauraciones de archivos individuales son un evento muy poco frecuente, si es que alguna vez ocurren. Es por eso que una copia de seguridad basada en imágenes realmente tiene sentido aquí. Si necesita realizar restauraciones individuales con más frecuencia, usar instantáneas LVM por etapas será mucho más conveniente; pero aún necesita hacer la copia de seguridad basada en imágenes para esos desastres críticos "perdimos todo". Las restauraciones basadas en imágenes tienden a ser muchas más rápido que las restauraciones basadas en tar simplemente porque solo restaura bloques, no incurre en un poco de operaciones de metadatos con cada fopen/fclose, y también puede ser una operación de disco altamente secuencial para aumentar aún más la velocidad.
Alternativamente, como mencionó el video de Google @casey a mitad de camino, XFS es un gran sistema de archivos (aunque complejo). Una de las mejores utilidades con XFS es xfsdump
utilidad, que volcará un sistema de archivos completo en un solo archivo, y generalmente lo hará más rápido que tar
pueden. Es una utilidad específica del sistema de archivos, por lo que puede aprovechar las funciones internas de fs de formas que tar no puede.
Solución 5:
Le sugiero que primero intente actualizar a EXT4, si aún no lo está ejecutando.
Google ha investigado mucho sobre por qué EXT4 es una buena idea.
Después de eso, debe considerar la implementación de una arquitectura de sistema de archivos distribuidos. Por ejemplo:
- http://www.xtreemfs.org/
- http://code.google.com/p/kosmosfs/
- http://hadoop.apache.org/hdfs/