【iscsi使用】3.无盘启动CentOS7

news/2025/2/28 20:23:55/文章来源:https://www.cnblogs.com/hukey/p/18644292

目录


1.SAN存储及NAS存储

2.CentOS7搭建iscsi服务器

3.无盘启动CentOS7


前言


业务中遇到这样一个问题:

使用别人的GPU服务器,来跑自己的训练数据。

因为数据的特殊性,一旦数据落盘到GPU服务器,硬盘必须交给数据方。数据方也提出,可提供同型号同容量的硬盘更换。但是机器方考虑到硬盘的拆卸及质保问题,否决了这种方式。进而考虑是否可采用 无盘的方式,只是使用服务器的GPU及计算能力,而存储则由存储方通过其他方式进行存储。

考虑思路:

  1. 既然GPU服务器不能落盘,则所有数据都需要在存储设备上,包括OS;
  2. 存储设备需要通过什么样的方式进行连接到GPU服务器呢?如果需要网络则是否需要OS的支持?
  3. SAN网络通过iscsi协议是否可以实现这样的方式?NAS存储是否能够考虑在内?

在这之前,得回忆下,SAN存储和NAS存储的使用场景及异同。

【san存储和搭建iscsi服务】

windows的无盘启动使用场景非常广泛,最常见的就是网吧。而Linux的无盘启动则非常少见。本文实现的是通过配置服务 DHCP+KICKSTART+TFTP+NFS实现CentOS无盘启动。


无盘启动CentOS部署过程


本实验通过在 vmware workstations 中创建虚拟机进行,尽可能的将详细步骤展示出来。

准备工作


  1. 通过 vmware workstations 创建两台虚拟机,并安装 CentOS7.9 系统

关闭selinux 和 firewalld

> cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
  1. 设置两台虚拟机的网络为nat模式

image-20241225182545734

  1. 配置nat网络无需 dhcp 服务

image-20241225182723390

image-20241225182754614

取消 DHCP分配IP


安装DHCP服务


> yum install -y dhcp> cd /etc/dhcp/> cp -a dhcpd.conf{,.bak}> cat << 'EOF' > dhcpd.conf
subnet 10.0.0.0 netmask 255.255.255.0 {range 10.0.0.11 10.0.0.100;option domain-name-servers 10.0.0.2;option routers 10.0.0.2;default-lease-time 600;max-lease-time 7200;next-server 10.0.0.10;filename "pxelinux.0";
}
EOF注意:
@@@ 配置文件说明 @@@
subnet 10.0.0.0 netmask 255.255.255.0 { -> 整个网段
range 10.0.0.11 10.0.0.100; DHCP分配IP范围
option domain-name-servers 10.0.0.2; 这里填写网关的地址
option routers 10.0.0.2; 路由的地址,网关即路由
default-lease-time 600; dhcp默认租约时间(单位:秒)
max-lease-time 7200; dhcp默认最大租约时间(单位:秒)
next-server 10.0.0.10; 这里配置为本机的IP地址
filename "pxelinux.0"; 默认写法启动服务:
> systemctl enable --now dhcpd

验证:新建一台虚拟机,如果能通过dhcp获取到10.0.0.11-10.0.0.100之间的IP则表示DHCP工作正常。


配置tftp服务


  1. 安装软件包
> yum install tftp-server syslinux xinetd -ysyslinux注解:syslinux是一个功能强大的引导加载程序,并且兼容各种介质syslinux是一个小型的linux操作系统,目的是简化linux首次安装的时间,并建立维护或其他特殊用途的启动盘如果没有找到pxelinux.0这个文件,可以安装下syslinux
  1. 配置tftp
> vim /etc/xinetd.d/tftp
service tftp
{socket_type             = dgramprotocol                = udpwait                    = yesuser                    = rootserver                  = /usr/sbin/in.tftpdserver_args             = -s /pxelinux -c	#修改默认目录,注意必须最后带上 -cdisable                 = no	#改为noper_source              = 11cps                     = 100 2flags                   = IPv4
}创建目录
> mkdir -p /pxelinux启动tftp服务
> systemctl enable --now  xinetd查看是否启动
>netstat -a | egrep tftp
udp        0      0 0.0.0.0:tftp            0.0.0.0:*

配置nfs服务


  1. 安装nfs软件包
> yum install -y nfs-utils rpcbind
  1. 配置nfs并启动
> mkdir -p /pxelinux/nfsroot
> cat /etc/exports
/pxelinux/nfsroot   *(rw,no_root_squash,async,insecure)启动nfs
> systemctl enable --now nfs

设置PXE启动


> cp -a /usr/share/syslinux/pxelinux.0 /pxelinux/
> mkdir -p /mnt/iso挂载iso镜像文件
> mount /dev/sr0 /mnt/iso/拷贝引导文件
> cp -a /mnt/iso/isolinux/vmlinuz /pxelinux/
> mkdir -p /pxelinux/pxelinux.cfg
> cp -a /mnt/iso/isolinux/isolinux.cfg /pxelinux/pxelinux.cfg/default修改default文件如下:
default ks
timeout 600
display boot.msg
label kskernel vmlinuz	#该文件就是上面拷贝的文件,必须存在append initrd=initrd.img root=nfs:10.0.0.10:/pxelinux/nfsroot,proto=tcp,nfsvers=3,nolock selinux=0 ip=dhcp rw nomodeset vga=0x314initrd=initrd.img 是待会要制作的文件
root=nfs:10.0.0.10:/pxelinux/nfsroot,proto=tcp,nfsvers=3,nolock 这里注意你的nfs必须能够正常工作,而且必须申明使用tcp v3版本。
selinux=0 关闭selinux
ip=dhcp ip使用dhcp获取
rw nomodeset vga=0x314 分辨率设置

拷贝系统文件


接下来需要拷贝系统文件到 /pxelinux/nfsroot

rsync -avz --progress --exclude='/pxelinux' --exclude='/proc' --exclude='/sys' --exclude='/tmp' --exclude='/var/tmp' --exclude='/media' \--exclude='/mnt' --exclude='/etc/mtab' --exclude='/run' --exclude='/opt' --exclude='/dev'   /* /pxelinux/nfsroot说明:使用 rsync 拷贝,通过 --exclude排除无需拷贝的系统文件拷贝完成后,创建必须存在的目录:
> cd /pxelinux/nfsroot/
> mkdir -p proc sys tmp var/tmp media mnt opt run dev删除网卡信息
> cd /pxelinux/nfsroot/
> rm -rf etc/sysconfig/network-scripts/ifcfg-eth*创建dev目录下设备文件
> cd dev
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3 修改fstab内容
> vim etc/fstab
10.0.0.10:/pxelinux/nfsroot /	nfs     defaults,sync,rw,nolock	0 0
tmpfs        /dev/shm    tmpfs        defauls        1 1
devpts        /dev/pts    devpts        gid=5,mode=620    0 0
sysfs        /sys        sysfs        defaults    0 0
proc        /proc        proc        defaults    0 0注意:fstab需要修改为上面的内容,注意nfs的写法。

生成initrd.img文件


> yum install -y dracut dracut-network
> chroot /pxelinux/nfsroot/
dracut initrd.img `uname -r`
等待一会会生成一个img文件
生成完成后,退出
exit
> cd /pxelinux/nfsroot/
> chmod 644 initrd.img
> mv initrd.img /pxelinux/查看initrd.img 中是否包含nfs,包含nfs才能使用,如何才能包含?直接使用 yum install -y nfs-utils rpcbind 即可。
> lsinitrd /pxelinux/initrd.img | egrep nfs

到此,已经完全配置完毕。


无盘启动测试


创建一台没有磁盘的虚拟机。

image-20241231155937867

直接开机启动。

获取到IP并通过 tftp获取到了引导启动文件。

image-20241231160021984

该主机的IP为:10.0.0.11 启动成功后,通过ssh连接到该主机。

> lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0   11:0    1 1024M  0 rom> df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
devtmpfs                    devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                       tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                       tmpfs     2.0G   20M  2.0G   1% /run
tmpfs                       tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
10.0.0.10:/pxelinux/nfsroot nfs        96G  3.2G   92G   4% /
tmpfs                       tmpfs     394M     0  394M   0% /run/user/0

通过磁盘命令查看,根分区确实通过nfs挂载所得,在根目录下创建文件,等同于在服务主机 /pxelinux/nfsroot下一样。

无盘客户端创建:
> dd if=/dev/zero of=/bigfile bs=1M count=1024服务器查看:
> ll /pxelinux/nfsroot/bigfile
2.0G -rw-r--r-- 1 root root 1.0G 2024-12-31 16:03:24 /pxelinux/nfsroot/bigfile

简单测试下性能:

查看两侧网络速率
服务器:
> ethtool eth0| egrep -i speedSpeed: 1000Mb/s无盘客户端:
> ethtool ens33| egrep -i speedSpeed: 1000Mb/s两个都是千兆网络,在无盘客户端使用dd写入文件
> dd if=/dev/zero of=/root/bigfile bs=1M count=1024 oflag=direct
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.89168 s, 182 MB/s通过千兆nfs-v3写入性能还是很客观的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core技术研究-HttpContext访问的正确方式

将ASP.NET升级到ASP.NET Core之后,相信大家都会遇到HttpContext.Current无法使用的问题。这也是我们迁移ASP.NET Core必须解决的问题。 先列一下使用HttpContext的具体场景: 1. 在Controller层访问HttpContext 2. 在中间件中使用HttpContext 3. 在数据访问层使用HttpContext …

chrome播放webRTC的H265视频方法

需求描述 最近有需求实现浏览器直接播放摄像头视频 鉴于Camera本身支持了rtsp流,本想web直接播放rtsp,但是还不行,搜了一下webRTC实现的效果和延迟会好一些。于是就使用了mediaMTX转了下rtsp的流,变为webRTC。 随便写了个h5页面对视频进行播放,使用下面代码的话替换一下sr…

在Excel 2013中调出开发工具

打开Excel 2013,点击左上角的【文件】菜单,在【文件】菜单下,选择【选项】按钮 在弹出的【Excel选项】界面中,选择【快速访问工具栏】。在【自定义功能区】处,勾选【开发工具】选项。设置完成后,关闭【选项】界面。这时,在功能区靠右端就可以看到新增加的【开发工具】选…

库卡机械臂驱动器KPS600故障维修

首先,当出现库卡机器人驱动器过载时,首要任务是确认过载的原因。过载可能由多种因素引起,如电源电压不稳定、负载过大、电机故障或控制器设置不当等。通过检查电源电压、负载情况、电机运行状态以及控制器设置,我们可以初步判断KUKA工业机械手驱动器过载的根源。 一旦确定了…

流量分析 - 练习篇2

L1-2 流量分析流量包描述:某天晚上安服仔小辉辉上班摸鱼期间突然发现服务器登入页面被挤掉线了,于是第六感告诉他,服务器肯定是被黑客攻击了,于是他赶紧把服务器的网线拔了并调取了那段时间的流量,然后慌忙的找到你,求求你救救安服仔吧1.分析L1-2.pcapng数据包文件,通过…

Centos 7.9部署ldap 2.4.44

1、环境准备 [root@ldap81 openldap]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@ldap81 openldap]# uname -r 3.10.0-1160.119.1.el7.x86_64systemctl stop firewalld systemctl disable firewalld setenforce 0 hostnamectl set-hostname ldap81…

[241231]阿普米司特抗银屑病的同时辅助抗真菌感染

已知真菌定植/感染可能参与触发或加重斑块状银屑病. 抗IL-17和TNFi可能增加真菌感染风险. 一项探索性研究通过70例难治部位(头皮, 指甲, 间擦部/外生殖器)银屑病患者接受阿普米司特治疗前以及治疗1年过程中(允许局部真菌感染入组并继续抗真菌治疗), 监测真菌定植/局部真菌感染以…

为什么企业需要 IT 资产管理软件?

当前企业的运营越来越依赖于信息技术,从日常办公的电脑、打印机到支撑核心业务的服务器、网络设备等,IT 资产已经成为企业不可或缺的重要组成部分。而 IT 资产管理软件在这个过程中发挥着至关重要的作用。 企业面临的 IT 资产管理问题 1、资产数量庞大且种类繁多 随着企业的…

delphi 协程 doroutine bg + ui 嵌套 并行

前言 bg 与 ui 是互相嵌套的,没有终点;就是说 程序 若是高密计算,ui + bg 一切同时并行,快速响应; 示例代码 unit main;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.D…

React中的 ref 及原理浅析

前言 对于 ref 的理解,我们一部人还停留在用 ref 获取真实 dom 元素和获取组件层面上,但实际 ref 除了这两项功能之外,在使用上还有很多小技巧。本章我们就一起深入探讨研究一下 React ref 的用法和原理;本章中所有的源码节选来自 16.8 版本 基本概念和使用 此部分将分成两…