FSAssets Service/de
From OpenSimulator
Contents |
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.
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
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.
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.
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.
- Es gibt im FS-Befehlssatz keinen dedizierten Bulk-Export-Befehl. Fuer vollstaendige Exporte/Backups sollten immer beide Bestandteile gesichert werden:
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.