How-To Jak realnie sprawdzić prędkość/wydajność woluminów RAID?

Status
Not open for further replies.

Silas Mariusz

rm -rf /
Help us, GOD!
Apr 5, 2008
10,201
31
2,297
153
39
Nowy Sącz
forum.qnap.net.pl
QNAP
TS-x77
Ethernet
1 GbE
1706464656252.png


Poziom trudności: Łatwy + (Matematyka poziom klasy 4+)
Czas poświęcony na test: 5-15 minut

(Przeczytaj opcjonalnie) Informacja ogólna dot. RAID, prędkości i poziomów bezpieczeństwa
Serwery NAS mogą składać się z wielu dysków i wielu woluminów. W zależności od konfiguracji, czy są to woluminy:
  • RAID 0 (maksimum wydajności, zero bezpieczeństwa),
  • RAID 1 (tzw. mirroring i teoretycznie prędkość zapisu powinna być tak sama dla wszystkich dysków - ale to mit, ponieważ na to, też ma wpływ prędkość kontrolera, procesora, który przetwarza RAID),
  • RAID 5 (stosunkowo najwydajniejszy z wszystkich RAID, ale WYŁĄCZNIE w zapisach sekwencyjny, natomiast najmniej bezpieczny ponieważ pozwala na awarię wyłącznie jednego dysku i nie tak bezpieczny jak RAID1 oraz RAID6),
  • RAID 6 (dużo bezpieczniejszy niż RAID 5, pozwala na awarię aż dwóch dysków, ale najwolniejszy z nich wszystkich)

    oraz są inne RAID takie jak:
  • RAID10 (wydawałoby się, że ten jest najbezpieczniejszy, ale zdarzają się przypadki [bardzo rzadko], że jednak mimo wszystko ta sama para dysków potrafi ulec uszkodzeniu/awarii)
  • RAID50 (szybka wersja RAID5, ale mniej bezpieczna)
  • RAID60 (szybka wersja RAID6, wolniejsza od RAID50, ale bardzo bezpieczna)

    (Powyższe informacje nie są oficjalne, ale powstały z feedbacku użytkowników)

    Dodatkowa informacja: W przypadku urządzeń z oprogramowaniem QuTS Hero, które wykorzystuje system ZFS,, ma on znaczną przewagę nad EXT3/EXT4 czy BTRFS jeśli chodzi o bezpieczeństwo i integralność danych oraz pozwala uniknąć przypadkom tzw. "cichego uszkodzenia RAID".

Co jeszcze ma wpływa na wydajność?
Na wydajność oczywiście wpływa wiele innych czynników np. czy wolumin jest statyczny, cienki, lub gruby. Woluminy typu cienkiego na początku swojej pracy potrafią być szybkie jednak z czasem ich wydajność może spadać i jest to normalne i akceptowalne zachowanie. Woluminu typu grubego zawsze zachowują taką samą prędkość pracy jak woluminy statyczne.
Kolejnym czynnikiem wpływającym na wydajność dysków są:
  • raid scrubbing
  • odbudowa raid
  • relokowanie sektorów przez dysk (SMART)
  • NCQ - kolejkowanie zapisu (regulowane przez każdy z dysków)

Dlaczego warto wykonać taki test prędkości pracy woluminu?
Pomimo tego, że producent deklaruje prędkości zapisu i odczytu, to są to maksymalne prędkości jakie dysk może osiągnąć. W przypadku kiedy na dysku zacznie brakować przestrzeni lub jest użytkowany przez dłuższy czas i dochodziło na nim do intensywnego zapisu i usuwania danych oraz ponownego ich zapisu, nowe dane mogą być fragmentowane. Odczyt takich pofragmentowanych danych powoduje, że serwomechanizm głowic musi intensywniej pracować zmieniając częściej swoje położenie, co przekształca się na mniejszą ilość IOPS (czyli ilości operacji wejść wyjść) ponieważ za każdym razem musi odnieść się do innej powierzchni talerza. Dawniej w komputerach PC, takie zjawisko można było redukować za pomocą tzw. defragmentacji.

W przypadku tak dużych pojemnościowo macierzy jakie obecnie spotykamy od nawet 10TB w górę, defragmentacja zajmowałaby zbyt wiele czasu. Wobec tego pozwala się na to, aby dane zostały pofragmentowane ponieważ proces defragmentacji na dużych RAID mógłby trwać kilka dni lub tygodni. W związku z tym rekomenduje się, aby na woluminie administrator zawsze zachowywał min. 20% wolnej przestrzeni. W przypadku nie stosowania się do tej rekomendacji i regularnemu zapisu woluminu "po brzegi" będzie finalnie skutkować brakiem wydajności pracy dysków, przez fakt, że dane zostaną mocno pofragmentowane.

Jak sprawdzić prędkość odczytu/IOPS dysków?
  1. Połącz się do serwera przez SSH

  2. Wykonaj polecenie:
    Bash:
    qcli_storage -T

    UWAGA! Wynik jedynie zwróci prędkości odczytu pojedynczo zainstalowanych dysków, np.:
    1710551786387.png

Jak sprawdzić prędkość odczytu z woluminów?
  1. Połącz się do serwera przez SSH

  2. Wykonaj polecenie:
    Bash:
    qcli_storage -t

    UWAGA!
    Wynik zwróci prędkości, które udało się osiągnąć na poszczególnych woluminach, np.:
    1710551872234.png

Jak sprawdzić prędkość woluminu na obecnie używanych dyskach/konfiguracji RAIDowej według tradycyjnej metody Linuxowej (zalecane dla platformy ARM)?
  1. Utwórz testowy udział sieciowy np. "Test" na konkretnym woluminie/RAID

  2. Połącz się do serwera przez SSH

  3. Przejdź do utworzonego przez siebie udziału sieciowego Test poleceniem:
    Bash:
    cd /share/Test

  4. Opróżnij cache z pamięci RAM wykonując polecenia:
    Bash:
    # metoda stricte Linuxowa (dzialajaca rowniez na QNAP)
    sysctl -w vm.drop_caches=3
    sysctl -w vm.compact_memory=1
    
    # metoda dla urządzeń typu Embedded (działająca również na QNAP)
    echo 3 > /proc/sys/vm/drop_caches
    echo 1 > /proc/sys/vm/compact_memory
    
    # -- możesz wykonać obie metody jednocześnie
    # teraz upewnij się, że wszystkie dane zostały zsynchronizowane pomiędzy pamięcią RAM (cache) a dyskami, wykonaj:
    sync

  5. Następnie wykonaj test zapisu pliku 2GB
    Bash:
    time dd if=/dev/zero of=test.img bs=2G count=1
    Polecenie to powinno zwrócić dwie wartości (prędkość i czas), przykład:
    Code:
    1+0 records in
    1+0 records out
    2147483648 bytes (2.0GB) copied, 25.466378 seconds, 80.4MB/s
    
    real    0m25.539s
    user    0m0.000s
    sys    0m1.256s
    80,4MB/s oznacza prędkość zapisu danych.
    Jeśli natomiast polecenie dd nie wyświetla takiej prędkości, to łatwo to możesz obliczyć matematycznie.
    W tym celu podziel 2GB - czyli 2048 MB : [czas realny].
    Dla powyższego przykładu wartość czasu realnego wynosi 25,5 sek.
    2048 MB : 25,539 = 80,19108030854771 MB/s zapisu

  6. Prędkość odczytu można sprawdzić identycznie, ale ponownie wykonaj punkt 4 i wróć tutaj.

  7. Wykonaj polecenie:
    Bash:
    time dd if=test.img of=/dev/null bs=2G count=1
    Polecenie powinno zwrócić dwie wartości (prędkość i czas), przykład:
    Code:
    1+0 records in
    1+0 records out
    2147483648 bytes (2.0GB) copied, 9.072459 seconds, 225.7MB/s
    
    real    0m9.118s
    user    0m0.000s
    sys    0m0.803s
    Gdzie 225.7MB/s to prędkość odczytu wcześniej zapisanego pliku. Jeśli jednak nie jest ona widoczna, to ponownie, otwórz kalkulator i oblicz:
    2048 MB : [realny czas].
    W powyższym przykładzie:
    2048 MB : 9,118 sekundy = 224,6106602325071 MB/s odczytu

Jak sprawdzić faktyczny odczyt/zapis woluminu wykorzystując faktyczne zasoby pamięci RAM i procesora?
(Tylko procesor Intel/AMD) (Rekomendowany sposób)

  1. Utwórz testowy udział sieciowy np. "Test" na konkretnym woluminie/RAID

  2. Połącz się do serwera przez SSH

  3. Przejdź do utworzonego przez siebie udziału sieciowego Test poleceniem:
    Bash:
    cd /share/Test

  4. Pobierz narzędzie diskfill-test tool:
    Bash:
    wget https://files.qnap.net.pl/repo/io/diskfill.tar.gz --no-check-certificate
    tar zxvf diskfill.tar.gz
    chmod +x disk-filltest-64bit

  5. Wykonaj pomiar zapisu i odczytu -f [1 jednego pliku] o rozmiarze -S [10240Mb, czyli 10Gb]
    Bash:
    ./disk-filltest-64bit -f 1 -S 10240

    1710552069765.png


UWAGA! Powyższy eksperyment mówi o prędkościach realnych, ale w których kazaliśmy systemowi operacyjnego opróżnić to co trzyma w pamięci RAM i cache. Zatem czym więcej aplikacji jest uruchomionych a mniej dostępnej pamięci RAM lub system korzysta ze SWAP'a, to odczuwalna prędkość serwera może być jeszcze gorsza. Powyższy test pokazuje jakie maksimum można osiągnąć i jest to wyłącznie spowodowane:
1. Prędkościami dysków
2. Ilością dostępnego RAM
3. Prędkością magistrali
4. Ilością uruchomionych procesów
5. Ogólnymi zasobami sprzętowymi

Wyniki te w żaden sposób nie można traktować jako usterkę, nawet jeśli są niezadowalające. Jeśli wyniki według Was są za małe, zalecana jest wymiana dysków na SSD oraz zaopatrzenie się w serwer na lepszym procesorze lub redukcją uruchomionych na nim aplikacji.
 
Status
Not open for further replies.

Users search this thread by keywords

  1. *disk*fill*
  2. putty
  3. system na raid
  4. prędkość
  5. dysk