Iscsi

使用綁定、橋接和 iSCSI 引導無盤 Debian 系統

  • December 19, 2018

我正在嘗試建構我的個人聖杯:從 iSCSI 目標無盤引導我的 Debian Wheezy KVM 伺服器,無盤伺服器上唯一需要的配置是 NIC ROM 中的 iSCSI 參數。配置的其餘部分都應該在 iSCSI LUN 的“內部”。

系統有兩個連接到支持 LACP 的交換機的 NIC。所以,我想通過綁定介面啟動機器,也就是在橋裡面vmbr0。雖然這種組合併不完全有效。

因為我讀到引導後不應中斷 iSCSI 連接(例如通過重新配置介面),所以我嘗試在引導前設置我的所有 IP 配置(在核心參數/cmdline 中)。

iSCSI 引導部分由我的 Broadcom 雙埠 NIC 的 ROM 處理。這似乎工作得很好:啟動 grub 並在此之後繼續啟動。在我的 grub 配置中,我有這個:

linux /vmlinuz-2.6.32-26-pve root=UUID={iscsi-disk-uuid} ro  quiet bond=bond0:eth0,eth1:mode=802.3ad,lacp_rate=1,miimon=100,xmit_hash_policy=layer2+3 bridge=vmbr0:bond0 ip=192.168.15.4::192.168.15.1:255.255.0.0::vmbr0:off

當 grub 啟動核心時,我收到以下錯誤:

ipconfig: vmbr0: SIOCGIFINDEX: No such device
ipconfig: no devices to configure
... repeated 10 times...
/scripts/local-top/iscsi: .: line 426: can't open '/run/net-vmbr0.conf'

我掉進了 initramfs shell,我發現它bond0根本沒有配置(bonding但是載入了模組),也沒有配置vmbr0bridge模組顯然是內置的)。

當我通過排除綁定配置來縮小範圍時,使用這條 grub 行:

linux /vmlinuz-2.6.32-26-pve root=UUID={iscsi-disk-uuid} ro  quiet bridge=vmbr0:eth0 ip=192.168.15.4::192.168.15.1:255.255.0.0::vmbr0:off

也在這裡,vmbr0沒有創建。

所以在我看來,Debian Wheezy 的 initramfs 並沒有同時配置綁定和橋接。brctl在 initramfs 中可用,ifenslave另一方面則不可用。

有什麼辦法呢?還是不支持/不允許我的核心參數(cmdline)?或者我應該考慮另一個引導順序?

這無疑是一個有趣的問題,這就是我如何做到的。我的配置和你的差不多:Proxmox booting via iSCSI bridged interface。我的 grub 引導行如下所示:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 ISCSI_INITIATOR=iqn.2007-08.com.example.client:client ISCSI_TARGET_NAME=iqn.2005-10.org.freenas.ctl:proxmox ISCSI_TARGET_IP=192.168.11.3 ISCSI_TARGET_PORT=3260 root=UUID=04709453-9d82-47d6-a898-81ea6408f88e ip=192.168.11.1:::255.255.255.0:client:vmbr2:off"

要使用這個 grub 配置啟動,我需要在 grub 掛載 root 之前啟動網橋。我通過在 /etc/udev/rules.d/70-persistent-net.rules 中分配一個腳本來做到這一點,如下所示:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:30:48:94:61:ec", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="ens6f0", RUN+="/bin/brctl-iscsi ens6f0 vmbr2"

此 /bin/brctl-iscsi 腳本如下所示:

#!/bin/sh

ifconfig $1 mtu 9000 up
brctl addbr $2
brctl addif $2 $1
ip link set dev $2 type bridge forward_delay 0 stp_state 0

我還需要一個 initramfs 掛鉤來將此腳本放入 initrd:

root@proxmox-2:~# cat /usr/share/initramfs-tools/hooks/brctl_iscsi
#!/bin/sh -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case "$1" in
   prereqs)
   prereqs
   exit 0
   ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /bin/brctl-iscsi    /bin

最後在 /etc/network/interfaces 我有這個用於 iscsi 介面及其網橋:

no-auto-down ens6f0
no-auto-down vmbr2

iface ens6f0 inet manual

iface vmbr2 inet manual
   address  192.168.11.2
   netmask  255.255.255.0
   bridge-ports ens6f0
   bridge-stp off
   bridge-fd 0
   down ifconfig vmbr2 down; brctl delbr vmbr2
#iSCSI network

就是這樣 問候,德米特里

引用自:https://serverfault.com/questions/602019