[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

2Gbit do.. wirtualnego serwera plików?



Witam,

W skrócie: próbuję tak ustawić sprzęt, żeby między klientem a maszyną wirtualną mieć link 2Gbit. Generalnie chodzi o zwirtualizowany serwer plików. Robiłem już konfiguracje typu load-balancing i testowałem chyba wszystkie możliwe tryby bondingu w Linuksie na różnych przełącznikach. Do testów przydaje się iperf, nuttcp.. oba są w stanie pokazać prawie 2Gbit w trybie round-robin, ale dla normalnego hardware.
Natomiast teraz chciałbym to samo uzyskać dla maszyny wirtualnej.

Na początek zarys tej "konstrukcji":
switch: Planet GSD-802S 8 port, ma 2 współdzielone porty SFP, 2 moduły SFP są wpięte - zgodne z Ethernet Gigabit. "serwer": AMD Phenom X2 @ 3,1 GHz, 4GB DDR3-1600, 2 x Seagate 7200.11 RAID1 software+LVM2+snapshot. Na nim Debian Squeeze 64bit full update jako hypervisor. Co do dysków chcę wykorzystać szybsze :) eth0 - 3Com 100Mbit, port do mostka br1 - dla WAN innej maszyny wirtualnej (routera)
eth1 - Nvidia onboard 1Gbit, na switchu włączone LACP
eth2 - Intel PRO/1000 F Fiber Server Adapter, na switchu do modułu SFP, włączone LACP
bond0 - to mostek z dwóch kart eth1 i eth2, (mode=802.3ad, stable)
br0 - to mostek użyty do wystawienia wirtualnych maszyn dla sieci LAN, złączony z interfejsem bond0
br1 - jak wyżej - złączony z eth0, dostęp do Internetu
wszystkie porty na switchu, do których podłączone są karty Gigabitowe mają włączone RSTP i Flow Control.

Klient 1: Win7x64
LAN1 to Nvidia Gigabit Network Card, port na switchu bez LACP ale w Port Trunk Group 1 - static aggregation LAN2 to Intel PRO/1000 MF, port na switchu bez LACP ale w Port Trunk Group 1 - static aggregation LAN1+LAN2 to mostek w trybie "Static link aggregation" za pomocą narzędzi Intela (zaawansowane ustawienia karty sieciowej Intel..). Wingroza elegancko pokazuje kartę o magicznej nazwie TEAM1 o prędkości 2Gbit. Obie są aktywne.

Klient 2: Linux 64bit z 1 kartą Gigabit

Pliki konfiguracyjne hypervisora:

cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=802.3ad miimon=100 downdelay=200 updelay=200 ad_select=0 lacp_rate=fast

cat /etc/network/interfaces
auto lo
iface lo inet loopback

# The bonded network interface
auto bond0
iface bond0 inet manual
bond-slaves none
bond-mode 802.3ad
bond-miimon 100
bond_lacp_rate fast
bond_ad_select 0
up /sbin/ifenslave bond0 eth1 eth2
down /sbin/ifenslave bond0 -d eth1 eth2

# Enslave all the physical interfaces
#Karta #1 Nvidia Gigabit
auto eth1
iface eth1 inet manual
bond-master bond0

#Karta #2 Intel PRO/1000 F Server Adapter - FIBER
auto eth2
iface eth2 inet manual
bond-master bond0

# Mostek LAN do virtual network KVM
auto br0
iface br0 inet static
address 10.0.0.250
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.249
dns-nameservers 10.0.0.249 8.8.8.8
bridge-ports bond0
bridge-fd 9
bridge-hello 2
bridge-maxage 12
bridge-stp off

#Karta #3 - modem
auto eth0
iface eth0 inet manual

#Mostek LAN dla virtual network KVM - modem
iface br1 inet manual
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
metric 1
auto br1

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

802.3ad info
LACP rate: fast
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 17
Partner Key: 3
Partner Mac Address: 00:01:02:03:04:05

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 11:22:33:44:55:66
Aggregator ID: 1

Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 66:55:44:33:22:11
Aggregator ID: 1

Próbowałem wielu opcji, w tym ostatnio zmiana Transmit Hash Policy na layer3+4 oraz ad_select na "bandwidth". W niektórych opcjach ping do hosta działa, za to do VM już nie. W innych jest odwrotnie. Nie bardzo wiem którego typu bondingu mam użyć do static aggregation, aby uzyskać 2Gbit do VM. Stawiam, że powinien być round-robin. Ale w nim z kolei jest utrata pinga, a przynajmniej tak było jak kiedyś testowałem na innym sprzęcie i switchu wyższej klasy.

Mam też dziwny problem z komunikacją, który właśnie się pojawił:

Ping z LAN do maszyny wirtualnej:
--- 10.0.0.248 ping statistics ---
502 packets transmitted, 502 received, 0% packet loss, time 501006ms
rtt min/avg/max/mdev = 0.352/0.603/9.757/0.418 ms

Ping z LAN do serwera (hypervisora) - sprawdzony z dwóch różnych stacji:
--- 10.0.0.250 ping statistics ---
663 packets transmitted, 32 received, 95% packet loss, time 662889ms
rtt min/avg/max/mdev = 0.094/2.372/12.068/4.088 ms

Utrata pinga na hoście, a na VM nie?? Dziwne.

ODPOWIEDŹ (na utratę pakietów):
Problem z łącznością wynikał z uszkodzonego jednego modułu SFP, musiał przestać działać dosłownie przed chwilą. Wymieniłem na inny identyczny, a następnie wypiąłem skrętkę z serwera. Ping przechodzi bez straty po światełku. To samo po restarcie switcha. Hmm.. chińszczyzna!


Mam niemal native support z/do VM przy powyższej konfiguracji:

KLIENT->VM
iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.0.248 port 5001 connected with 10.0.0.100 port 39867
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 981 MBytes 822 Mbits/sec

VM->KLIENT
iperf -c 10.0.0.100
------------------------------------------------------------
Client connecting to 10.0.0.100, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.0.0.248 port 36777 connected with 10.0.0.100 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.09 GBytes 936 Mbits/sec

Jeśli ktoś doczytał to do końca to może wie jak wycisnąć te 2Gbit? :)


Reply to: