Привет, ЛОР.
У меня дома в рабочей станции сломался 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 локально на рабочей станции я не хочу. Перетыкать при каждой загрузке сетевой кабель я хочу еще меньше.
Посоветуйте что-нибудь для решения описанной выше проблемы.