Skip to main content
  • »
  • S3 »
  • Jak zamontować kontener object storage jako system plików w Linuksie przy użyciu s3fs na NSIS Cloud

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:

../_images/mount-object-storage-s3fs-linux-06_creodias.png

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:

../_images/mount-object-storage-s3fs-linux-03_creodias.png

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:

../_images/mount-object-storage-s3fs-linux-04_creodias.png

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:

../_images/mount-object-storage-s3fs-linux-05_creodias.png

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: