5

ipxe使用sanboot远程启动iscsi硬盘

 8 months ago
source link: https://bajie.dev/posts/20231215-pxe_sanboot/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Ipxe使用sanboot远程启动iscsi硬盘

2023-12-15 2 分钟阅读

如果一台宿主机上面cpu和memory都有富裕,但是磁盘不富裕,那就会面临资源浪费

所以干脆用ipxe的sanboot来启动远程的iscsi磁盘来启动虚机好了

首先用《iscsi卷的远程挂载 》这篇文章中所说的方法,在172.18.30.18的20T的loopback vg group上,划出一块80G的硬盘

#划个lvc,用的是vg-targetd的20T中的80G
lvcreate -L 80G -n pvc-vis-18-31-48 vg-targetd

#建立block块设备
targetcli /backstores/block create vg-targetd:pvc-vis-18-31-48 /dev/vg-targetd/pvc-vis-18-31-48

#建立30.18上的iscsi服务端,似乎用renhe-18-30-18比较好,但是不好区分多个卷,还是用下面的精准
targetcli /iscsi create iqn.2020-10.com.ddky:vis-18-31-48

#建立luns,会自动建立portal
targetcli /iscsi/iqn.2020-10.com.ddky:vis-18-31-48/tpg1/luns create /backstores/block/vg-targetd:pvc-vis-18-31-48

#建立客户端的iscsi,不加任何认证
targetcli /iscsi/iqn.2020-10.com.ddky:vis-18-31-48/tpg1/acls create iqn.2020-10.com.ddky:vis-18-31-48

记下来这个: iqn.2020-10.com.ddky:vis-18-31-48

然后修改pxe,位于172.18.31.2 /export/html/pxeboot/boot2.php,本质是发送ipxe的命令

sanhook是加载远程硬盘,并设置为/dev/sda

function sansetup() {
    global $hostname;
    echo ":sansetup\n";
    echo "set initiator-iqn iqn.2020-10.com.ddky:vis-18-31-48\n";
    echo "set keep-san 1\n";
    echo "sanhook iscsi:172.18.30.18::::iqn.2020-10.com.ddky:vis-18-31-48\n";
    echo "kernel $hostname/repos/centos/7/os/x86_64/images/pxeboot/vmlinuz\n";
    echo "initrd $hostname/repos/centos/7/os/x86_64/images/pxeboot/initrd.img\n";
    echo "imgargs vmlinuz load_ramdisk=1 ks=$hostname/pxeboot/install/centos/centos7_last.php ksdevice=eth0 net.ifnames=0 biosdevname=0\n";
    echo "boot\n";
}

发动一个无盘的虚机从pxe启动(172.18.30.3 /export/kvm/48.sh):

#!/bin/bash
    virt-install \
    --name=pxe-18-31-48 \
    --vcpu=4 \
    --ram=4096 \
    --pxe \
    --disk none \
    --os-type=linux  \
    --network bridge=br0.199 \
    --vnc --vnclisten=0.0.0.0 --vncport=5910

注意上面:指定了pxe 和disk none,这样就会启动起来并安装到远程的iscsi盘上去

安装完成后,修改ipxe指定该虚机机从sanboot启动,这时候iscsi卷里已经有引导信息了,就需要去掉指定。

function sanboot() {
    global $hostname;
    echo ":sanboot\n";
    echo "set initiator-iqn iqn.2020-10.com.ddky:vis-18-31-48\n";
    echo "set keep-san 1\n";
    echo "sanboot iscsi:172.18.30.18::::iqn.2020-10.com.ddky:vis-18-31-48\n";
    echo "boot\n";
}

重启后该机器就会从iscsi启动了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK