Pregunta, problema

Me gustaría conservar el espacio en disco, ¿cómo puedo consolidar y compartir el almacenamiento de los archivos de datos CRX?

Nota: el mismo método puede aplicarse a las instancias de CQ5 WCM versión 5.2.1

Respuesta y resolución

Una forma de preservar el espacio de disco en su entorno es compartir el directorio de almacenamiento de datos CRX a través de una red compartida entre múltiples instalaciones de CRX.

ADVERTENCIA: Este proceso requiere que mueva su directorio datastore a una unidad de red compartida. Si está moviendo su directorio datastore de una carpeta local a un directorio de red compartido, entonces experimentará una pérdida considerable de rendimiento. Considere esto antes de implementar este proceso y sopese los beneficios en consecuencia.

En primer lugar, ¿qué es el almacén de datos?

El CRX utiliza el almacén de datos para almacenar grandes valores binarios. Normalmente todos los datos de nodos y propiedades se almacenan en un gestor de persistencia, pero para los binarios grandes, por ejemplo, el tratamiento especial puede mejorar el rendimiento y reducir el uso del disco.

Combinar el almacén de datos entre múltiples instancias CRX

Considere un escenario donde usted tiene dos instancias de CRX, A y B (no importa si es un autor o una publicación). A se instala bajo /opt/day/crxA y B bajo /opt/day/crxB. En una instalación no agrupada predeterminada de CRX, el almacén de datos se almacena en <ruta a instancia>/crx-quickstart/repository/shared/repository/datastore.

Tenga en cuenta que la ruta de su directorio “shared” puede ser diferente si ha configurado un directorio “shared” del cluster. El almacén de datos se aloja en <shared path>/repository/datastore.

Instrucciones: Copie y consolide/combine los archivos de la instancia A y los almacenes de datos de la instancia B, por ejemplo (si A y B están en dos servidores físicos diferentes y utilizan una red común /mnt/nfsshare1):

en el servidor A
%> cp -R /opt/day/crxA/crx-quickstart/repository/shared/repository/datastore /mnt/nfsshare1/combined-datastore

en el servidor B
%> cp -R /opt/day/crxB/crx-quickstart/repository/shared/repository/datastore /mnt/nfsshare1/combined-datastore

Configure repository.xml para que apunte a la nueva ruta del almacén de datos para A y B Abrir repositorio.xml en la instancia A y cambie la ruta compartida del almacén de datos (/opt/day/cq5A/crx-quickstart/server/runtime/0/crx/WEB-INF/repository.xml)

<DataStore class="org.apache.jackrabbit.core.data.FileDataStore"> <param name="path" value="/mnt/nfsshare1/combined-datastore"/> <param name="minRecordLength" value="4096"/> </DataStore>

Cómo ejecutar la recolección de basura del almacén de datos cuando el almacén de datos es compartido por múltiples instancias de CRX

ADVERTENCIA: Esto solo se aplica a CRX1.4.2 o a las versiones parcheadas de la 1.4.1, ya que la recolección de basura del almacén de datos solo funciona correctamente en la 1.4.1 después de aplicar una revisión de CRX (póngase en contacto con el soporte de día para obtener más información). Pruebe en un entorno de desarrollo antes de implementarlo en producción.

Cuando varias instancias de CRX utilizan el mismo almacén de datos: Primero, llame a gc.scan() en la instancia A, luego en B y así sucesivamente. Al final, llame a gc.deleteUnused() en la instancia A:

Aquí está el código de inicialización:

importar org.apache.jackrabbit.core.core.data.GarbageCollector; ///.... GarbageCollector gc; SessionImpl si = (SessionImpl)sesión; gc = si.createDataStoreGarbageCollector(); // opcional (si desea implementar una barra de progreso / salida): gc.setScanEventListener(this);

Aquí hay un pseudo código que muestra el orden de cómo se deben ejecutar los escaneos de la recolección de Basura en las instancias separadas (este ejemplo asume un cluster de 3 instancias A, B y C):

gcA.scan(); gcB.scan(); gcC.scan(); gcA.stopScan(); gcA.deleteUnused(); gcB.stopScan(); gcC.stopScan();

Un método alternativo es:

  1. Escriba la hora actual = X
  2. Ejecutar gc.scan() en cada repositorio
  3. Eliminar manualmente archivos con fecha de última modificación anterior a X

Más información en http://wiki.apache.org/jackrabbit/DataStore#Running_Data_Store_Garbage_Collection_.28Jackrabbit_1.x.29

Versiones relacionadas

CRX 1.4.2.X

[1] http://wiki.apache.org/jackrabbit/DataStore