Jak zamontować kontener object storage jako system plików w Linuksie przy użyciu s3fs na NSIS Cloud
Poniższy artykuł dotyczy montowania kontenerów object storage przy użyciu s3fs w systemie Linux. Jednym z możliwych przypadków użycia jest łatwy dostęp do zawartości takich kontenerów na różnych komputerach i maszynach wirtualnych. Aby uzyskać dostęp, można użyć lokalnego komputera z systemem Linux lub maszyn wirtualnych działających w chmurze NSIS. Wszyscy użytkownicy systemu operacyjnego powinni mieć uprawnienia do odczytu, zapisu i wykonywania zawartości tych kontenerów.
Co będziemy omawiać
Instalacja s3fs
Tworzenie pliku zawierającego dane logowania
Tworzenie punktu montażowego
Montaż kontenera przy użyciu s3fs
Testowanie, czy montaż się powiódł
Demontaż kontenera
Konfigurowanie automatycznego montażu
Zatrzymywanie automatycznego montażu kontenera
Potencjalne problemy z obsługą obiektów przez s3fs
Wymagania wstępne
Nr 1 Konto
Potrzebne jest konto hostingowe NSIS z dostępem do interfejsu Horizon: https://horizon.cloudferro.com.
Nr 2 Urządzenie z systemem Linux
Potrzebna jest maszyna z systemem Linux. Może to być maszyna wirtualna działająca w chmurze NSIS lub lokalny komputer z systemem Linux.
Ten artykuł został napisany dla Ubuntu 22.04. Jeśli korzystasz z innej dystrybucji, dostosuj odpowiednio polecenia z tego artykułu.
Nr 3 Pojemnik do przechowywania obiektów
Potrzebny jest co najmniej jeden kontener Object Storage w chmurze NSIS. Poniższy artykuł pokazuje, jak go utworzyć: Jak korzystać z Object Storage w NSIS.
Jako konkretny przykład powiedzmy, że kontener ma nazwę my-files i zawiera dwa elementy. Tak mogłoby to wyglądać na pulpicie nawigacyjnym Horizon:
Dzięki odpowiedniej komendzie s3fs z tego artykułu, będziesz mógł uzyskać dostęp do tego kontenera zdalnie, ale za pośrednictwem lokalnego systemu plików.
Nr 4 Generowane poświadczenia EC2
Konieczne jest wygenerowanie poświadczeń EC2 dla containerów object storage. Jak to zrobić, dowiesz się z poniższego artykułu: Jak wygenerować poświadczenia EC2 i zarządzać nimi na NSIS Cloud.
Nr 5 Znajomość wiersza poleceń systemu Linux
Wymagana jest podstawowa znajomość wiersza poleceń systemu Linux.
Krok 1: Zaloguj się do komputera z systemem Linux
Zaloguj się na konto Ubuntu, które ma uprawnienia sudo. Jeśli używasz SSH do łączenia się z maszyną wirtualną działającą w chmurze NSIS, nazwą użytkownika będzie prawdopodobnie eouser.
Krok 2: Instalacja s3fs
Najpierw sprawdź, czy s3fs jest zainstalowany na twoim komputerze. Wprowadź następujące polecenie w terminalu:
which s3fs
Jeśli s3fs jest już zainstalowany, dane wyjściowe powinny zawierać jego lokalizację, która może wyglądać następująco:
/usr/local/bin/s3fs
Jeśli wynik jest pusty, prawdopodobnie oznacza to, że s3fs nie jest zainstalowany. Zaktualizuj pakiety i zainstaluj s3fs za pomocą tego polecenia:
sudo apt update && sudo apt upgrade && sudo apt install s3fs
Krok 3: Utwórz plik lub pliki zawierające dane logowania
W tym artykule użyjemy zwykłych plików tekstowych do przechowywania poświadczeń S3 - kluczy dostępu i tajnych. (Jeśli nie masz jeszcze poświadczeń, postępuj zgodnie z warunkiem wstępnym nr 4). Każdy plik może przechowywać jedną taką parę i może być używany do montowania wszystkich containerów object storage, do których ta para kluczy zapewnia dostęp.
Dla każdej pary kluczy, której zamierzasz użyć, utwórz nazwę pliku i odpowiedni plik tekstowy. Zawartość pliku będzie tylko jedną linią,
zaczynając od klucza dostępu,
po którym następuje dwukropek,
po którym następuje tajny klucz
z tej pary kluczy. Jeśli klucz dostępu to 1234abcd, a klucz tajny to 4321dcba, odpowiedni plik tekstowy powinien mieć następującą zawartość:
1234abcd:4321dcba
Zmień uprawnienia każdego pliku zawierającego parę kluczy na 600. Jeśli taki plik nazywa się .passwd-s3fs i jest przechowywany w katalogu domowym, polecenie do zmiany jego uprawnień będzie następujące:
chmod 600 ~/.passwd-s3fs
Krok 4: Tworzenie punktów montowania
Pliki wewnątrz kontenera object storage powinny pojawić się w wybranym folderze. Taki folder będzie nazywany w tym artykule mount point. W tym celu można użyć pustego folderu z systemu plików. Można również utworzyć nowe foldery, które będą używane jako punkty montowania.
Aby zachować porządek, użyjmy w tym przykładzie standardowego folderu Linux o nazwie /mnt, który jest używany przez administratorów systemu do montowania innych systemów plików. Dla każdego kontenera użyj zwykłego polecenia mkdir, aby utworzyć podfolder /mnt. Na przykład:
sudo mkdir /mnt/mount-point
Krok 5: Zamontowanie kontenera
Oto typowe polecenie montowania kontenera:
sudo s3fs my-files /mnt/mount-point -o passwd_file=~/.passwd-s3fs -o url=https://s3.waw4-1.cloudferro.com -o endpoint="waw3-1" -o use_path_request_style -o umask=0000 -o allow_other
Oczywiste jest, że będziesz musiał zmienić niektóre z parametrów - ale nie wszystkie. Oto, co należy zmienić, a czego używać zgodnie z zaleceniami:
Edytuj nazwę kontenera i punkt montowania
my-files to nazwa kontenera
/mnt/mount-point to katalog w systemie plików Linux, który będzie punktem montowania dla tego kontenera
Edytuj lokalizację pary kluczy (zwróć uwagę, że zaczyna się od -o)
-o passwd_file - lokalizacja pliku z parą kluczy używaną do montowania tego kontenera
Nie edytuj poniższych parametrów - po prostu skopiuj i wklej dosłownie
-o url - adres URL punktu końcowego
-o endpoint - region S3
-o use_path_request_style - parametr naprawiający problemy z niektórymi znakami (takimi jak kropki).
-o umask - umask, która opisuje uprawnienia dostępu do kontenera - w tym przypadku jest to odczyt, zapis i wykonanie.
-o allow_other - zezwala na dostęp do kontenera wszystkim użytkownikom w systemie
Po wykonaniu polecenia przejdź do katalogu, w którym zamontowałeś kontener object storage. Jeśli nadal używasz folderu /mnt/mount-point, polecenie jest następujące:
cd /mnt/mount-point
Wylistuj zawartość kontenera i poczekaj kilka sekund na zakończenie operacji:
ls
Powinny zostać wyświetlone pliki z kontenera object storage.
Załóżmy, że zamontowałeś kontener object storage pod /mnt/mount-point, który zawiera
katalog o nazwie jakiś-katalog i
plik o nazwie text-file.txt.
Oto, co może dać wykonanie polecenia ls z punktu montowania:
Aby zamontować wiele kontenerów, należy powtórzyć polecenie s3fs z odpowiednimi parametrami tyle razy, ile potrzeba.
Odmontowywanie kontenera
Aby odmontować kontener, należy najpierw upewnić się, że zawartość object storage nie jest używana przez żadną aplikację w systemie, w tym terminale i menedżery plików. Następnie wykonaj następujące polecenie, zastępując /mnt/mount-point punktem montowania kontener object storage:
sudo umount -lf /mnt/mount-point
Konfigurowanie automatycznego montowania object storage
Oto jak skonfigurować automatyczne montowanie kontenera object storage po uruchomieniu systemu.
Sprawdź lokalizację, w której s3fs jest zainstalowany w twoim systemie:
which s3fs
Wynik powinien zawierać pełną lokalizację pliku binarnego s3fs w systemie. Na maszynach wirtualnych Ubuntu utworzonych przy użyciu domyślnych obrazów w chmurze NSIS, prawdopodobnie będzie to:
/usr/local/bin/s3fs
Zapamiętaj go lub zapisz gdzieś, będziesz go potrzebować później.
Otwórz plik /etc/fstab do edycji. Będziesz potrzebował do tego uprawnień sudo. Na przykład, jeśli chcesz użyć nano do tego celu, wykonaj następujące polecenie:
sudo nano /etc/fstab
Dodaj do niego następujący wiersz:
/usr/local/bin/s3fs#my-files /mnt/mount-point fuse passwd_file=/home/eouser/.passwd-s3fs,_netdev,allow_other,use_path_request_style,uid=0,umask=0000,mp_umask=0000,gid=0,url=https://s3.waw4-1.cloudferro.com,region=waw3-1 0 0
Zastąp parametry z tej linii w następujący sposób:
/usr/local/bin/s3fs z pełną lokalizacją pliku binarnego s3fs uzyskanego wcześniej
my-files z nazwą kontenera przechowywania obiektów
/mnt/mount-point z pełną lokalizacją katalogu wybranego jako punkt montowania.
/home/eouser/.passwd-s3fs z pełną lokalizacją pliku zawierającego parę kluczy używaną do uzyskania dostępu do kontenera object storage utworzonego w kroku 3.
Dodaj taką linię dla każdego kontenera, który ma być automatycznie montowany.
Uruchom ponownie maszynę wirtualną i sprawdź, czy montowanie powiodło się, przechodząc do każdego punktu montowania i upewniając się, że znajdują się tam pliki z tych kontenerów object storage.
Zatrzymywanie automatycznego montażu kontenera
Jeśli nie chcesz już, aby kontenery były automatycznie montowane, najpierw upewnij się, że każdy z nich nie jest używany przez żadną aplikację w systemie, w tym terminale i menedżery plików.
Następnie odmontuj każdy kontener, który chcesz zatrzymać przed automatycznym montowaniem. Wykonaj następujące polecenie - zastąp /mnt/mount-point punktem montowania pierwszego kontenera - i powtórz je dla każdego innego takiego kontenera, jeśli ma to zastosowanie.
sudo umount /mnt/mount-point
Na koniec zmodyfikuj plik /etc/fstab.
Aby to zrobić, otwórz ten plik w swoim ulubionym edytorze tekstu z sudo. Jeśli twoim ulubionym edytorem tekstu jest nano, użyj tego polecenia:
sudo nano /etc/fstab
Usuń linie odpowiedzialne za automatyczne montowanie kontenerów, których nie chcesz już automatycznie montować. Jeśli śledziłeś ten artykuł, linie te zostały dodane podczas wykonywania kroku 6.
Zapisz plik i zamknij edytor tekstu.
Możesz teraz ponownie uruchomić maszynę wirtualną, aby sprawdzić, czy kontenery rzeczywiście nie są już montowane.
Potencjalne problemy z obsługą obiektów przez s3fs
s3fs próbuje przetłumaczyć object storage na system plików i w większości przypadków się to udaje. Czasami jednak może to nie być możliwe. Jeden z potencjalnych problemów z s3fs wynika z faktu, że object storage pozwala folderowi i plikowi współdzielić tę samą nazwę w tej samej lokalizacji, co jest wręcz niemożliwe w normalnych systemach operacyjnych.
Oto sytuacja z pulpitu nawigacyjnego Horizon:
Pierwszy wiersz zawiera obiekt o nazwie item, o rozmiarze 10 bajtów. Drugi wiersz zawiera obiekt o nazwie item oznaczony niebieskim kolorem, opisany jako folder. Zarówno „plik”, jak i „folder” są reprezentowane w Horizon, aby wyglądały jak zwykły plik i zwykły folder z Linuksa lub Windows - z wyjątkiem tego, że nie są. W terminologii S3 ten pierwszy jest obiektem o nazwie kończącej się na item, podczas gdy drugi jest obiektem o nazwie kończącej się na item/ (zwróć uwagę, że kończy się ukośnikiem). Ponieważ ich nazwy są różne, mogą współistnieć w magazynie obiektów opartym na standardzie S3.
Gdy wyżej wymieniona lokalizacja jest dostępna przez s3fs, polecenie ls zwróci tylko folder:
Aby zapobiec temu problemowi, należy wymyślić i stosować spójne konwencje systemu plików podczas korzystania z object storage.
Innym potencjalnym problemem jest to, że niektóre zmiany w object storage mogą nie być natychmiast widoczne w systemie plików utworzonym przez s3fs. Poczekaj trochę i sprawdź, czy tak jest.
Co robić dalej
Można również uzyskać dostęp do object storage z NSIS bez montowania jej jako systemu plików.
Więcej informacji można znaleźć w poniższych artykułach: