forum

www.SAMURAJ-cz.com 

17.10.2017 Hedvika Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

iSCSI a konfigurace na VMware ESXi Server

Upraveno 19.03.2017 12:35 | vytvořeno 08.03.2017 11:11 | Samuraj - Petr Bouška |
Popis základních operací pro zprovoznění spojení z VMware ESXi Server (iSCSI Initiator) na iSCSI Target skrze SAN síť. Tedy připojení k diskovému poli a mapování disku (LUNu), včetně nastavení Multipathu, a vytvoření datastore. Popis se věnuje VMware vSphere verzi 6.5, ale na dalších verzích je podobný.

Popisované postupy a screenshoty pochází z VMware vSphere Client 6 (v článku se nepoužívá Web Client) a VMware ESXi 6.5, ale při použití VMware vCenter Server jsou shodné. Popis iSCSI technologie a SAN sítí se nachází v předchozích článcích, zde se již věnujeme pouze použití na VMware. Oblast sítí je zde značně rozsáhlá a popis se věnuje nejběžnějším možnostem.

Pozn.: V článku je uvedeno několik doporučených nastavení z praxe, od mého kolegy, který je specialista na VMware.

Síťové zapojení

U iSCSI SAN sítí existuje řada důležitých doporučení, které většinou shodně uvádí i VMware. Pro připojení do SAN sítě by se měly využívat samostatné síťové adaptéry (nesdílet s LAN) s rychlostí minimálně 1 Gbps. V řadě případů se doporučuje používat Jumbo Frames (Ethernetové rámce, které mají větší velikost (MTU) než 1500B, často 9000B). SAN síť by se měla skládat ze dvou samostatných oddělených sítí (fabric). VMware server pak má dva porty (dva jednoportové síťové adaptéry nebo jeden dvouportový), každý připojený do jiné sítě. Stejně tak pole je připojeno minimálně dvěma porty (často čtyřmi). Tím vznikají dvě (nebo čtyři) cesty mezi serverem a polem. Ukázkové zapojení, z jakého se vychází dále v článku, je níže.

Zapojení iSCSI SAN sítě (diskové pole a VMware ESXi server)

Abychom ESXi Server připojili do sítě (ať LAN nebo SAN), tak musíme vytvořit vSphere Standard/Distributed Switch a nakonfigurovat síťový adaptér. Oficiální dokumentace k celé oblasti Storage je vSphere Storage.

Jako základní komponentu na ESXi serveru vytváříme Storage (iSCSI) Adapter. VMware podporuje tři typy a záleží na tom, jaký síťový adaptér použijeme. Jde o

  • Software - používá standardní síťovou kartu (NIC), v praxi často používané a budeme popisovat v tomto článku (i když máme v serveru HBA, tak můžeme využít SW adapter)
  • Dependent Hardware - používá adaptér, který má nějaké funkce implementované v HW, ale je závislý na VMware síti a konfiguraci iSCSI
  • Independent Hardware - používá iSCSI HBA (implementuje celý iSCSI stack v HW), na ESXi se pak nepoužívá VMkernel Networking, ale konfigurace se provádí pod Storage Adapter

Pozn.: Výrobci diskových polí mají často k dispozici různé pluginy do VMware, některé nám mohou řešit správu diskového pole z VMware konzole, jiné doplní podporu různých HW funkcí pole a mohou být dost důležité pro provoz.

Zjištění IQN na ESXi serveru

Zde je uvedeno pro přehled. Musíme již mít vytvořený iSCSI adaptér (což budeme provádět až dále v článku).

  • spustíme VMware vSphere Client a připojíme se na náš ESXi server (nebo vCenter server)
  • vybereme server, přepneme se na záložku Configuration a v sekci Hardware zvolíme Storage Adapters
  • klikneme pravým tlačítkem na náš iSCSI Software Adapter v seznamu a zvolíme Properties
  • na záložce General v sekci iSCSI Properties je vidět IQN (Name)

Vytvoření iSCSI vSwitchů - připojení do SAN sítě

Prvním krokem je síťová konfigurace. Musíme mít k dispozici dva volné síťové adaptéry (porty) zapojené do iSCSI SAN sítě (dle předchozího popisu do dvou různých fabric). Pak je standardní řešení, že vytvoříme dva vSphere Standard Switch (vSwitch), každý musí mít jiný subnet a má jeden fyzický adaptér (vmnic). Skrze virtual VMkernel adapter (VMkernel port vmk) dochází k mapování na iSCSI adapter (vmhba, popis v druhém kroku článku). Mapování fyzického adaptéru (vmnic) na virtuální (vmk) musí být vždy 1:1. Tento způsob si popíšeme zde.

Druhá možnost je vytvořit pouze jeden vSwitch a do něj přidat oba fyzické adaptéry (vmnic) i oba VMkernel adaptéry (vmk). V tom případě ale musíme ručně nastavit mapování určitého VMkernel adaptéru na určitý fyzický adaptér (opět musí být 1:1, provedeme tak, že na vmk v NIC Teaming přesuneme ostatní vmnic do oblasti Unused).

Vytvoření prvního iSCSI vSwitche

  • spustíme VMware vSphere Client a připojíme se na náš ESXi server (nebo vCenter server)
  • vybereme server, přepneme se na záložku Configuration a v sekci Hardware zvolíme Networking
  • klikneme na Add Networking
VMware vSphere vytvoření iSCSI vSwitch 01
  • jako Connection Type vybereme VMKernel, klikneme Next
VMware vSphere vytvoření iSCSI vSwitch 02
  • vybereme Create a vSphere standard switch a zatrhneme síťový adaptér připojený do SAN sítě, klikneme Next
VMware vSphere vytvoření iSCSI vSwitch 03
  • zadáme jméno Port Group, třeba iSCSI VLAN 10 a číslo VLANy (na SAN asi nepoužíváme trunk, ale port je access, takže ponecháme None (0)), klikneme Next
VMware vSphere vytvoření iSCSI vSwitch 04
  • zadáme IP adresu interface v SAN síti (tedy Initiator IP), klikneme Next a Finish
VMware vSphere vytvoření iSCSI vSwitch 05 VMware vSphere vytvoření iSCSI vSwitch 06

Nastavení MTU - povolení Jumbo Frames

Pokud používáme větší MTU, což je pro SAN sítě většinou doporučováno, tak musíme upravit nastavení na virtuálním switchi.

  • u nového switche klikneme na Properties (zde vSwitch1)
  • na záložce Ports vybereme vSwitch a klikneme na Edit
  • na první záložce General zadáme požadované MTU, třeba 9000 a klikneme na OK
  • přepneme se na vytvořený Port (v příkladu iSCSI VLAN 10) a klikneme na Edit
  • na první záložce General zadáme požadované MTU, třeba 9000 a klikneme na OK
VMware vSphere vytvoření iSCSI vSwitch 07

Vytvoření druhého iSCSI vSwitche (přidání druhé cesty)

Poté zopakujeme celý postup pro druhou cestu (druhý fyzický adaptér a subnet) a vytvoříme druhý virtuální switch.

VMware vSphere vytvoření iSCSI vSwitch 08

Vytvoření a konfigurace iSCSI Software Adapter - spojení na pole

  • spustíme VMware vSphere Client a připojíme se na náš ESXi server (nebo vCenter server)
  • vybereme server, přepneme se na záložku Configuration a v sekci Hardware zvolímeStorage Adapters
  • klikneme na tlačítko Add a přidáme iSCSI Software Adapter a potvrdíme upozornění
VMware vSphere konfigurace iSCSI Software Adapter 01
  • klikneme pravým tlačítkem na iSCSI Software Adapter v seznamu a zvolíme Properties (tím se dostáváme do konfigurace iSCSI Initiator)
  • pokud je jeho stav Disabled, tak klikneme na Configure, zde zatrhneme Enabled a potvrdíme OK
  • jeho stav se přepne a zobrazí se IQN (iSCSI Name)

Pozn.: Zároveň můžeme upravit IQN, začátek je standardní iqn.1998-01.com.vmware:, potom se používá název serveru a VMware doplňuje řetězec, aby se zajistila unikátnost. Názvy serverů bychom měli mít v síti unikátní, takže můžeme ponechat pouze toto. Volitelně můžeme zadat alias (ale ten slouží pouze pro nás jako friendly name).

VMware vSphere konfigurace iSCSI Software Adapter 02

Na tento bod - VMkernel Port Bindings (který mám níže uvedený jako volitelný), mne v diskusi upozornil čtenář, že dle VMware se ve většině případů nastavovat nemá. V diskusi k tomu uvádím nějaké názory, ale dle oficiální dokumentace to opravdu, ve zde popisovaném případě, nemá být nastaveno. Dle článku Requirements for iSCSI Port Binding se pevné přiřazení může použít, pouze pokud jsou všechna rozhraní (porty na poli i VMware serveru) ve stejném subnetu.

Zde je popisováno zapojení (které považuji za standardní), kdy jsou použity dvě samostatné sítě (fabricy či VLAN). Do jedné SAN je připojen jeden port fyzické síťové karty na serveru (VMkernel adapter) a po jednom portu z každého kontroléru pole (target iSCSI port). V tomto případě se přiřazení použít nemá a VMware určí VMkernel port podle routovací tabulky.

Podrobněji je popisováno v dokumentaci Best Practices for Configuring Networking with Software iSCSI. Když se nastaví přiřazení portů (binding), tak iSCSI provoz může téci pouze skrze tyto porty. iSCSI Initiator vytváří session ze všech přiřazených portů na všechny Target Portal (komunikační IP adresa a port na síťovém rozhraní diskového pole). Tedy pro 2 VMkernel porty a 4 adresy na poli je to 8 session. Ale pokud jsou použity dvě oddělené sítě, tak VMware nemůže komunikovat z jednoho svého portu na všechny adresy pole a vzniká problém.

Pokud se přiřazení portů nenastaví, tak VMware volí nejlepší VMkernel port podle routovací tabulky. iSCSI Initiator vytváří pouze jednu session pro každý Target Portal a to z nejoptimálnějšího VMkernel portu. Tedy pro 2 VMkernel porty a 4 adresy na poli jsou to 4 session. Výsledkem tedy je, že jsou situace, kdy se hodí vytvořit ruční přiřazení (aby vzniklo více cesta na pole pokud má třeba jen jednu adresu) a stejně tak, kdy se to nehodí (protože tam komunikace není možná). Praktické příklady jsou uvedeny v odkazované VMware dokumentaci.

  • (volitelně) přepneme se na záložku Network Configuration a přidáme VMkernel ports (naše vSwitche pro iSCSI)
VMware vSphere konfigurace iSCSI Software Adapter 03
  • přepneme se na záložku Dynamic Discovery a klikneme na tlačítko Add
  • zadáme první IP adresu pole v iSCSI SAN síti (jedna ze 4 adres, příklad 192.168.130.200)
VMware vSphere konfigurace iSCSI Software Adapter 04
  • potvrdím OK a klikneme na Close
  • dostaneme dotaz, zda chceme provést Rescan Host Bus Adapter, což potvrdíme Yes

Pozn.: Když se vrátíme do nastavení, tak bychom na záložce Static Discovery měli vidět všechny adresy pole.

Nastavení Multipathu

Nyní na poli vytvoříme LUN. Je výhodné vytvořit jeden velký Volume/LUN, který připojíme k více ESXi serverům a na něj umísťujeme všechny virtuály. Vytvořený LUN namapujeme na náš VMware server (pomocí jeho IQN). Pak se vrátíme na konfiguraci ESXi. Multipath funguje automaticky, v nastavení můžeme pracovat s cestami.

  • spustíme VMware vSphere Client a připojíme se na náš ESXi server (nebo vCenter server)
  • vybereme server, přepneme se na záložku Configuration a v sekci Hardware zvolíme Storage Adapters
  • klikneme pravým tlačítkem na náš iSCSI Software Adapter v seznamu a zvolíme Rescan
  • po jeho dokončení by se nám v dolní části detailů (při zobrazení Devices) měl objevit přidělený disk (LUN) a při přepnutí na Paths bychom měli vidět všechny čtyři cesty na pole
VMware vSphere konfigurace iSCSI Software Adapter 05
  • klikneme pravým tlačítkem na disk a zvolíme Manage Paths, zde můžeme nastavit algoritmus pro Load Balancing Multipath, položka Path Selection
VMware vSphere konfigurace iSCSI Software Adapter 06

Vytvoření úložiště - Storage datastore

  • spustíme VMware vSphere Client a připojíme se na náš ESXi server (nebo vCenter server)
  • vybereme server, přepneme se na záložku Configuration a v sekci Hardware zvolíme Storage
  • klikneme na tlačítko Add Storage a jako typ zvolíme Disk/LUN, klikneme na Next
VMware vSphere vytvoření iSCSI LUN datastore 01
  • zvolíme dostupný disk (LUN), klikneme na Next
VMware vSphere vytvoření iSCSI LUN datastore 02
  • prohlédneme si informace o layoutu, klikneme na Next
  • zadáme jméno pro datastore, třeba NetApp_datastore1, klikneme na Next
  • v kroku Formatting zadáváme kapacitu vytvářeného datastore, vždy bychom měli volit Maximum available space, VMware podporuje pouze jeden VMFS datastore per LUN, klikneme na Next
  • zobrazí se souhrn zadaných informací, které potvrdíme tlačítkem Finish
VMware vSphere vytvoření iSCSI LUN datastore 03

Zvětšení velikosti úložiště (Datastore - LUN)

Nejprve provedeme změnu na diskovém poli a následně upravíme na ESXi serveru. Pokud je společné úložiště (LUN) připojeno k více ESXi serverům (nodům clusteru), tak můžeme zvětšení (expanzi) provést na libovolném serveru.

  • spustíme VMware vSphere Client a připojíme se na náš ESXi server (nebo vCenter server)
  • vybereme server, přepneme se na záložku Configuration a v sekci Hardware zvolíme Storage
  • klikneme pravým tlačítkem na požadovaný datastore a zvolíme Properties
  • vpravo dole v sekci Extent Device vidíme jaká kapacita je k dispozici (Device), pokud zde není nová hodnota, tak klikneme na Refresh
  • klikneme na tlačítko Increase a projdeme průvodce (zvětšíme na maximální kapacitu - Maximum available space)
VMware vSphere expand datastore

Ladění výkonu iSCSI spojení

Tyto informace mi zaslal čtenář vlho, za což velice děkuji.

Snížení Round Robin IOPS limitu

Velmi známá metoda, pokud máme více aktivních cest na pole, jak navýšit významně propustnost u iSCSI storage je změna parametru iops. Patrně jde provést pouze z CLI. Pochopitelně musí být nad Datastorem zapnut RoundRobin (Path Selection Policy pro Multipath).

Nejdříve si zjistíme identifikátor Datastore:

# esxcli storage nmp device list

Obdržíme asi takový výstup:

naa.6000eb3aeb9f24600000000000000075
  Device Display Name: LEFTHAND iSCSI Disk (naa.6000eb3aeb9f24600000000000000075)
  Storage Array Type: VMW_SATP_DEFAULT_AA
  Storage Array Type Device Config: SATP VMW_SATP_DEFAULT_AA does not support device configuration.
  Path Selection Policy: VMW_PSP_RR
  Path Selection Policy Device Config: {policy=rr,iops=1000,bytes=10485760,useANO=0;lastPathIndex=0: NumIOsPending=0,numBytesPending=0}

Na posledním řádku vidíme defaultní hodnotu iops=1000. Různí vendoři ji doporučují změnit na hodnotu pohybující se mezi 110. Já dávám vždy 1, protože jsem žádným měřením nedokázal vypozorovat nějakou změnu při o něco vyšší hodnotě.

Pro jedno zařízení (a jeden LUN) můžeme nastavit příkazem:

# esxcli storage nmp psp roundrobin deviceconfig set --type=iops --iops=1 --device=naa.xxxx 

Pro více LUNů můžeme nastavit v cyklu najednou:

# for i in `esxcfg-scsidevs -c |awk '{print $1}' | grep naa.xxxx`; do esxcli storage nmp psp roundrobin deviceconfig set -t iops -I=1 -d $i; done

Kde hodnotu naa.xxxx zaměníme na tu výše zjištěnou, tedy naa.6000. Prvním příkazem pak ověříme, zda se hodnota iops skutečně změnila. Není třeba restart.

Výkon, dle mnoha mých pozorování, může narůst až na dvojnásobek, zejména pro zápis. Hhlavně pro aplikace, které k diskovému úložišti přistupují vícero vlákny, např. SQL atd.

A co je vlastně parametr iops? Je to počet I/O operací, po nichž se změní cesta, více zde: VMware KB 2069356

Vypnutí Delayed ACK

Další metoda, jak (tentokráte jen u některých iSCSI storage) zvednout výkon, je vypnutí Delayed ACK. To lze provést v GUI, u tlustého klienta je to zde:

Configuration - Storage Adapters - klikneme pravým tlačítkem na náš iSCSI Software Adapter (vmhbaxx) a zvolíme Properties - záložka General - Advanced a zde odškrtneme volbu Delayed ACK (úplně dole)

Musí následovat restart ESXi.

Delayed ACK vypínám po dlouhodobém pozorování u všech iSCSI storage, protože jsem si ověřil, že byť třeba nedojde k nárustu výkonu, zvýší se tím stabilita spojení.

Pokud chcete vědět více o Delayed ACK - VMware KB 1002598.

zobrazeno: 3240krát | Komentáře [6]

Autor:

Související články:

Computer Storage

Ukládání dat je v počítačovém světě rozsáhlá a komplexní problematika. Zde se nachází články, které se věnují sítím Storage Area Network (SAN), technologiím iSCSI, Fibre Channel, diskovým polím (Storage System, Disk Srray) i obecně ukládání dat a úložištím.

Virtualizace

Články z populárních témat o virtualizace serverů a stanic.

Pokud se Vám článek líbil, tak mne potěšíte, když uložíte odkaz na některý server:

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře

  1. [1] vlho

    Zdravím.

    Já bych byl s tím Bindingsem v tomto případě velmi opatrný, viz zde:

    http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2038869

    Sice to funguje a nedochází k takovým katastrofálním situacím, které popisuje VMware na přiloženém linku, ale na několika typech storage jsem si ověřil, že zde dojde při jeho použití k propadu výkonu o min. 30%, často i více.

    Podobně nedokonalé návody lze bohužel nalézt i v profesionálních guidech od známých vendorů.

    A je škoda, že jste se nezmínil, jak se taková iSCSI konfigurace dá vytunit, např. deaktivací Delayed ACK nebo změnou parametru iops.

    Jinak dobrý.

    Středa, 08.03.2017 12:32 | odpovědět
  2. [2] Samuraj

    odpověď na [1]vlho: Děkuji za zajímavou informaci. Já se VMware nevěnuji a chtěl jsem jen doplnit sérii o iSCSI často používaným klientem, tak jsem prostudoval dostupnou dokumentaci (která mi přijde dost šílená a nenalezl jsem žádné detaily). Probíral jsem to ještě s kolegou, který VMware spravuje.

    Zajímavé je, že mi jsme právě v minulosti měli problém s připojením na pole, při výpadku jedné cesty nefungoval správně Multipath a docházelo k pádu serverů, start ESXi serveru byl extrémně pomalý, apod. A vše se vyřešilo právě nastavením přiřazení skupiny (VM Kernel port, fyzický adaptér) na iSCSI Software Adapter. Nyní to již dlouho provozujeme na několika desítkách ESXi serverů připojených k několika různým polím.

    Osobně nechápu, proč by to přiřazení mělo vadit a pokusím se k tomu najít nějaké informace (zatím jsem jen nalezl další potvrzení toho co píšete, ale nikde vysvětlení). Přitom další věc je přiřazovaní vmk na vmnic, které se v určitých konfiguracích musí provést.

    Co se týče ladění konfigurace, kdybyste měl nějaké info, tak budu rád. My řešíme různé ladění podle doporučení výrobce pole, což se různě mění. Ale jestli je něco obecného, tak mne zaráží, proč to VMware nemá jako defaultní nastavení :-).

    Čtvrtek, 09.03.2017 16:19 | odpovědět
  3. [3] vlho

    DD,

    1. Velmi známá metoda, jak navýšit významně propustnost u iSCSI storage je změna parametru iops.

    Pokud se nepletu, dá se to stále udělat jen z CLI.

    Pochopitelně musí být nad Datastorem zapnut RoundRobin.

    Nejdříve si zjistíme identifikátor Datastore:

    # esxcli storage nmp device list

    Obdržíme asi takový výstup:

    naa.6000eb3aeb9f24600000000000000075

    Device Display Name: LEFTHAND iSCSI Disk (naa.6000eb3aeb9f24600000000000000075)

    Storage Array Type: VMW_SATP_DEFAULT_AA

    Storage Array Type Device Config: SATP VMW_SATP_DEFAULT_AA does not support device configuration.

    Path Selection Policy: VMW_PSP_RR

    Path Selection Policy Device Config: {policy=rr,iops=1000,bytes=10485760,useANO=0;lastPathIndex=0: NumIOsPending=0,numBytesPending=0}

    Na posledním řádku vidíme defaultní hodnotu iops=1000

    Různí vendoři ji doporučují změnit na hodnotu pohybující se mezi 1 až 10.

    Já dávám vždy 1, protože jsem žádným měřením nedokázal vypozorovat nějakou změnu při o něco vyšší hodnotě.

    A teď iops v cyklu pro všechny LUNy změníme takto:

    # for i in `esxcfg-scsidevs -c |awk '{print $1}' | grep naa.xxxx` ; do esxcli storage nmp psp roundrobin deviceconfig set -t iops -I=1 -d $i; done

    kde hodnotu naa.xxxx zaměníme na tu výše zjištěnou, tedy naa.6000

    Prvním příkazem pak ověříme, zda se hodnota iops skutečně změnila.

    Není třeba restart.

    Výkon dle mnoha mých pozorování může narůst až na dvojnásobek, zejména pro zápis,

    a hlavně pro aplikace, které k diskovému úložišti přistupují vícero vlákny, např. SQL atd.

    A co je to vlastně to iops? Je to počet I/O operací, po nichž se změní cesta, více zde:

    https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2069356

    Pokračování v dalším příspěvku...

    Pátek, 17.03.2017 14:45 | odpovědět
  4. [4] Samuraj

    odpověď na [3]vlho: Moc díky za informace. Já jsem mezitím prostudoval to VMkernel Port Bindings a plyne z toho, že máte pravdu. Doplnil jsem popis do článku.

    Pátek, 17.03.2017 14:53 | odpovědět
  5. [5] Tony

    Dobrý den,

    mohu se k tomu zeptat na související věc? Budu-li mít fyzický server, na kterém budou třeba 1-2 virtuály a připojím NAS pomocí iSCSI, jak drasticky pomalejší budou ty virtuály, pokud bude propojení server-NAS děláno po 1Gb lince? Jde mi o to, jak razantní bude zpomalení, když storage přesunu z fyzického serveru na externí NAS.

    Díky

    Tony

    Úterý, 28.03.2017 12:38 | odpovědět
  6. [6] Samuraj

    odpověď na [5]Tony: Na to se dá těžko odpovědět. Záleží na mnoha věcech. Diskové pole má řadu výhod, když se připojuje k více serverům. Pokud mám pouze jeden fyzický server, tak je pro mne jednoduší osadit jej několika disky a mít úložiště lokálně.

    Jde o to, jak mám rychlé disky, jak kvalitní RAID řadič a jaký RAID použiji (v levných serverech to výkon spíš degraduje). Běžný SATA disk má rychlost čtení okolo 150MB/s. Když připojím diskové pole po 1Gbps síti a ono ji dokáže maximálně využít, tak dostávám rychlost 128MB/s (samozřejmě pár procent vezme režie, takže to v praxi bude tak 110MB/s). Takže tam moc velký rozdíl není. Navíc tam hrají roli různé keše, optimalizace, apod.

    Úterý, 28.03.2017 20:43 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O


Ochrana proti SPAMu, zdejte následující čtyři znaky image code

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách