Domanda, problema
Vorrei preservare lo spazio su disco, come posso consolidare e condividere l'archiviazione dei file di dati CRX?
Nota: lo stesso metodo può essere applicato alle istanze di CQ5 WCM versione 5.2.1
Risposta, Soluzione
Un modo per preservare lo spazio su disco nel tuo ambiente è quello di condividere la directory del datastore CRX su una condivisione di rete tra più installazioni di CRX.
ATTENZIONE: Questo processo richiede di spostare la directory del datastore in un'unità di rete condivisa. Se si sta spostando la directory del datastore da una cartella locale a una directory di rete condivisa, si verificherà una notevole perdita di prestazioni. Tienine conto prima di implementare questo processo e di valuta i benefici di conseguenza.
Prima di tutto, cos'è il datastore?
L'archivio dati viene utilizzato da CRX per memorizzare grandi valori binari. Normalmente tutti i dati dei nodi e delle proprietà sono memorizzati in un gestore di persistenza, ma per i grandi binari, ad esempio, un trattamento speciale può migliorare le prestazioni e ridurre l'utilizzo del disco.
Come combinare il datastore tra istanze CRX multiple
Prendiamo in considerazione uno scenario in cui si hanno due istanze CRX, A e B (non importa se si tratta di un autore o di una pubblicazione). A è installato sotto /opt/day/crxA
e B è installato sotto /opt/day/crxB
. In un'installazione predefinita non raggruppata di CRX, il datastore è memorizzato in <path to instance>/crx-quickstart/repository/shared/repository/datastore
.
Nota che il percorso della cartella "condivisa" può essere diverso se è stata configurata una cartella "condivisa" del cluster. Il datastore è memorizzato in <shared path>/repository/datastore
.
Istruzioni: Copia e consolida/combina i file dell'esempio A e dei datastore dell'istanza B per esempio (se A e B sono su 2 server fisici diversi e utilizzano una condivisione di rete comune /mnt/nfsshare1):
sul server A
%> cp -R /opt/day/crxA/crx-quickstart/repository/shared/repository/datastore /mnt/nfsshare1/combined-datastore
su server B
%> cp -R /opt/day/crxB/crx-quickstart/repository/shared/repository/datastore /mnt/nfsshare1/combined-datastore
Configura repository.xml per puntare al nuovo percorso del datastore per entrambe le istanze A e B Apri repository.xml sull'istanza A e cambia il percorso condiviso del datastore (/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>
Come eseguire la garbage collection del datastore quando il datastore è condiviso da più istanze di CRX
ATTENZIONE: Questo si applica solo a CRX1.4.2 o alle versioni con patch della 1.4.1 come data store garbage collection e funziona correttamente solo in 1.4.1 dopo aver applicato un hotfix CRX (contatta il supporto giornaliero per maggiori informazioni). Testalo in un ambiente di sviluppo prima di implementarlo in produzione.
Quando più istanze CRX usano lo stesso datastore: Per prima cosa, chiama gc.scan() sull'istanza A, poi su B e così via. Alla fine, chiama gc.deleteUnused() sull'istanza A:
Ecco il codice di inizializzazione:
importa org.apache.jackrabbit.core.data.GarbageCollector; //...... GarbageCollector gc; SessionImpl si = (SessionImpl)session; gc = si.createDataStoreGarbageCollector(); // opzionale (se si desidera implementare una barra di avanzamento / output): gc.setScanEventListener(this);
Qui è presente uno pseudo codice che mostra l'ordine di esecuzione delle scansioni di Garbage collection sulle istanze separate (questo esempio assume un cluster di 3 istanze A, B e C):
gcA.scan(); gcB.scan(); gcC.scan(); gcA.stopScan(); gcA.deleteUnused(); gcB.stopScan(); gcC.stopScan();
Un metodo alternativo è:
- Annota l'ora corrente = X
- Esegui gc.scan() su ogni repository
- Eliminazione manuale dei file con data dell'ultima modifica più vecchia di X
Vedi qui per maggiori informazioni http://wiki.apache.org/jackrabbit/DataStore#Running_Data_Store_Garbage_Collection_.28Jackrabbit_1.x.29
Versioni interessate
CRX 1.4.2.X