Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel können Sie BlobFuse so konfigurieren, dass ein Container im Cachemodus bereitgestellt wird. Im Cachemodus lädt BlobFuse die gesamte Datei aus Azure Blob Storage in ein lokales Cacheverzeichnis herunter, bevor sie der Anwendung zur Verfügung gestellt wird.
Tipp
Sie können einen Container entweder im Streamingmodus oder im Cachemodus bereitstellen. Weitere Informationen zu den einzelnen Modus finden Sie unter Streaming im Vergleich zum Zwischenspeicherungsmodus.
Konfigurationsparameter
Geben Sie den Pfad des lokalen Caches und ein optionales Timeout in Sekunden an.
Der lokale Cache (oder temporäre Pfad) speichert alle geöffneten Dateiinhalte von BlobFuse. Das Timeout ist die maximale Zeit in Sekunden, bevor Daten nach einer Aktualisierung aktualisiert werden. Wenn Ihr Workflow z. B. die Aktualisierung von Dateiinhalten innerhalb von drei Sekunden nach einem Update erfordert, legen Sie dieses Timeout auf 3. Wenn ihr Workflow eine sofortige Aktualisierung erfordert, legen Sie das Timeout auf 0. Durch Festlegen des Timeouts 0 erhalten Sie eine sofortige Aktualisierung von Inhalten, aber zu Kosten höherer REST-Aufrufe an den Speicher.
Im folgenden Beispiel werden diese Werte als Parameter auf den mount Befehl festgelegt.
blobfuse2 mount ~/mycontainer --tmp-path=/tmp/blobfusecache --file-cache-timeout=120
Das folgende Beispiel zeigt, wie diese Einstellungen in der BlobFuse-Konfigurationsdatei angezeigt werden.
file_cache:
path: /tmp/blobfusecache
timeout-sec: 120
Ein vollständiges Beispiel finden Sie unter Beispiel für die Konfiguration des Dateicaches.
Hinweis
BlobFuse speichert alle geöffneten Dateiinhalte im temporären Pfad. Stellen Sie sicher, dass genügend Speicherplatz vorhanden ist, um alle geöffneten Dateien zu enthalten.
Konfigurieren eines temporären Pfads
Sie können einen temporären Pfad auf einem lokalen Hochleistungsdatenträger, einem RAM-Datenträger oder einem Solid State Drive (SSD) konfigurieren.
Wenn Sie einen vorhandenen lokalen Datenträger für die Zwischenspeicherung verwenden, wählen Sie einen Datenträger aus, der die bestmögliche Leistung bietet, z. B. einen Solid-State-Datenträger (SSD).
In Azure können Sie die kurzlebigen SSD-Datenträger verwenden, die auf Ihren virtuellen Computern (VMs) verfügbar sind, um einen Puffer mit geringer Latenz für BlobFuse bereitzustellen. Je nachdem, welchen Bereitstellungsagent Sie verwenden, mounten Sie den ephemeren Datenträger auf /mnt für Cloud-Init oder /mnt/resource für VMs des Microsoft Azure Linux-Agents (waagent).
Stellen Sie sicher, dass Der Benutzer Zugriff auf den temporären Pfad hat.
sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp
Wenn Sie einen RAM-Datenträger verwenden, wählen Sie eine Größe aus, die Ihren Anforderungen entspricht. Im folgenden Beispiel wird ein RAM-Datenträger mit 16 GB und ein Verzeichnis für BlobFuse erstellt. BlobFuse verwendet den RAM-Datenträger zum Öffnen von Dateien mit einer Größe von bis zu 16 GB.
sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
Optimieren der Leistung durch Vorabladen von Daten
Im Cachemodus wartet BlobFuse auf einen geöffneten Dateisystemaufruf. Beim Empfang des geöffneten Aufrufs lädt BlobFuse die gesamte Datei in einen lokalen Cache herunter, bevor sie verwendet wird. Dieses Verhalten kann die anfängliche Last langsamer machen, insbesondere für KI- und Machine Learning-Aufgaben, bei denen die Anwendung viele Dateien verarbeitet.
Die Preloadfunktion unterstützt Sie beim Herunterladen vollständiger Container oder Unterverzeichnisse in den lokalen Cache, wenn Sie diese einbinden. Das Vorabladen verbessert die Datenverfügbarkeit, steigert die Effizienz und verringert die Wartezeiten. Diese Verbesserung ist für KI-Schulungen mit großen Datasets von entscheidender Bedeutung, da alle erforderlichen Dateien im Voraus vorbereitet werden, wodurch GPU-Zeit gespart und Kosten reduziert werden. Durch die Kombination des Vorabladens mit dem Blobfilter-Feature können Sie auf bestimmte Dateien in einem Container oder Unterverzeichnis zugreifen, was eine umfangreiche Flexibilität und die Optimierung von GPU-Zyklen ermöglicht.
Verwenden Sie den --preload Parameter, um das Vorabladen im Dateicachemodus zu aktivieren. Der folgende Befehl zeigt ein Beispiel:
blobfuse2 mount --preload /mnt/blobfuse_mnt --tmp-path=/home/temp_path
Hinweis
Durch das Vorabladen von Blobdaten wird die Bereitstellung schreibgeschützt und die Entfernung von Dateien wird verhindert. Um auf aktualisierte Dateien zuzugreifen, werfen Sie das Volume aus und binden Sie es neu ein. Auf neu hinzugefügte Dateien kann weiterhin zugegriffen werden, indem sie gelesen werden. Wenn ein Blob-Filter mit Vorladen verwendet wird, werden nur die gefilterten Dateien vorab geladen und sind über die BlobFuse-Einbindung zugänglich.
Überlegungen bei der Verwendung des Preload-Features
Durch Aktivieren des Vorabladens wird die BlobFuse-Bereitstellung schreibgeschützt.
Alle Dateizwischenspeicherungsoptionen in der CLI und in der Konfigurationsdatei werden ignoriert, außer der Einstellung für den temporären Pfad.
Stellen Sie ausreichend Speicherplatz für alle oder gefilterten Inhalte im Container sicher. Unzureichender Speicherplatz kann zu teilweisem Laden und Blockieren des neuen Dateizugriffs führen, bis Sie Dateien manuell aus dem lokalen Cache löschen.
Der Zugriff auf eine Datei unmittelbar nach der Bereitstellung priorisiert sie für den Download, während das Vorabladen im Hintergrund fortgesetzt wird.
BlobFuse-Protokolle zeigen den Vorladezustand und Datenträgerwarnungen an.
Die BlobFuse-Bereitstellung aktualisiert vorab geladene oder geöffnete Dateien nur, wenn Sie sie manuell aus dem lokalen Cache löschen und erneut öffnen.
BlobFuse lädt nach dem Vorabladen nicht automatisch Blobs herunter, die dem Speichercontainer hinzugefügt wurden, jedoch kann darauf zugegriffen werden, indem sie gelesen werden.