Widać, że w DigitalOcean w ostatnim okresie przyspieszyli z dodawaniem nowych rzeczy (lub modyfikacjami w kredytach), bo dopiero co pisałem o gorących migawkach (live snapshot), a dziś jest kolejna okazja.
I wcale nie chodzi o nową lokalizację (San Francisco, czyli SFO2), ani nowe logo (stare chyba bardziej mi się podobało, ale może to kwestia przyzwyczajenia) a o możliwość dodania do swojego serwera dodatkowego dysku (albo wielu), dzięki czemu – przynajmniej w niektórych przypadkach – odejdzie konieczność montowania np. zasobów typu S3…
Spis treści w artykule
Block Storage w DigitalOcean
Dodatkowa przestrzeń na dane to chyba jeden z częściej poruszanych tematów na forum DigitalOcean. Często mocy mamy (jeszcze) w zapasie, ale przestrzeń szybko znika – czy to sam system, który zawsze ma tendencje do tycia, czy na kopie zapasowe, czy też po prostu na multimedia wykorzystywane na potrzeby strony internetowej.
Do niedawna w przypadku serwerów VPS w DigitalOcean w sytuacji, gdy kończyła nam się wolna przestrzeń – choć mało jej w standardzie nie ma, to jednak może się skończyć, zwłaszcza przy niektórych projektach – to albo migrowaliśmy serwer do wyższej opcji, tym samym oprócz większej ilości miejsca na dysku (SSD) otrzymywaliśmy więcej pamięci RAM, więcej mocy procesora (CPU), ale i większy rachunek miesięczny, lub korzystaliśmy np. z przestrzeni typu S3.
Od teraz w kilku prostych krokach (naprawdę nie wymaga to wielu umiejętności, jak za chwilę zobaczycie) możemy dodać do naszego serwera dodatkowy dysk – o ile mamy serwer w lokalizacji NYC1 lub SFO2 (ponoć lada chwila dojdzie do tego FRA1), bo – przynajmniej na razie – tylko w tych lokalizacjach jest dostępna ta opcja.
Kilka najważniejszych informacji
Dodatkowa przestrzeń kosztuje nas 0,10 $ za każdy gigabajt miesięcznie, czyli np. dodatkowe 21 GB będzie nas kosztować 2,1 $ miesięcznie. Dyski możemy tworzyć od 1 GB do 16 TB, czyli jest elastycznie (taki dodatkowy dysk 1 GB, np. na jakiś mały BackUp to 10 centów miesięcznie).
Dodatkowa pamięć znajduje się na dyskach SSD, choć szybki test za pomocą narzędzia SysBench wykazał, że jest sporo wolniejsza od podstawowej pamięci, która również bazuje na dyskach SSD.
Dyski można swobodnie przenosić między różnymi serwerami, ale tylko w obrębie danego regionu. Należy też pamiętać – niby oczywiste, ale – że w danym momencie dodatkowy dysk może być podpięty (przypisany) do jednego serwera, ale do każdego serwera można podpiąć wiele dysków (trochę tak, jak ma to miejsce w przypadku fizycznych napędów/dysków).
Transmisja między dodatkową przestrzenią a naszym serwerem jest szyfrowana i izolowana od reszty sieci (pewnie to też ma jakiś wpływ na mniejsza wydajność tej pamięci).
Tworzenie (i dodawanie do serwera) dodatkowego dysku
Na potrzeby testów musiałem utworzyć nowy serwer, bo wprawdzie mam w DigitalOcean kilka serwerów, w kilku lokalizacjach, to akurat nic w lokalizacjach, w których aktualnie jest dostępna usługa dodatkowej pamięci (NYC1 i SFO2), co ma też dobrą stronę – wydajność mogłem sprawdzić na całkowicie nieobciążonym serwerze…
W każdym razie, jeśli wejdziecie w ustawienia serwera znajdującego się w rejonie, w którym dostępna jest opcja dodatkowej przestrzeni, to w menu traficie na nową opcję – volumes:
Wystarczy kliknąć „attach a volume”, podać nazwę (istotna w dalszych krokach) i wybrać rozmiar dysku:
Od razu można też zaznaczyć przypisanie pamięci do odpowiedniego serwera, dzięki czemu zaraz po utworzeniu dysku pojawią się informacje jak dodać dysk w serwerze:
W tym momencie w panelu będzie już widać nowo utworzony dysk:
Z tego miejsca możemy też nim zarządzać – od odpięcia, zmiany rozmiaru, po skasowanie.
Warto mieć na uwadze, że zmianę rozmiaru możemy wykonać tylko w jedną stronę – w górę:
Jeśli zajdzie potrzeba zmniejszenia dysku, to najprościej będzie chyba utworzyć nowy – o odpowiednim rozmiarze – na który następnie skopiujemy wszystkie dane (pliki) i podmienimy pierwotny dysk (ten o większym rozmiarze).
Konfiguracja serwera
Wprawdzie informacje o niezbędnej konfiguracji serwera macie dostępną w panelu, to dla zasady podam ją też poniżej – tak by zachować odpowiednią kolejność (najpierw tworzymy dysk, później montujemy go w systemie).
W naszym przypadku dysk nazywa się „hdd02”, tak więc zaczynamy:
sudo mkfs.ext4 -F /dev/disk/by-id/scsi-0DO_Volume_hdd02
sudo mkdir -p /mnt/hdd02
sudo mount -o discard,defaults /dev/disk/by-id/scsi-0DO_Volume_hdd02 /mnt/hdd02
Tym sposobem nasz nowy dysk mamy dostępny pod adresem:
/mnt/hdd02
Od razu warto dodać odpowiedni wpis do pliku fstab, dzięki czemu dysk będzie automatycznie montowany przy każdym uruchomieniu serwera:
echo '/dev/disk/by-id/scsi-0DO_Volume_hdd02 /mnt/hdd02 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
Oczywiście można to zrobić również ręcznie:
sudo nano/fstab
I dodajemy wpis:
/dev/disk/by-id/scsi-0DO_Volume_hdd02 /mnt/hdd02 ext4 defaults,nofail,discard 0 0
Lista dysków – na nowym serwerze – bez dodatkowego dysku:
I z dodatkowym dyskiem:
SysBench, czyli szybki test wydajności
Od razu postanowiłem sprawdzić jak prezentuje się pod względem wydajności dodatkowa pamięć, oczywiście w porównaniu z podstawowym dyskiem, do czego wykorzystałem opisywany jakiś czas temu program SysBench.
I z doświadczenia wiem, że nie zawsze wyniki uzyskane w różnych testach przekładają się na rzeczywistą wydajność w środowisku produkcyjnym…
Test został wykonany na nowym serwerze (a konkretnie 2) o następujących parametrach:
- RAM: 512 MB
- CPU: 1 rdzeń
- Podstawowy dysk: 20 GB SSD
- Lokalizacja: SFO2
Test 1 (serwer 1):
sysbench --test=fileio --file-total-size=15G prepare
sysbench --test=fileio --file-total-size=15G --file-test-mode=rndrw --max-time=30 --max-requests=100000 run
128 files, 120Mb each
15Gb total file size
Block size 16Kb
Test 2 (serwer 2):
sysbench --test=fileio --file-total-size=1G prepare
sysbench --test=fileio --file-total-size=1G --file-test-mode=rndrw --max-time=30 --max-requests=1000000 run
128 files, 8Mb each
1Gb total file size
Block size 16Kb
Test 1, pamięć standardowa:
Operations performed: 60000 Read, 40000 Write, 128000 Other = 228000 Total
Read 937.5Mb Written 625Mb Total transferred 1.5259Gb (82.842Mb/sec)
5301.90 Requests/sec executed
Test execution summary:
total time: 18.8612s
total number of events: 100000
total time taken by event execution: 8.1086
per-request statistics:
min: 0.00ms
avg: 0.08ms
max: 13.60ms
approx. 95 percentile: 0.15ms
Threads fairness:
events (avg/stddev): 100000.0000/0.00
execution time (avg/stddev): 8.1086/0.00
Test 1, pamięć dodatkowa:
Operations performed: 9300 Read, 6200 Write, 19714 Other = 35214 Total
Read 145.31Mb Written 96.875Mb Total transferred 242.19Mb (8.0706Mb/sec)
516.52 Requests/sec executed
Test execution summary:
total time: 30.0084s
total number of events: 15500
total time taken by event execution: 10.1615
per-request statistics:
min: 0.01ms
avg: 0.66ms
max: 16.01ms
approx. 95 percentile: 1.55ms
Threads fairness:
events (avg/stddev): 15500.0000/0.00
execution time (avg/stddev): 10.1615/0.00
Test 2, pamięć standardowa:
Operations performed: 117960 Read, 78640 Write, 251550 Other = 448150 Total
Read 1.7999Gb Written 1.2Gb Total transferred 2.9999Gb (102.39Mb/sec)
6552.67 Requests/sec executed
Test execution summary:
total time: 30.0030s
total number of events: 196600
total time taken by event execution: 8.1819
per-request statistics:
min: 0.00ms
avg: 0.04ms
max: 10.05ms
approx. 95 percentile: 0.12ms
Threads fairness:
events (avg/stddev): 196600.0000/0.00
execution time (avg/stddev): 8.1819/0.00
Test 2, pamięć dodatkowa:
Operations performed: 10320 Read, 6880 Write, 21889 Other = 39089 Total
Read 161.25Mb Written 107.5Mb Total transferred 268.75Mb (8.9556Mb/sec)
573.16 Requests/sec executed
Test execution summary:
total time: 30.0092s
total number of events: 17200
total time taken by event execution: 8.0178
per-request statistics:
min: 0.00ms
avg: 0.47ms
max: 7.04ms
approx. 95 percentile: 1.17ms
Threads fairness:
events (avg/stddev): 17200.0000/0.00
execution time (avg/stddev): 8.0178/0.00
Jak widać – każdorazowo pamięć standardowo dostępna okazywała się dużo szybsza, niż dodatkowy dysk – ale tego można się było spodziewać, i należy po prostu to uwzględnić planując wykorzystanie zasobów (stąd pisałem o tej pamięci w kontekście miejsca na kopie zapasowe, czy do przechowywania większych plików multimedialnych).
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01