FSAssets Service/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
 
Line 1: Line 1:
 
{{Languages|FSAssets_Service}}
 
{{Languages|FSAssets_Service}}
 
=FS Assets=
 
=FS Assets=
FSAssets ist für Grids vorgesehen, bei denen die Größe der Datenbank voraussichtlich 50 GB überschreitet. Diese Option speichert die Assets im Dateisystem im Gegensatz zum Standarddienst, der Assets als Blobs in der Datenbank speichert. Diese Option bietet auch Deduplizierungsfunktionen. Jedes Asset wird gehasht, wenn es zur Speicherung empfangen wird. Wenn das Asset bereits vorhanden ist, wird der Asset-Service mit der vorhandenen Datei verknüpft, anstatt zwei Kopien zu speichern. Einzelpersonen erreichen sehr schnell ein Inventar der Größe 12 GB im laufe der zeit erhöht sich das ganze meist auf 18 GB pro Benutzer, es gibt aber ausnahmen wo einzelne Personen schon 50 GB erreichen.
+
FSAssets ist fuer Grids gedacht, bei denen die Groesse der Datenbank voraussichtlich 50 GB uebersteigt. Diese Option speichert Assets im Dateisystem anstatt im Standarddienst als BLOBs in der Datenbank. Diese Option bietet ausserdem Deduplizierung: Jedes Asset wird beim Speichern gehasht. Existiert ein Asset bereits, verknuepft der Asset-Service auf die vorhandene Datei, statt zwei Kopien abzulegen.
 +
 
 +
==Performance-Warnung==
 +
FSAssets speichert Daten als sehr viele kleine Dateien. Abhaengig von Lastprofil und Hardware kann das zu hoher zufaelliger I/O-Last und vielen Metadaten-Operationen fuehren und langsamere Datentraeger leicht ueberlasten (z. B. aeltere HDDs, schwache NAS-Speicher oder stark geteilte virtuelle Datentraeger). Verwende schnellen Speicher fuer BaseDirectory/SpoolDirectory, ueberwache Latenz und Queue-Depth des Datentraegers und plane genug Reserve fuer stark steigende Datei-/Inode-Anzahlen ein.
 +
 
 +
Das hash-basierte Verzeichnislayout verteilt Dateien auf Unterordner, beseitigt aber die Skalierungsgrenzen von Dateisystem-Metadaten und Verzeichnisindizes nicht. Bei sehr hohen Datei-Anzahlen (Millionen Dateien) koennen Vorgaenge wie Backup, Restore, Replikation, Virenscan, Snapshots und Konsistenzpruefungen zum dominanten Flaschenhals werden.
 +
 
 +
Praxisbeispiel (kleines Grid):
 +
* Asset-Dateien: 833659
 +
* Asset-Groesse: 125 GB
  
 
==Konfigurationsoptionen==
 
==Konfigurationsoptionen==
Öffnen Sie zum Aktivieren von FSAssets die Robust.ini oder Robust.HG.ini, je nachdem, ob Sie ein Standard- oder Hypergrid- fähiges Grid betreiben, und suchen Sie den Abschnitt AssetService. Ändern Sie das LocalServiceModule in FSAssetService wie folgt:
+
Um FSAssets zu aktivieren, oeffne je nach Setup Robust.ini oder Robust.HG.ini und suche den Abschnitt AssetService. Aendere LocalServiceModule von der aktuellen Option auf:
  
 
  LocalServiceModule = "OpenSim.Services.FSAssetService.dll:FSAssetConnector"
 
  LocalServiceModule = "OpenSim.Services.FSAssetService.dll:FSAssetConnector"
  
Kommentieren Sie auch die folgenden erforderlichen Einstellungen aus, die für FSAssets spezifisch sind:
+
Aktiviere ausserdem die folgenden erforderlichen Einstellungen (auskommentieren), diese sind FSAssets-spezifisch:
  
 
  BaseDirectory = "./fsassets/data"
 
  BaseDirectory = "./fsassets/data"
 
  SpoolDirectory = "./fsassets/tmp"
 
  SpoolDirectory = "./fsassets/tmp"
  
Die folgenden optionalen FSAsset Konfigurationsoptionen sind verfügbar:
+
Die folgenden FSAssets-Konfigurationsoptionen sind optional:
  
 
  ;FallbackService = "OpenSim.Services.AssetService.dll:AssetService"
 
  ;FallbackService = "OpenSim.Services.AssetService.dll:AssetService"
 
  ;DaysBetweenAccessTimeUpdates = 30
 
  ;DaysBetweenAccessTimeUpdates = 30
 +
;SecondaryInstance = false
 +
;ShowConsoleStats = true
  
 
  ;StorageProvider = ""
 
  ;StorageProvider = ""
 
  ;ConnectionString = ""
 
  ;ConnectionString = ""
 
  ;Realm = "fsassets"
 
  ;Realm = "fsassets"
 +
 +
;UseOsgridFormat = false
 +
;DefaultAssetLoader = ""
 +
;AssetLoaderArgs = ""
  
 
* '''BaseDirectory'''
 
* '''BaseDirectory'''
::Dies ist der Ordner, in dem die Asset-Daten gespeichert werden.
+
::Dieses Verzeichnis enthaelt die gespeicherten Asset-Daten.
 
* '''SpoolDirectory'''
 
* '''SpoolDirectory'''
::Das Spool-Verzeichnis ist ein Ordner, der für die temporäre Speicherung verwendet wird, während das Asset gehasht und komprimiert wird, bevor es in das BaseDirectory verschoben wird. Dies muss sich im selben Dateisystem wie das Basisverzeichnis befinden.
+
::Das Spool-Verzeichnis dient als temporaerer Speicher waehrend ein Asset gehasht und komprimiert wird, bevor es nach BaseDirectory verschoben wird. Dieses Verzeichnis muss auf demselben Dateisystem liegen wie BaseDirectory.
 
* '''FallbackService'''
 
* '''FallbackService'''
::Wenn Sie ein Upgrade vom Standard Asset Service durchführen, kommentieren Sie dies aus und legen Sie den Standard Asset Connector fest. Auf diese Weise können FSAssets ein vorhandenes Asset aus dem alten Dienst abrufen und zum BaseDirectory hinzufügen. Der Fallback Service wird überprüft, wenn ein Asset angefordert, aber von FSAssets nicht gefunden wird.
+
::Wenn du vom Standard-Asset-Service migrierst, aktiviere diese Option und setze den Standard-Asset-Connector. Damit kann FSAssets vorhandene Assets aus dem alten Service laden und in BaseDirectory speichern. Der Fallback-Service wird geprueft, wenn ein Asset in FSAssets nicht gefunden wird.
 
* '''DaysBetweenAccessTimeUpdates'''
 
* '''DaysBetweenAccessTimeUpdates'''
::Standardmäßig wird die Zugriffszeit jedes Mal aktualisiert, wenn ein Asset angefordert wird. Diese Option kann verwendet werden, um dieses Update für Assets zu überspringen, die bereits eine aktuelle Zugriffszeit haben, und um Anrufe an die Datenbank zu reduzieren.
+
::Standardmaessig wird die Zugriffszeit bei jeder Asset-Anfrage aktualisiert. Mit dieser Option kann die Aktualisierung fuer kuerzlich verwendete Assets uebersprungen und die Anzahl der Datenbankzugriffe reduziert werden.
 +
* '''SecondaryInstance'''
 +
::Wenn true, arbeitet diese Instanz nicht als Hauptinstanz von FSAssets im Prozess. Nuetzlich, wenn mehrere FSAssetConnector-Instanzen im selben Prozess erzeugt werden.
 +
* '''ShowConsoleStats'''
 +
::Aktiviert periodische FSAssets-Statistikausgaben zu Lesezugriffen/Fehlzugriffen.
 
* '''StorageProvider'''
 
* '''StorageProvider'''
::Um zu ändern, wo die Metadaten gespeichert werden, können Sie einen bestimmten Speicheranbieter und eine bestimmte Verbindungszeichenfolge festlegen. Wenn dies deaktiviert ist, wird der im Datenbankabschnitt angegebene Standardspeicheranbieter zum Speichern von Metadaten verwendet.
+
::Um den Speicherort der Metadaten zu aendern, kann ein eigener StorageProvider inklusive ConnectionString gesetzt werden. Ist diese Option nicht gesetzt, wird der Standard-StorageProvider aus dem Datenbank-Abschnitt fuer die Metadaten genutzt.
 
* '''ConnectionString'''
 
* '''ConnectionString'''
::Datenbank Verbindungszeichenfolge für den oben genannten optionalen StorageProvider.
+
::Datenbank-Connection-String fuer den optionalen oben genannten StorageProvider.
 
* '''Realm'''
 
* '''Realm'''
::Der Tabellenname zum Speichern von Metadaten in der Datenbank. Standard ist 'fsassets'
+
::Tabellenname fuer die Metadaten in der Datenbank. Standard ist 'fsassets'.
 +
* '''UseOsgridFormat'''
 +
::Aendert die Ordnerstruktur aus Kompatibilitaetsgruenden von 00/00/00 auf 000/000. False bedeutet 00/00/00 und wird empfohlen.
 +
* '''DefaultAssetLoader'''
 +
::Optionales Default-Asset-Loader-Plugin, das beim Start ausgefuehrt wird.
 +
* '''AssetLoaderArgs'''
 +
::Optionale Argumentzeichenfolge, die an DefaultAssetLoader uebergeben wird.
  
 
==Migration==
 
==Migration==
Während FSAssets den FallBackService verwenden, falls festgelegt, um vorhandene Assets zu konvertieren, wenn sie angefordert und nicht gefunden werden, werden dadurch nicht automatisch alle alten Assets in den neuen Service konvertiert. Um alle Assets vom Standarddienst zu konvertieren, wird ein Konsolenbefehl bereitgestellt:
+
Wenn FallbackService gesetzt ist, kann FSAssets bereits vorhandene Assets beim Zugriff nachtraeglich uebernehmen, falls sie lokal nicht gefunden werden. Dadurch werden jedoch nicht automatisch alle alten Assets umgestellt. Um alle Assets aus dem Standardservice zu konvertieren, steht ein Konsolenbefehl zur Verfuegung:
 
<pre>
 
<pre>
 
  import <conn> <table> [<start> <count>]
 
  import <conn> <table> [<start> <count>]
 
</pre>
 
</pre>
Der Importbefehl erwartet, dass eine Datenbankverbindungszeichenfolge und der Name der Legacy Asset Tabelle als Parameter übergeben werden. Das folgende Beispiel zeigt, wie Sie den Importvorgang für eine MySQL Datenbank starten. Ändern Sie einfach die Verbindungsdetails so, dass sie Ihrem Datenbankschema, Benutzernamen und Kennwort entsprechen:
+
Der Import-Befehl erwartet als Parameter einen Datenbank-Connection-String und den Namen der alten Asset-Tabelle. Das folgende Beispiel zeigt den Start des Imports fuer MySQL. Passe die Verbindungsdaten an Schema, Benutzer und Passwort an:
 
<pre>
 
<pre>
 
  import "Data Source=localhost;Database=SCHEMA;User ID=USER;Password=PASS;Old Guids=true;" assets
 
  import "Data Source=localhost;Database=SCHEMA;User ID=USER;Password=PASS;Old Guids=true;" assets
 
</pre>
 
</pre>
Abhängig von der Größe Ihrer vorhandenen Asset Tabelle dauert der Importvorgang einige Zeit. Mit den optionalen Parametern start und count können Sie die Position und Anzahl der zu konvertierenden Zeilen angeben.
+
Je nach Groesse der vorhandenen Asset-Tabelle kann der Import laenger dauern. Mit den optionalen Parametern start und count kannst du Startposition und Anzahl der zu konvertierenden Zeilen steuern.
  
Wenn der Importbefehl mit einem Timeout Fehler fehlschlägt, fügen Sie "command timeout=300;" zur Verbindungszeichenfolge hinzu:
+
Es gibt ausserdem einen force-import-Modus, der vorhandene Inhalte bei passenden Asset-IDs ueberschreibt:
 +
<pre>
 +
force import <conn> <table> [<start> <count>]
 +
</pre>
 +
Verwende diesen Modus nur, wenn Altdaten bewusst den aktuellen FSAssets-Inhalt ersetzen sollen.
 +
 
 +
Falls der Import mit einem Timeout-Fehler abbricht, fuege "Command Timeout=300;" zum Connection-String hinzu:
  
 
<pre>
 
<pre>
Line 54: Line 85:
 
</pre>
 
</pre>
  
Das Zeitlimit beträgt Minuten und der Standardwert beträgt nur 30 Sekunden.
+
Timeout-Einheiten und Standardwerte haengen vom verwendeten Datenbank-Provider bzw. Treiber ab. In vielen Setups wird dieser Wert als Sekunden interpretiert.
 +
 
 +
==Hinweise zu Import und Export==
 +
* '''Import'''
 +
::Wird ueber den FS-Befehlssatz mit import und force import unterstuetzt.
 +
* '''Export'''
 +
::Es gibt im FS-Befehlssatz keinen dedizierten Bulk-Export-Befehl. Fuer vollstaendige Exporte/Backups sollten immer beide Bestandteile gesichert werden:
 +
::# die Asset-Dateien unter BaseDirectory
 +
::# die FSAssets-Metadatentabelle (Realm, Standard "fsassets") aus der konfigurierten Datenbank
 +
::Fuer einzelne Assets kann je nach aktivierten Asset-Service-Handlern/Modulen der Befehl dump asset <ID> verfuegbar sein.
  
 
==Hypergrid Assets==
 
==Hypergrid Assets==
Wenn in Ihrem Grid Hypergrid aktiviert ist, ist es wahrscheinlich so eingerichtet, dass der HGAssetService zum Freigeben von Assets für andere Grids verwendet wird. In dieser Situation müssen Sie den Abschnitt HGAssetService Ihrer Robust.ini so ändern, dass er auf die FSAssets Version des HGAssetService verweist, die als HGFSAssetService bezeichnet wird.
+
Wenn dein Grid Hypergrid aktiviert hat, ist haeufig HGAssetService fuer den Asset-Austausch mit anderen Grids konfiguriert. In diesem Fall muss im HGAssetService-Abschnitt der Robust.ini auf die FSAssets-Variante HGFSAssetService umgestellt werden.
 +
 
 +
Um HGFSAssetService zu aktivieren, aendere im HGAssetService-Abschnitt von Robust.ini den LocalServiceModule-Eintrag zu:
 +
 
 +
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFSAssetService"
  
Um den HGFSAssetService zu aktivieren, suchen Sie den Abschnitt HGAssetService in Ihrer Robust.ini. Das LocalServiceModule sollte geändert werden in:
+
Die folgenden HGAssetService-Optionen werden von HGFSAssetService ebenfalls verwendet:
  
  LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFSAssetService"
+
UserAccountsService = "..."
 +
;DisallowExport = "..."
 +
;DisallowImport = "..."
  
[[Category:German Translations]]
+
HomeURI ist fuer den Hypergrid-Betrieb ebenfalls erforderlich und wird ueblicherweise aus den Abschnitten Startup/Hypergrid/HGAssetService gelesen.

Latest revision as of 07:38, 9 April 2026

Contents

[edit] FS Assets

FSAssets ist fuer Grids gedacht, bei denen die Groesse der Datenbank voraussichtlich 50 GB uebersteigt. Diese Option speichert Assets im Dateisystem anstatt im Standarddienst als BLOBs in der Datenbank. Diese Option bietet ausserdem Deduplizierung: Jedes Asset wird beim Speichern gehasht. Existiert ein Asset bereits, verknuepft der Asset-Service auf die vorhandene Datei, statt zwei Kopien abzulegen.

[edit] Performance-Warnung

FSAssets speichert Daten als sehr viele kleine Dateien. Abhaengig von Lastprofil und Hardware kann das zu hoher zufaelliger I/O-Last und vielen Metadaten-Operationen fuehren und langsamere Datentraeger leicht ueberlasten (z. B. aeltere HDDs, schwache NAS-Speicher oder stark geteilte virtuelle Datentraeger). Verwende schnellen Speicher fuer BaseDirectory/SpoolDirectory, ueberwache Latenz und Queue-Depth des Datentraegers und plane genug Reserve fuer stark steigende Datei-/Inode-Anzahlen ein.

Das hash-basierte Verzeichnislayout verteilt Dateien auf Unterordner, beseitigt aber die Skalierungsgrenzen von Dateisystem-Metadaten und Verzeichnisindizes nicht. Bei sehr hohen Datei-Anzahlen (Millionen Dateien) koennen Vorgaenge wie Backup, Restore, Replikation, Virenscan, Snapshots und Konsistenzpruefungen zum dominanten Flaschenhals werden.

Praxisbeispiel (kleines Grid):

  • Asset-Dateien: 833659
  • Asset-Groesse: 125 GB

[edit] Konfigurationsoptionen

Um FSAssets zu aktivieren, oeffne je nach Setup Robust.ini oder Robust.HG.ini und suche den Abschnitt AssetService. Aendere LocalServiceModule von der aktuellen Option auf:

LocalServiceModule = "OpenSim.Services.FSAssetService.dll:FSAssetConnector"

Aktiviere ausserdem die folgenden erforderlichen Einstellungen (auskommentieren), diese sind FSAssets-spezifisch:

BaseDirectory = "./fsassets/data"
SpoolDirectory = "./fsassets/tmp"

Die folgenden FSAssets-Konfigurationsoptionen sind optional:

;FallbackService = "OpenSim.Services.AssetService.dll:AssetService"
;DaysBetweenAccessTimeUpdates = 30
;SecondaryInstance = false
;ShowConsoleStats = true
;StorageProvider = ""
;ConnectionString = ""
;Realm = "fsassets"
;UseOsgridFormat = false
;DefaultAssetLoader = ""
;AssetLoaderArgs = ""
  • BaseDirectory
Dieses Verzeichnis enthaelt die gespeicherten Asset-Daten.
  • SpoolDirectory
Das Spool-Verzeichnis dient als temporaerer Speicher waehrend ein Asset gehasht und komprimiert wird, bevor es nach BaseDirectory verschoben wird. Dieses Verzeichnis muss auf demselben Dateisystem liegen wie BaseDirectory.
  • FallbackService
Wenn du vom Standard-Asset-Service migrierst, aktiviere diese Option und setze den Standard-Asset-Connector. Damit kann FSAssets vorhandene Assets aus dem alten Service laden und in BaseDirectory speichern. Der Fallback-Service wird geprueft, wenn ein Asset in FSAssets nicht gefunden wird.
  • DaysBetweenAccessTimeUpdates
Standardmaessig wird die Zugriffszeit bei jeder Asset-Anfrage aktualisiert. Mit dieser Option kann die Aktualisierung fuer kuerzlich verwendete Assets uebersprungen und die Anzahl der Datenbankzugriffe reduziert werden.
  • SecondaryInstance
Wenn true, arbeitet diese Instanz nicht als Hauptinstanz von FSAssets im Prozess. Nuetzlich, wenn mehrere FSAssetConnector-Instanzen im selben Prozess erzeugt werden.
  • ShowConsoleStats
Aktiviert periodische FSAssets-Statistikausgaben zu Lesezugriffen/Fehlzugriffen.
  • StorageProvider
Um den Speicherort der Metadaten zu aendern, kann ein eigener StorageProvider inklusive ConnectionString gesetzt werden. Ist diese Option nicht gesetzt, wird der Standard-StorageProvider aus dem Datenbank-Abschnitt fuer die Metadaten genutzt.
  • ConnectionString
Datenbank-Connection-String fuer den optionalen oben genannten StorageProvider.
  • Realm
Tabellenname fuer die Metadaten in der Datenbank. Standard ist 'fsassets'.
  • UseOsgridFormat
Aendert die Ordnerstruktur aus Kompatibilitaetsgruenden von 00/00/00 auf 000/000. False bedeutet 00/00/00 und wird empfohlen.
  • DefaultAssetLoader
Optionales Default-Asset-Loader-Plugin, das beim Start ausgefuehrt wird.
  • AssetLoaderArgs
Optionale Argumentzeichenfolge, die an DefaultAssetLoader uebergeben wird.

[edit] Migration

Wenn FallbackService gesetzt ist, kann FSAssets bereits vorhandene Assets beim Zugriff nachtraeglich uebernehmen, falls sie lokal nicht gefunden werden. Dadurch werden jedoch nicht automatisch alle alten Assets umgestellt. Um alle Assets aus dem Standardservice zu konvertieren, steht ein Konsolenbefehl zur Verfuegung:

 import <conn> <table> [<start> <count>]

Der Import-Befehl erwartet als Parameter einen Datenbank-Connection-String und den Namen der alten Asset-Tabelle. Das folgende Beispiel zeigt den Start des Imports fuer MySQL. Passe die Verbindungsdaten an Schema, Benutzer und Passwort an:

 import "Data Source=localhost;Database=SCHEMA;User ID=USER;Password=PASS;Old Guids=true;" assets

Je nach Groesse der vorhandenen Asset-Tabelle kann der Import laenger dauern. Mit den optionalen Parametern start und count kannst du Startposition und Anzahl der zu konvertierenden Zeilen steuern.

Es gibt ausserdem einen force-import-Modus, der vorhandene Inhalte bei passenden Asset-IDs ueberschreibt:

 force import <conn> <table> [<start> <count>]

Verwende diesen Modus nur, wenn Altdaten bewusst den aktuellen FSAssets-Inhalt ersetzen sollen.

Falls der Import mit einem Timeout-Fehler abbricht, fuege "Command Timeout=300;" zum Connection-String hinzu:

import "Data Source=localhost;Port=3306;Database=Robust;User ID=SomeRobustuser;Password=Somerobustpassword;Old Guids=true;Command Timeout=300;" assets

Timeout-Einheiten und Standardwerte haengen vom verwendeten Datenbank-Provider bzw. Treiber ab. In vielen Setups wird dieser Wert als Sekunden interpretiert.

[edit] Hinweise zu Import und Export

  • Import
Wird ueber den FS-Befehlssatz mit import und force import unterstuetzt.
  • Export
Es gibt im FS-Befehlssatz keinen dedizierten Bulk-Export-Befehl. Fuer vollstaendige Exporte/Backups sollten immer beide Bestandteile gesichert werden:
  1. die Asset-Dateien unter BaseDirectory
  2. die FSAssets-Metadatentabelle (Realm, Standard "fsassets") aus der konfigurierten Datenbank
Fuer einzelne Assets kann je nach aktivierten Asset-Service-Handlern/Modulen der Befehl dump asset <ID> verfuegbar sein.

[edit] Hypergrid Assets

Wenn dein Grid Hypergrid aktiviert hat, ist haeufig HGAssetService fuer den Asset-Austausch mit anderen Grids konfiguriert. In diesem Fall muss im HGAssetService-Abschnitt der Robust.ini auf die FSAssets-Variante HGFSAssetService umgestellt werden.

Um HGFSAssetService zu aktivieren, aendere im HGAssetService-Abschnitt von Robust.ini den LocalServiceModule-Eintrag zu:

LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGFSAssetService"

Die folgenden HGAssetService-Optionen werden von HGFSAssetService ebenfalls verwendet:

UserAccountsService = "..."
;DisallowExport = "..."
;DisallowImport = "..."

HomeURI ist fuer den Hypergrid-Betrieb ebenfalls erforderlich und wird ueblicherweise aus den Abschnitten Startup/Hypergrid/HGAssetService gelesen.

General
About This Wiki