Různé informace

Testování výkonu NAS

Výkonné QNAP NAS servery nabízí všestranné použití a různorodé možnosti nastavení RAIDových polí a mnozí z uživatelů dochází k otázce, jak otestovat interní rychlosti RAID svazků v QNAP NAS.

Na začátek je vhodné připomenout, že test výkonů jednotlivých disků (klasické 3,5“ SATA, SAS nebo 2,5“ SSD disky, M.2 SATA či M.2 NVMe moduly) lze spustit přímo v QTS systému. Konkrétně v části „Úložiště s snímky“ -> Disky/VJBOD -> tlačítko „Test výkonu“, kde můžete spustit test výkonu v rámci nabídky Postupné čtení (Sequential read) a také Čtení IOPs (IOPs read result).

QNAP QTS - Úložiště a snímky (1)

QNAP QTS - Úložiště a snímky (2)

 Pokud vás ale zajímá, jak je na tom výkonově váš RAIDový svazek, pak musíme sáhnout na příkazovou řádku.

  1. Nejprve povolíme SSH přístup k NAS (až dokončíte testování, nezapomeňte SSH přístup kvůli bezpečnosti zase zrušit).
    
V QTS klikneme na ikonu Ovládací panely a v části Síťové a souborové služby pak zvolíme Telnet / SSH. Zde povolíme SSH spojení, nastavíme port na 2222 a klikneme na tlačítko „Použít“.

    QNAP QTS - Ovládací panely a SSH

  2. Spustíme příkazovou řádku na vašem počítači a pro spojení použijeme ssh příkaz: ssh admin@IP_NAS -p 2222
    Pokud tedy má vaše NAS IP např. 192.168.0.10, pak příkaz bude v praktické formě: ssh Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript. -p 2222

  3. Pro zajímavost, pokud již používáte QuTS hero na QNAP NAS, pak jako uvítací zprávu uvidíte níže uvedené menu, nicméně, zde vložíme písmeno „Q“ a potvrdíme návrat do klasické příkazové řádky (ve standardním QTS systému toto menu není k dispozici).
     +--------------------------------------------------------------------------+
      |  Console Management - Main menu                                    |
      |                                                                                       |
      |  1: Show network settings                                                 |
      |  2: System event logs                                                       |
      |  3: Reset to factory default (password required)                  |
      |  4: Activate/ deactivate a license                                        |
      |  5: App management                                                        |
      |  6: Reboot in Rescue mode (w/o configured disk)                |
      |  7: Reboot in Maintenance Mode                                        |
      |  Q: Quit (return to normal shell environment)                      |
      +--------------------------------------------------------------------------+

  4. Ke spuštění testu propustnosti (čtení) RAID polí použijeme tento příkaz: qcli_storage -t force=1
    Výsledkem by pak měl být výpis s konkrétními hodnotami, viz tyto příklady:

    QNAP NAS TVS-1282T3 (QuTS hero)
    fio test command for File system: /sbin/fio --filename=test_device/qcli_storage --direct=0 --rw=read --bs=1M --runtime=15 --name=test-read --ioengine=libaio --iodepth=32 --size=128m &>/tmp/qcli_storage.log
    Start testing!
    Performance test is finished 100.000%...
    VolID   SharedFolderName    Pool     Mapping_Name            Mount_Path                    FS_Throughput
    2       Web                 1        zpool1/zfs2             /share/ZFS2_DATA              2.19 GB/s
    3       Public              1        zpool1/zfs3             /share/ZFS3_DATA              5.43 GB/s
    4       homes               1        zpool1/zfs18            /share/ZFS18_DATA             5.68 GB/s
    5       Virtual             2        zpool2/zfs19            /share/ZFS19_DATA             1.37 GB/s
    6       Data                3        zpool3/zfs20            /share/ZFS20_DATA             4.46 GB/s
    7       Multimedia         3        zpool3/zfs21            /share/ZFS21_DATA             5.43 GB/s
    (Poznámka: zpool1 -> 2x M.2 NVMe v RAID1, zpool2 -> 3x 2,5“ SSD v RAID0, zpool3 -> 8x SATA disky v RAID5. Vyšší hodnoty čtení jdou na vrub ZFS cache.)

    QNAP NAS TS-871 (QTS 4.4.2)
    fio test command for LV layer: /sbin/fio --filename=test_device --direct=0 --rw=read --bs=1M --runtime=15 --name=test-read --ioengine=libaio --iodepth=32 &>/tmp/qcli_storage.log
    fio test command for File system: /sbin/fio --filename=test_device/qcli_storage --direct=0 --rw=read --bs=1M --runtime=15 --name=test-read --ioengine=libaio --iodepth=32 --size=128m &>/tmp/qcli_storage.log
    Start testing!
    Performance test is finished 100.000%...
    VolID   VolName             Pool     Mapping_Name            Throughput      Mount_Path                    FS_Throughput
    1       DataVol1            288      /dev/mapper/cachedev1   798.48 MB/s     /share/CACHEDEV1_DATA         1.09 GB/s

  5. Dále, prakticky test zápisu na RAID pole spustíme v určité části, která se nachází v konkrétním svazku, tzn. použijeme příkaz: cd /share/Multimedia pro přístup do složky Multimedia (případně jiné složky, které máte situované na různých RAID polí) a nyní již můžeme spustit samotný příkaz testu: dd if=/dev/zero of=test.10G bs=1M count=10000
    Opět by výsledkem měl být výpis s konkrétními hodnotami, viz tyto příklady:

    TVS-1282T3 (QuTS hero)
    2x M.2 NVMe v RAID1 -> 10485760000 bytes (9.8GB) copied, 2.563685 seconds, 3.8GB/s
    3x 2,5“ SSD v RAID0 -> 10485760000 bytes (9.8GB) copied, 2.709943 seconds, 3.6GB/s
    8x SATA disky v RAID5 -> 10485760000 bytes (9.8GB) copied, 9.457306 seconds, 1.0GB/s

    TVS-871 (QTS 4.4.2)
    8x SATA disky v RAID5 -> 10485760000 bytes (9.8GB) copied, 11.589377 seconds, 862.9MB/s

  6. Ke zjištění RAIDových IOPs rychlostí v rámci zápisu a čtení nám pak poslouží níže uvedené příkazy.
    RAID IOPS zápis (pro random zápis můžete využít -rw=randwrite): fio -filename=fiotest -numjobs=8 -iodepth=64 -size=1G -bs=4K -rw=write -ramp_time=30s -runtime=1m -time_based -ioengine=libaio -group_reporting -name=test
    RAID IOPS čtení: fio -filename=fiotest -numjobs=8 -iodepth=64 -size=1G -bs=4K -rw=read -ramp_time=30s -runtime=1m -time_based -ioengine=libaio -group_reporting -name=test
    A opět by výsledkem měl být podrobný výpis s konkrétními hodnotami, viz tyto příklady:

    ... (IOPs zápis)
    fio-2.2.10
    Starting 8 processes
    test: Laying out IO file(s) (1 file(s) / 1024MB)
    Jobs: 8 (f=8): [W(8)] [100.0% done] [0KB/757.6MB/0KB /s] [0/194K/0 iops] [eta 00m:00s]
    test: (groupid=0, jobs=8): err= 0: pid=2972: Wed Jul  1 13:56:36 2020
      write: io=44382MB, bw=757435KB/s, iops=189350, runt= 60001msec
        slat (usec): min=6, max=110923, avg=38.74, stdev=205.65
        clat (usec): min=1, max=109052, avg=2662.62, stdev=1824.74
         lat (usec): min=11, max=109103, avg=2703.39, stdev=1839.79
        clat percentiles (usec):
         |  1.00th=[  956],  5.00th=[ 1432], 10.00th=[ 1672], 20.00th=[ 1992],
         | 30.00th=[ 2192], 40.00th=[ 2352], 50.00th=[ 2480], 60.00th=[ 2608],
         | 70.00th=[ 2768], 80.00th=[ 3024], 90.00th=[ 3504], 95.00th=[ 4080],
         | 99.00th=[ 7264], 99.50th=[10304], 99.90th=[20608], 99.95th=[31104],
         | 99.99th=[68096]
        bw (KB  /s): min=    3, max=104784, per=12.38%, avg=93781.35, stdev=12786.61
        lat (usec) : 2=0.01%, 4=0.01%, 20=0.01%, 50=0.01%, 100=0.01%
        lat (usec) : 250=0.01%, 500=0.01%, 750=0.10%, 1000=1.12%
        lat (msec) : 2=19.29%, 4=73.99%, 10=4.96%, 20=0.43%, 50=0.08%
        lat (msec) : 100=0.02%, 250=0.01%
      cpu          : usr=5.54%, sys=73.81%, ctx=14793572, majf=0, minf=219
      IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=157.2%
         submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
         complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
         issued    : total=r=0/w=11361216/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
         latency   : target=0, window=0, percentile=100.00%, depth=64
    Run status group 0 (all jobs):
      WRITE: io=44382MB, aggrb=757435KB/s, minb=757435KB/s, maxb=757435KB/s, mint=60001msec, maxt=60001msec
    -----------------
    ... (IOPS čtení)
    fio-2.2.10
    Starting 8 processes
    Jobs: 8 (f=8): [R(8)] [100.0% done] [2094MB/0KB/0KB /s] [536K/0/0 iops] [eta 00m:00s]
    test: (groupid=0, jobs=8): err= 0: pid=20935: Wed Jul  1 14:12:30 2020
      read : io=133542MB, bw=2225.7MB/s, iops=569761, runt= 60001msec
        slat (usec): min=2, max=49467, avg=12.80, stdev=142.60
        clat (usec): min=1, max=39390, avg=884.91, stdev=1231.09
         lat (usec): min=6, max=39399, avg=897.80, stdev=1240.21
        clat percentiles (usec):
         |  1.00th=[  572],  5.00th=[  628], 10.00th=[  644], 20.00th=[  660],
         | 30.00th=[  676], 40.00th=[  684], 50.00th=[  692], 60.00th=[  700],
         | 70.00th=[  716], 80.00th=[  740], 90.00th=[  828], 95.00th=[ 1384],
         | 99.00th=[ 6816], 99.50th=[10816], 99.90th=[16064], 99.95th=[18816],
         | 99.99th=[24704]
        bw (KB  /s): min=    3, max=365400, per=12.38%, avg=282248.34, stdev=40355.27
        lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%
        lat (usec) : 100=0.01%, 250=0.01%, 500=0.06%, 750=81.97%, 1000=11.49%
        lat (msec) : 2=3.96%, 4=0.99%, 10=0.89%, 20=0.60%, 50=0.04%
      cpu          : usr=9.87%, sys=104.97%, ctx=456535, majf=0, minf=735
      IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=150.4%
         submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
         complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
         issued    : total=r=34186285/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
         latency   : target=0, window=0, percentile=100.00%, depth=64
    Run status group 0 (all jobs):
       READ: io=133542MB, aggrb=2225.7MB/s, minb=2225.7MB/s, maxb=2225.7MB/s, mint=60001msec, maxt=60001msec

    Tedy v souhrnu:

    TVS-1282T3 (QuTS hero)
    2x M.2 NVMe v RAID1 (sdílená složka: 128k bloky) -> iops zápis: 189350, iops čtení: 564068
    3x 2,5“ SSD v RAID0 (sdílená složka: 128k bloky) -> iops zápis: 139661, iops čtení: 569761
    (pro VM na SSD poli to vypadá, že 4k bloky by byly lepší, ale bohužel nemám na ZFS nyní vytvořenou sdílenou složku na základě 4k bloků, nicméně, pokusím se v blízké době to také otestovat a dopsat sem hodnoty)

Po ukončení testu zápisu (bod č.5) nezapomeňte smazat 10GB testovací soubor, který jsme tímto procesem vytvořili ve složce.

No a na konec článku je nutno podotknout, že pokud jste firma, která pracuje s obsáhlými mediálními soubory, pak QNAP NAS s RAID poli je obecně velmi výkonné řešení, na kterém úpravy velkých souborů můžete provádět přímo na NAS, aniž byste data museli kopírovat tam a zpátky (z NAS na PC či macbook/iMac a naopak). V případě použití QNAP NAS s operačním systémem QuTS hero, jenž je postavené na 128bitovém ZFS, to platí dvojnásob.

Máte nějaké další dotazy? Anebo byste rádi komentovali tento článek? Pokračujte na komunitní fórum do sekce: Turbo station - Instalace a nastavení.


* Update: 1. července 2020:
Provedena aktualizace článku: přidán bod.6 (testování IOPsů).