Co to jest blobFuse? - BlobFuse2
BlobFuse to wirtualny sterownik systemu plików dla usługi Azure Blob Storage. Użyj narzędzia BlobFuse, aby uzyskać dostęp do istniejących danych blokowych obiektów blob platformy Azure za pośrednictwem systemu plików systemu Linux. Stronicowe obiekty blob nie są obsługiwane.
Informacje o projekcie open source blobFuse2
BlobFuse2 to projekt typu open source, który używa biblioteki open source libfuse (fuse3) do komunikowania się z modułem jądra FUSE systemu Linux. BlobFuse2 implementuje operacje systemu plików przy użyciu interfejsów API REST usługi Azure Storage.
Projekt open source BlobFuse2 znajduje się w witrynie GitHub:
Licencjonowanie
Projekt BlobFuse2 jest licencjonowany na licencję MIT.
Funkcje
Pełna lista funkcji blobFuse2 znajduje się w pliku BLobFuse2 README. Oto niektóre z kluczowych zadań, które można wykonać za pomocą narzędzia BlobFuse2:
- Zainstaluj kontener usługi Azure Blob Storage lub system plików usługi Azure Data Lake Storage w systemie Linux. (BlobFuse2 obsługuje konta magazynu ze skonfigurowanymi płaskimi przestrzeniami nazw lub hierarchiczną przestrzenią nazw).
- Użyj podstawowych operacji systemu plików, takich jak
mkdir
, ,open
readdir
read
create
write
rmdir
opendir
unlink
truncate
close
stat
i .rename
- Użyj buforowania plików lokalnych, aby poprawić kolejne czasy dostępu.
- Uzyskaj wgląd w działania instalacji i użycie zasobów przy użyciu monitora kondycji blobFuse2.
Inne kluczowe funkcje w usłudze BlobFuse2 obejmują:
- Przesyłanie strumieniowe do obsługi odczytywania i zapisywania dużych plików
- Równoległe pobieranie i przekazywanie w celu zwiększenia czasu dostępu dla dużych plików
- Wiele instalacji do tego samego kontenera dla obciążeń tylko do odczytu
Ważne
Ze względu na znane problemy ze spójnością danych podczas korzystania ze starszych wersji systemu Blobfuse2 w trybie przesyłania strumieniowego block-cache
zdecydowanie zaleca się uaktualnienie wszystkich instalacji Blobfuse2 do wersji 2.3.2 lub nowszej. Aby uzyskać więcej informacji, zobacz to.
Ulepszenia programu BlobFuse2 z programu BlobFuse w wersji 1
Obiekt BlobFuse2 ma większą obsługę funkcji i lepszą wydajność w wielu scenariuszach użytkownika z programu BlobFuse w wersji 1. Aby uzyskać obszerną listę ulepszeń, zobacz PLIK README blobFuse2. Oto podsumowanie ulepszeń w programie BlobFuse2 z programu BlobFuse w wersji 1:
- Ulepszone buforowanie
- Więcej obsługi zarządzania za pomocą nowych poleceń interfejsu wiersza polecenia platformy Azure
- Obsługa rejestrowania
- Dodanie przesyłania strumieniowego zapisu dla dużych plików (wcześniej obsługiwane było tylko przesyłanie strumieniowe do odczytu)
- Nowy monitor kondycji blobFuse2, który ułatwia uzyskanie wglądu w działania instalacji i użycie zasobów
- Opcje zgodności i uaktualniania dla istniejących użytkowników programu BlobFuse w wersji 1
- Sprawdzanie wersji i monitowanie o uaktualnienie
- Obsługa szyfrowania plików konfiguracji
Zobacz listę ulepszeń wydajności usługi BlobFuse2 z programu BlobFuse w wersji 1.
W przypadku użytkowników programu BlobFuse w wersji 1
Ulepszenia udostępniane przez usługę BlobFuse2 są atrakcyjnymi przyczynami uaktualniania i migracji do usługi BlobFuse2. Jeśli nie jesteś gotowy do migracji, możesz użyć narzędzia BlobFuse2, aby zainstalować kontener obiektów blob przy użyciu tych samych opcji konfiguracji i parametrów interfejsu wiersza polecenia platformy Azure używanych z usługą BlobFuse w wersji 1.
Przewodnik migracji blobFuse2 zawiera wszystkie szczegóły dotyczące zgodności i migracji bieżących obciążeń.
Pomoc techniczna
Usługa BlobFuse2 jest obsługiwana przez firmę Microsoft, jeśli jest używana w określonych limitach. Jeśli wystąpi problem, zgłoś go w usłudze GitHub.
Ograniczenia
Usługa BlobFuse2 nie gwarantuje zgodności ze standardem POSIX w 100%, ponieważ usługa BlobFuse2 po prostu tłumaczy żądania na interfejsy API REST obiektów blob. Na przykład operacje zmiany nazwy są niepodzielne w systemie POSIX, ale nie w programie BlobFuse2.
Zobacz pełną listę różnic między natywnym systemem plików a obiektem BlobFuse2.
Różnice między systemem plików Systemu Linux a obiektem BlobFuse2
Na wiele sposobów można użyć magazynu zainstalowanego przez program BlobFuse2, podobnie jak natywny system plików systemu Linux. Schemat katalogu wirtualnego jest taki sam i używa ukośnika (/
) jako ogranicznika. Podstawowe operacje systemu plików, read
close
rmdir
open
readdir
write
truncate
stat
create
unlink
takie jak mkdir
, opendir
i rename
działają tak samo jak w systemie plików Linux.
BlobFuse2 różni się od systemu plików systemu Linux na kilka kluczowych sposobów:
Liczba twardych linków do odczytu:
Ze względu na wydajność obiekt BlobFuse2 nie zgłasza poprawnie twardych linków wewnątrz katalogu. Liczba twardych linków dla pustych katalogów zwraca wartość 2. Liczba katalogów niepustych zawsze zwraca wartość 3, niezależnie od rzeczywistej liczby twardych łączy.
Nazwy niepodzielne:
Usługa Azure Blob Storage nie obsługuje niepodzielnych operacji zmiany nazwy. Zmiany nazw pojedynczych plików to w rzeczywistości dwie operacje: kopia, a następnie usunięcie oryginału. Nazwy katalogu są rekursywnie wyliczane we wszystkich plikach w katalogu i zmienia nazwę każdego pliku.
Pliki specjalne:
Program BlobFuse2 obsługuje tylko katalogi, zwykłe pliki i linki symboliczne. Pliki specjalne, takie jak pliki urządzeń, potoki i gniazda, nie są obsługiwane.
mkfifo:
Tworzenie fifo nie jest obsługiwane przez program BlobFuse2. Próba wykonania tej akcji powoduje wystąpienie błędu "funkcja nie zaimplementowana".
chown i chmod:
Konta magazynu usługi Data Lake Storage obsługują uprawnienia poszczególnych obiektów i listy ACL, ale blokowe obiekty blob płaskiej przestrzeni nazw (FNS) nie są obsługiwane. W związku z tym obiekt BlobFuse2 nie obsługuje
chown
operacji ichmod
dla zainstalowanych kontenerów blokowych obiektów blob. Operacje są obsługiwane w usłudze Data Lake Storage.Pliki lub potoki urządzeń:
Program BlobFuse2 nie obsługuje tworzenia plików ani potoków urządzeń.
Atrybuty rozszerzone (x-attrs):
Obiekt BlobFuse2 nie obsługuje operacji rozszerzonych (
x-attrs
).Przesyłanie strumieniowe zapisu:
Współbieżne przesyłanie strumieniowe operacji odczytu i zapisu na dużych danych plików może spowodować nieprzewidywalne wyniki. Jednoczesne zapisywanie w tym samym obiekcie blob z różnych wątków nie jest obsługiwane.
Integralność danych
Buforowanie plików odgrywa ważną rolę w integralności danych odczytywanych i zapisywanych w systemie plików usługi Blob Storage. Zalecamy używanie trybu przesyłania strumieniowego z dużymi plikami, który obsługuje przesyłanie strumieniowe zarówno dla operacji odczytu, jak i zapisu. BlobFuse2 buforuje bloki plików przesyłanych strumieniowo w pamięci. W przypadku mniejszych plików, które nie składają się z bloków, cały plik jest przechowywany w pamięci. Pamięć podręczna plików jest drugim trybem. Zalecamy buforowanie plików dla obciążeń, które nie zawierają dużych plików, na przykład gdy pliki są przechowywane na dysku w całości.
Program BlobFuse2 obsługuje operacje odczytu i zapisu. Ciągła synchronizacja danych zapisywanych w magazynie przy użyciu innych interfejsów API lub innych instalacji obiektu BlobFuse2 nie jest gwarantowana. W przypadku integralności danych zalecamy, aby wiele źródeł nie modyfikowało tego samego obiektu blob, zwłaszcza w tym samym czasie. Jeśli co najmniej jedna aplikacja próbuje zapisać w tym samym pliku jednocześnie, wyniki mogą być nieoczekiwane. W zależności od czasu wielu operacji zapisu i aktualności pamięci podręcznej dla każdej operacji wynik może być taki, że ostatni zapis wygrywa i poprzednie zapisy są utracone lub ogólnie, że zaktualizowany plik nie jest w zamierzonym stanie.
Buforowanie plików na dysku
Gdy plik jest przedmiotem operacji zapisu, dane są najpierw utrwalane w pamięci podręcznej na dysku lokalnym. Dane są zapisywane w usłudze Blob Storage dopiero po zamknięciu dojścia pliku. Jeśli wystąpi problem podczas próby utrwalania danych w usłudze Blob Storage, zostanie wyświetlony komunikat o błędzie.
Przesyłanie strumieniowe
W przypadku przesyłania strumieniowego podczas operacji odczytu i zapisu bloki danych są buforowane w pamięci podczas ich odczytu lub aktualizowania. Aktualizacje są opróżniane do usługi Azure Storage, gdy plik jest zamknięty lub gdy bufor jest wypełniony zanieczyszczonymi blokami.
Odczytywanie tego samego obiektu blob z wielu równoczesnych wątków jest obsługiwane. Jednak jednoczesne operacje zapisu mogą spowodować nieoczekiwane wyniki danych plików, w tym utratę danych. Wykonywanie równoczesnych operacji odczytu i pojedynczej operacji zapisu jest obsługiwane, ale dane odczytywane z niektórych wątków mogą nie być aktualne.
Uprawnienia
Po zainstalowaniu kontenera z opcjami domyślnymi wszystkie pliki uzyskują uprawnienia 770 i są dostępne tylko dla użytkownika, który wykonuje instalowanie. Aby zezwolić dowolnemu użytkownikowi na dostęp do instalacji blobFuse2, zainstaluj program BlobFuse2 przy użyciu --allow-other
opcji . Tę opcję można również skonfigurować w pliku konfiguracji YAML.
Jak wspomniano wcześniej, chown
operacje i chmod
są obsługiwane w przypadku usługi Data Lake Storage, ale nie w przypadku blokowych obiektów blob usługi FNS. chmod
Uruchomienie operacji względem zainstalowanego kontenera blokowych obiektów blob FNS zwraca komunikat o powodzeniu, ale operacja nie powiedzie się.
Obsługa funkcji
W tej tabeli pokazano, jak ta funkcja jest obsługiwana na Twoim koncie oraz wpływ na obsługę po włączeniu niektórych funkcji.
Storage account type | Blob Storage (obsługa domyślna) | Data Lake Storage 1 | System plików sieciowych (NFS) 3.0 1 | Protokół transferu plików SSH (SFTP) 1 |
---|---|---|---|---|
Standardowa ogólnego przeznaczenia, wersja 2 | ||||
Blokowe obiekty blob w warstwie Premium |
1 Data Lake Storage, protokół NFS 3.0 i SFTP obsługują wszystkie wymagania konta magazynu z włączoną hierarchiczną przestrzenią nazw.
Zobacz też
- Migrowanie do obiektu BlobFuse2 z programu BlobFuse w wersji 1
- Polecenia BlobFuse2
- Rozwiązywanie problemów z usługą BlobFuse2