LINUX.ORG.RU
решено ФорумAdmin

pxe не работает через bonding

 ,


1

2

Привет, ЛОР.

У меня дома в рабочей станции сломался SSD. И я решил, что вместо покупки нового SSD, который скорее всего точно так же умрет через год-два от сборки генты, лучше перенести эту самую генту на raid10 на домашней файлопомойке и грузиться по pxe с iscsi. А чтобы iscsi не тормозило, я сделал между файлопомойкой и рабочей станцией бондинг. Рабочая станция получает по pxe загрузчик ipxe с вкомпиленным скриптом, который подключает iscsi в процессе загрузки, с этого iscsi запускается grub2, дальше initramfs поднимает бондинг и делает всю остальную работу.

Картинка с топологией сети.

И всё это даже работает, но есть одна проблема. На этапе загрузки по pxe сетевуха eth0 на рабочей станции получает ip по dhcp, но не может скачать загрузчик с tftp. А происходит это из-за того, что сетевуха eth2 на сервере видит активный линк с другой стороны кабеля, и бондинг начинает балансировать через нее трафик. Это отлично видно в tcpdump. cat /proc/net/bonding/bond0 на сервере в момент соединения рабочей станции с tftp показывает вот это:

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 94
Permanent HW addr: 68:05:ca:36:e3:b4
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 10 Mbps
Duplex: full
Link Failure Count: 109
Permanent HW addr: 68:05:ca:3e:b5:06
Slave queue ID: 0

А поскольку рабочая станция до загрузки initramfs ничего не знает про бондинг, соответственно ничего не работает и LAN Boot ROM вываливает ошибку «PXE-E35: TFTP read timeout».

Решается эта проблема выдергиванием кабеля из eth1 на рабочей станции, т.е. вот так. Тогда eth2 на сервере переходит в состояние «down», и пакеты ходят через нужный интерфейс. После загрузки можно воткнуть кабель назад и работать со скоростью два гигабита в секунду. Еще можно сделать вот так и оно тоже загрузится, но роутер минут через 5 уйдет в астрал от сетевого шторма.

Я пробовал на сервере добавить дополнительный ip адрес сетевухе eth1, не вытаскивая ее из бондинга, а на этом адресе поднять tftp. Из этого ничего не вышло, трафик все равно пытается разбалансироваться между двумя интерфейсами.

Держать /boot локально на рабочей станции я не хочу. Перетыкать при каждой загрузке сетевой кабель я хочу еще меньше.

Посоветуйте что-нибудь для решения описанной выше проблемы.

Deleted

загрузить ядро и initrd с флешки. Это самый простой вариант.

нельзя ли отключить pxe на второй сетевушке, чтоб она на этапе загрузки не поднимала линк ?

Если не ошибаюсь, iscsi понимает multipath и умеет балансировать нагрузку, т.ч. bonding использовать не обязательно.

vel ★★★★★
()
Ответ на: комментарий от vel

нельзя ли отключить pxe на второй сетевушке, чтоб она на этапе загрузки не поднимала линк ?

PXE на второй сетевухе было выключено, но до меня после прочтения этого сообщения только что дошло, что еще нужно выключить Wake-on-LAN. Без него линк раньше времени не поднимается и всё грузится. Я за неделю в сумме потратил несколько часов на поиск решения этой проблемы, а всё оказалось так просто.

iscsi понимает multipath и умеет балансировать нагрузку

Действительно умеет, а я раньше даже не интересовался этим вопросом. Нужно будет почитать.

Спасибо за ответ. Хоть в нем и не было решения проблемы, но он задал правильное направление ходу мыслей. Без него я бы мог еще неделю ковырять настройки бондинга.

Deleted
()

Bonding Mode: load balancing (round-robin)

Может, поиграться этими самыми режимами bonding, со стороны помойки? Они ведь разные есть, и, по идее, некоторые из них будут совместимы с твоей схемой загрузки по одному каналу.

Infra_HDC ★★★★★
()
Ответ на: комментарий от Infra_HDC

Я уже разобрался с проблемой комментарием выше. Ну и кроме balance-rr никто не умеет нормально распределять один поток между двумя интерфейсами.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.