Der EAS unterstützt mehrere sogenannte Partitionen. Diese werden in der Datenbank verwaltet und durch folgende Eigenschaften spezifiziert:
Ausschlaggebend für die Auswahl der Zielpartition für eine Datei sind o.g. Filter. Bleibt nach der Filterung mehr als eine Partition übrig, wird zufällig eine ausgewählt.
Wenn zu wenig Platz auf dem unterliegenden Dateisystem zur Verfügung steht wird die Partition automatisch deaktiviert. Die Grenze wird durch EAS_PARTITION_MIN_FREE festgelegt. Sollten alle gültigen Partitionen deaktiviert worden sein (disabled = true
in der Datenbank, siehe unten), müssen diese nachdem Platz geschaffen wurde manuell wieder aktiviert werden.
Standardpartitionen liegen in /var/opt/easydb/lib/eas/assets
. Werden neue Partitionen in der Datenbank angelegt, werden sie beim Neustart des Workers automatisch angelegt, sofern die Berechtigungen im übergeordneten Verzeichnis ausreichend sind.
Für das Ausliefern über den Apache werden die Partitionen außerdem mit ihrer ID in /var/opt/easydb/lib/eas/partitions
verlinkt, in einer Standardinstallation sieht das dann so aus:
/var/opt/easydb/lib/eas/partitions/1 -> /var/opt/easydb/lib/eas/assets/orig
/var/opt/easydb/lib/eas/partitions/2 -> /var/opt/easydb/lib/eas/assets/dest
Die symbolischen Links werden ebenfalls vom EAS-Worker verwaltet und bei Bedarf angelegt bzw. geändert.
Momentan gibt es noch kein Werkzeug zum Anlegen neuer Partitionen, es können aber auf Datenbankebene weitere Partitionen in die Tabelle eas.partition
eingetragen werden.
Diese Tabelle hat folgende Spalten:
partition |
ID (wird von PostgreSQL verwaltet) |
partition_name |
eindeutiger Name der Partition |
path |
eindeutiger Pfad zur Datenablage |
priority |
Priorität der Partition (Vorgabe 0 , je höher, desto unwichtiger) |
store_original |
für "Originale" (hochgeladene Dateien) |
store_derived |
für "abgeleitete Originale" (z.B. gedrehte Bilder) |
store_version |
für "Versionen" (z.B. verschiedene Größen) |
all_versions |
alle Versionen (Unterscheidung über Versionnamen) dürfen abgelegt werden (Vorgabe: true ). Wenn false , wird die Link-Tabelle eas.partition__version verwendet. |
all_classes |
alle Typklassen (image , office , etc.) dürfen abgelegt werden (Vorgabe true ). Wenn false , wird die Link-Tabelle eas.partition__fileclass verwendet. |
all_instances |
Assets aller Instanzen dürfen abgelegt werden (Vorgabe: true ). Wenn false , wird die Link-Tabelle eas.partition__instance verwendet. |
disabled |
Vorgabe false . Wenn true wird die Partition nicht benutzt. Dieses Flag wird auch automatisch gesetzt, wenn der freie Platz auf der Partition zu gering wird. |
space_used |
verbrauchter Platz in Bytes (wird automatisch befüllt) |
space_free |
freier Platz in Bytes (wird automatisch befüllt) |
auto_disabled_time |
Zeit der automatischen Deaktivierung (wird automatisch befüllt, ab EAS 4.2.18) |
Ist auf dem zugrundeliegenden Dateisystem wieder Platz geschaffen worden, kann eine automatisch deaktivierte Partition nur durch Eingriff in die Datenbank wieder aktiviert werden. Dazu verbinden Sie sich mit den PostgreSQL-Kommandozeilen-Client psql
(weitere Optionen siehe Verbindungsparameter) zur EAS-Datenbank, mit dem Nutzer postgres und dem Datenbanknamen easdb wäre der Aufruf z.B.:
psql -U postgres easdb
Anschließend führen Sie bitte das folgende SQL-Statement aus, ausgehend davon, dass die zu aktivierende Partition orig heißt.
UPDATE eas.partition SET disabled = false WHERE partition_name = 'orig';
Wenn Sie die Standardinstallation benutzen, werden die beiden ursprünglich angelegten Partitionen auf dem selben Dateisystem liegen, also auch gleichzeitig deaktiviert werden. Wiederholen Sie in diesem Fall das obige Statement für den Partitionsnamen dest.