Dzisiejszy temat troszkę przeskoczył do góry na liście tematów do opisania, ale niejako sam wywołałem go do tablicy stawiając nowy serwer do obsługi m.in. kopii zapasowych innych serwerów/stron internetowych.

Simple Storage Service (S3)

Nie będę zbytnio wdawał się w szczegóły co to jest S3 – zainteresowani albo wiedzą, albo znajda takie informacje na stronach dostawców tego typu usług, a reszcie wystarczy pewnie informacja, że jest to jakby internetowy dysk (object storage), który możemy wykorzystać do przechowywania naszych plików.

Zarazem jest to na tyle uniwersalna technologia/usługa, że możemy taką dodatkową przestrzeń traktować zarówno jako miejsce na kopie zapasowe np. serwera czy strony internetowej, ale również jako normalną przestrzeń, w której możemy trzymać np. większe pliki multimedialne naszej strony (mam w planach kilka wpisów na ten temat, więc pewnie za jakiś czas…).

Dużym atutem usług S3 jest również to, że niezależnie od dostawy usługi zazwyczaj są one ze sobą zgodne, co umożliwia relatywnie swobodne przenoszenie zasobów między rożnymi dostawcami/usługami.

Korzystanie z Simple Storage Service (S3) w systemie Linux (Debian/Raspbian)

Wprawdzie chyba najpopularniejszych (i zarazem prekursorem tego typu usługi) jest Amazon, to ja na potrzeby naszego poradnika skorzystam z usługi „pliki w chmurze” oferowanej przez e24cloud.com/Beyond.pl – ale Wy możecie skorzystać z dowolnej innej usługi zgodnej ze standardem S3.

s3fs (s3fs-fuse)

Wprawdzie programów z których można skorzystać jest co najmniej kilka, to ja najczęściej korzystam z s3fs, który jest prosty w konfiguracji, a zarazem działa bez (większych) problemów.

W tym poradniku będę opierał się na właśnie przeprowadzonej instalacji i konfiguracji w systemie Raspbian (Debian 8 Jessie), działającym na Raspberry Pi B (świeża instalka).

Instalacja s3fs-fuse w systemie Debian/Raspbian

Niestety s3fs nie znajdziemy (na razie?) w standardowych repozytoriach Debiana, dlatego musimy program pobrać i skompilować samodzielnie.

Zaczynamy od instalacji niezbędnych pakietów:

sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev fuse fuse-utils libfuse-dev libssl-dev libxml2-dev make pkg-config

W razie błędu związanego z fuse-utils i przerwanej instalacji pakietów pozbywamy się go z listy:

sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev fuse libfuse-dev libssl-dev libxml2-dev make pkg-config

Następnie pobieramy, kompilujemy i instalujemy s3fs:

sudo git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install

Cała operacja w przypadku Raspberry Pi trwa kilka(naście) minut.

Konfiguracja konta S3

Po instalacji musimy jeszcze skonfigurować program – w tym celu będziemy potrzebować:

  • Adres serwera/usługi (będzie wymagane w dalszych krokach)
  • Klucz API (coś w rodzaju nazwy użytkownika)
  • Sekretny klucz API (coś w rodzaju hasła)

e24cloud_e24pliki_panel01

Plik z kluczami API

Gdy mamy niezbędne informacje (klucze API) tworzymy plik z danymi autoryzacyjnymi:

sudo nano /etc/passwd-s3fs

W pliku tym zapisujemy klucz API i sekretny klucz API wg wzoru:

KluczAPI:SekretnyKluczAPI

Gdy korzystamy z więcej niż jednego kontenera (o tym za chwilę) podajemy również nazwę kontenera:

NazwaKontenera:KluczAPI:SekretnyKluczAPI

Każda grupa (kontener + klucze API) w oddzielnej linii.

Wprawdzie ścieżka i nazwa pliku może być inna, to jeśli zamierzamy w przeszłości korzystać z automatycznego montowania zasobu wraz ze startem systemu (fstab) to ścieżka i nazwa pliku muszę być takie jak podałem powyżej (/etc/passwd-s3fs).

Ze względów bezpieczeństwa program nie zadziała, jeśli nie nadamy jeszcze odpowiednich uprawnień dla pliku z kluczami:

sudo chmod 600 /etc/passwd-s3fs

I to właściwie cała (podstawowa) konfiguracja – zapowiadałem, że jest szybko i (relatywnie) prosto…

Tworzenie kontenera S3 (S3 bucket)

Zanim zamontujemy naszą pamięć zdalną jako element systemu plików musimy utworzyć jeszcze kontener (powiedzmy, że konto S3 to coś na wzór dysku fizycznego, a kontener to partycja na tym dysku), w którym będziemy trzymać pliki.

Jeśli macie już utworzony kontener z którego chcecie korzystać – śmiało możecie przejść do następnego kroku.

Kontener możecie utworzyć bezpośrednio z panelu zarządzania – jeśli jest dostępna taka opcja:

e24cloud_e24pliki_panel_manager-plikow01

DragonDisk

Jeśli nie macie takiej opcji w Waszym panelu zarządzania lub w przypadku gdy chcecie uzyskać dostęp do pamięci również np. z systemu Windows i/lub planujecie więcej operacji warto skorzystać z dedykowanego do takich czynności programu, np. bezpłatnego DragonDisk:

dragondisk_e24cloud_e24pliki01

Jego obsługa nie powinna raczej sprawić problemów, a sam wygląd – jak widać – jest standardowy dla tego typu programów (okno podzielone na 2 części).

Tutaj macie przykładową konfigurację dla usługi „pliki w chmurze” (e24cloud):

dragondisk_e24cloud_e24pliki02

  • Provider: Other S3 compatible service
  • Service Endpoint: e24files.com
  • Account name: e24files.com
  • Access Key: Klucz API
  • Secret Key: Sekretny klucz API
  • HTTP Port: 80
  • HTTPS Port: 433
  • Connect using SSL/HTTPS

Montowanie kontenerów S3

Jeśli chodzi o podstawy związane z montowaniem dysków/zasobów w systemie Linux (Debian) zapraszam Was do tego wpisu – tutaj skupię się już tylko na elementach specyficznych dla usługi S3 i aplikacji s3fs:

sudo s3fs kontener /lokalny/punkt/montowania -o url="https://e24files.com" -o allow_other

Jeśli występuje problem przy połączeniu z adresem po „https” (np. w Raspbien/Debian Wheezy bywały z tym problemy), i musimy skorzystać z „http”:

sudo s3fs kontener /lokalny/punkt/montowania -o url="http://e24files.com" -o allow_other

Choć ja zazwyczaj korzystam z polecenia ze wskazaniem pliku w którym znajdują się dane autoryzacyjne:

sudo s3fs kontener /lokalny/punkt/montowania -o url="https://e24files.com" -o passwd_file=/ścieżka/do/pliku/autoryzacyjnego -o allow_other

W naszym przypadku będzie to:

sudo s3fs kontener /lokalny/punkt/montowania -o url="https://e24files.com" -o passwd_file=/etc/passwd-s3fs -o allow_other

Wprawdzie gdy korzystamy z pliku „/etc/passwd-s3fs” podawanie ścieżki do niego w tym poleceniu nie jest wymagane, to ja na wszelki wypadek (wyrabianie nawyków) i tak podaje.

Gdy coś nie działa

Może się zdarzyć, że podczas próby zamontowania zasobu S3 dostaniecie np. taki komunikat błędu:

ransport endpoint is not connected

Wtedy warto dodać następujące parametry do polecenia:

-f -d

Co da nam np. takie polecenie:

sudo s3fs kontener /lokalny/punkt/montowania -o url="https://e24files.com" -o passwd_file=/ścieżka/do/pliku/autoryzacyjnego -o allow_other -f -d

Dzięki tym 2 parametrom włączymy debugowania, i być może pojawi się jakiś błąd, który naprowadzi nas/Was na rozwiązanie problemu.

Odmontowanie zasobu

Skoro jesteśmy przy montowaniu, to warto choćby wspomnieć jak odmontować taki zasób z lokalnego systemu plików.

Wprawdzie możemy skorzystać ze standardowego polecenia:

sudo umount /lokalny/punkt/montowania

To chyba bezpieczniej jest skorzystać z takiego polecenia:

sudo fusermount -u /lokalny/punkt/montowania

Montowanie za pomocą fstab

Kontener możemy również zamontować podczas startu systemu, korzystając z pliku „fstab”:

sudo nano /etc/fstab

W którym dodajemy linijkę wg wzoru:

s3fs#kontener /lokalny/punkt/montowania fuse allow_other,url=https://e24files.com 0 0

W przypadku korzystania z tej metody (fstab) ścieżka i nazwa pliku autoryzacyjnego musi być taka jak podałem powyżej (/etc/passwd-s3fs).

Korzystanie z pamięci S3

Po zamontowaniu pamięć widoczna jest w systemie jako kolejny zasób:

Filesystem Size Used Avail Use% Mounted on
s3fs 256T 0 256T 0% /lokalny/punkt/montowania

Tak więc możecie z niej korzystać właściwie dowolnie – pamiętajcie tylko, że z racji tego, że jest to pamięć zdalna, dostęp do niej może być trochę wolniejszy (nawet nie tyle sam transfer, co czas dostępu).

Automatyczne pobieranie plików na dysk lokalny

Ja z tego typu zasobów korzystam wprawdzie do różnych celów, to podstawowym celem dla którego instaluje program s3fs na Raspberry Pi jest automatyczne pobieranie plików z kopiami na lokalny dysk podłączony do Raspberry Pi.

Wygląda to tak, że wszystkie serwery wykonują w nocy kopie zapasowe, które są zapisywane w pamięci S3, a nad ranem z tym zasobem łączy się Raspberry Pi i pobiera pliki na lokalny dysk twardy.

W tym celu korzystam z takiego skryptu uruchamianego za pomocą CRONa:

#!/bin/bash

sudo s3fs kontener /lokalny/punkt/montowania -o url="https://e24files.com" -o passwd_file=/etc/passwd-s3fs -o allow_other

sudo rsync --remove-source-files -rtvu --exclude '.fuse_hidden*' /lokalny/punkt/montowania /lokalny/dysk/na/kopie

sudo fusermount -u /lokalny/punkt/montowania exit

Działanie skryptu jest relatywnie proste – najpierw jest montowany kontener o nazwie „kontener” lokalnie (/lokalny/punkt/montowania), a następnie za pomocą polecenia „rsync” pobieramy z niego wszystkie pliki na lokalny dysk (/lokalny/dysk/na/kopie), po czym następuje odmontowanie zasobu S3 z lokalnego systemu plików.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon powiedział tacie o promocji dla czytelników WebInsider.pl i zaoszczędzili 80% na księgowości internetowej wFirma
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Monika ćwiczy przed kongresem ko..., ale dzięki motywowa Divi od Elegant Themes chyba nawet ona da radę...