Завантаження без дисків з IPv6


16

У нашій роботі ми використовуємо близько 80 бездискових машин під управлінням Ubuntu. Ми хочемо зробити перехід до IPv6, тому зараз я намагаюся змусити нашу бездискову систему працювати з IPV6. Передача ядра та initramfs все ще може здійснюватися через IPv4-з'єднання, але, коли машина повністю завантажиться, я хочу, щоб усі мережеві з'єднання були над IPv6.

Це означає, що nfsroot повинен бути встановлений через IPv6. Моє дослідження цього показало, що initramfs-tools (1.18.5-1ubuntu4.1) НЕ підтримує IPv6. Це означає, що ні ipconfig, який використовується для конфігурації інтерфейсу під час раннього завантаження, ні процедура монтажу кріплення для кореня nfs не може підтримувати IPv6.

Щоб обійти це, я додав два файли до initramfs ( /etc/initramfs-tools/hooks/ipv6):

#!/bin/bash 
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/dhclient /sbin
copy_exec /sbin/mount.nfs4 /sbin

Я використовую їх для (а) запиту DHCPv6 під час раннього завантаження

/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0

та (b) налаштувати інтерфейс з адресою, яку я отримав шляхом виконання:

ipv6=$(cat /tmp/dhclient6.eth0.leases | grep iaaddr | egrep -o "([a-f0-9]{1,4}:){3}([a-f0-9]{0,4}:){0,4}[a-f0-9]{1,4}")
ip -6 addr add $ipv6/112 dev eth0

Зазвичай корінь nfs монтується за допомогою наступної команди у /usr/share/initramfs-tools/scripts/nfs:

nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}

Але це, схоже, не приймає адреси IPv6.

Тому я змінив його на:

mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}

$NFSROOTв цьому випадку є [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6.

Здається, конфігурація інтерфейсу працює так само добре, як і кореневе встановлення, але коли /sbin/initвоно виконується (я думаю), IPv6 знову відкидається, і тому система зависає (тому що більше не може отримати доступ до кореня ubuntu).

/etc/network/interfacesФайл виглядає наступним чином :

auto lo
iface lo inet loopback

iface eth0 inet manual
iface eth0 inet6 manual

Чи є спосіб зберегти конфігурацію інтерфейсу від initramfs? Або я роблю щось не так, коли налаштовую інтерфейс ip?


2
Подивіться на команди route та arp. Обох можна викликати під час завантаження та мати підтримку IPV6
j0h

1
Це досить дивно. IPv6 NFS root вже повністю підтримується в системах Red Hat. Я б поскаржився на стартовій панелі.
Майкл Хемптон

Відповіді:


1

можливо, це для вас поза темою, але я думаю, що вашої конкретної проблеми можна уникнути, переосмисливши послугу:

чому турбувати завантаження з NFS?

Ви можете спробувати завантажитися з iscsi (в режимі лише для читання, щоб дозволити більше ніж одне з'єднання із зображенням), а потім використовувати iscsi або nfs (ipv4) для спільного використання користувача, якщо вам потрібно. Ви можете досягти цього за допомогою ipxe проекту.

Інший спосіб - використовувати squashfs + tmpfs і не заважати так сильно ділитися під час завантаження системи, а потім робити перерахунки залежно від автентифікацій користувача (однак, це більше споживання пам'яті на стороні клієнта).

Сподіваємось, що вам допоможе.


1
Чи підтримує Ubuntu навіть завантаження з iSCSI через IPv6?
Майкл Хемптон,

1
Мабуть, так і є.
Антуан Родрігес
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.