Problém
Časový limit zjišťování iscsiadm vyprší, když jsou obě rozhraní aktivní, ale funguje dobře, když je vypnuté jediné rozhraní.
# iscsiadm -m discovery -t st -p x.x.x.x iscsiadm: connect to x.x.x.x timed out iscsiadm: connect to x.x.x.x timed out
Řešení
K tomuto problému může dojít, když jsou dvě nebo více ethernetových rozhraní připojena ke stejné podsíti nebo když je připojení iSCSI nakonfigurováno pro použití jakéhokoli konkrétního rozhraní. V takových případech, kdy jsou pakety doručeny na nesprávné rozhraní, si OS bude myslet, že jsou odeslány na uzavřený port nebo nesprávné místo určení a vyprší časový limit. Abychom tento problém vyřešili, musíme nakonfigurovat, aby přijímaly asymetricky směrované pakety na obou rozhraních klienta iSCSI, na kterém se zobrazuje tato chybová zpráva:
1. Nastavte net.ipv4.conf.all.arp_ignore sysctl na 1, aby každé rozhraní odpovídalo pouze na požadavky ARP pro své vlastní adresy. Nebo nastavte net.ipv4.conf.[INTERFACE].arp_ignore na 1 pro každé rozhraní, které je cestou k úložišti iscsi.
Například v /etc/sysctl.conf :
# vi /etc/sysctl.conf net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2
Nebo jej nastavit pouze pro relevantní rozhraní (za předpokladu, že se jedná o eth0 a eth1):
# vi /etc/sysctl.conf net.ipv4.conf.eth0.rp_filter=0 net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce=2 net.ipv4.conf.eth1.rp_filter=0 net.ipv4.conf.eth1.arp_ignore = 1 net.ipv4.conf.eth1.arp_announce=2
2. Použijte nastavení pomocí níže uvedeného příkazu:
# sysctl -p /etc/sysctl.conf
3. Zkontrolujte, zda jsou nová nastavení úspěšně spuštěna:
# sysctl -a
4. Nyní odstraňte staré soubory z /var/lib/iscsi/ifaces:
# rm -rf /var/lib/iscsi/ifaces
To by mělo vyřešit časový limit zjišťování iscsi, když jsou nakonfigurována dvě rozhraní.
Pro CentOS/RHEL 7
Všimněte si, že pokud má systém nainstalovaný CentOS/RHEL 7, zadejte prosím výše uvedené parametry sysctl do souboru /etc/sysctl.d/99-sysctl.conf a poté spusťte níže uvedený příkaz pro opětovné načtení nastavení z konfiguračního souboru:
# sysctl --system
Poznámky
K tomuto problému může dojít, pokud je připojení iSCSI nakonfigurováno pro použití určitého síťového rozhraní. Pokud jsou pakety iscsi doručeny na nesprávné rozhraní, Linux odpoví, jako by byla data odeslána na uzavřený port a odešle paket RST. Dokud budou přijatá data přicházet ve špatném rozhraní, spojení zůstane přerušeno a nebude možné jej obnovit.
K tomu může dojít, když je ke stejné podsíti připojeno více adaptérů. Ve výchozím nastavení bude Linux odpovídat na všechny požadavky ARP pro kteroukoli z IP adres systému bez ohledu na to, ze kterého rozhraní požadavek ARP přišel. Pokud na požadavek ARP pro IP adresu iscsi připojení odpoví jiné rozhraní, bude provoz směrován na nesprávné rozhraní a připojení se nezdaří. Zapnutí arp_ignore přinutí síťové rozhraní, aby odpovídalo pouze na požadavky ARP pro své vlastní adresy. To zabrání odpovědi ARP z nesprávného rozhraní a udržuje připojení iscsi funkční.