基于iSCSI的银河麒麟V10 SP1无盘部署全流程解析
在数据中心和服务器机房中,传统的光盘或U盘安装方式正逐渐被更高效的网络部署方案取代。想象一下,当需要为数十台服务器批量安装操作系统时,不再需要逐个插入安装介质,而是通过简单的网络配置就能完成整个部署过程——这正是iSCSI技术带来的变革。
1. iSCSI技术基础与部署方案选型
iSCSI(Internet Small Computer System Interface)作为一种基于IP网络的存储协议,本质上是通过TCP/IP网络传输SCSI命令,将远程存储设备映射为本地磁盘。这种技术特别适合需要集中管理多台服务器系统镜像的场景。
与传统安装方式的对比:
| 特性 | U盘安装 | iSCSI网络安装 |
|---|---|---|
| 部署速度 | 单台约30-60分钟 | 多台并行,单台约15分钟 |
| 硬件依赖 | 需要物理介质 | 仅需网络连接 |
| 管理复杂度 | 逐个操作 | 集中管理 |
| 适用场景 | 少量设备 | 大规模部署 |
| 系统维护 | 需物理接触 | 远程即可操作 |
在实际项目中,我们曾为某金融机构部署测试环境,使用iSCSI方案将20台服务器的Kylin V10安装时间从原来的10小时缩短到2小时,效率提升显著。
2. Windows Server端Target配置详解
2.1 环境准备与角色安装
首先需要在作为存储服务器的Windows Server 2019上配置iSCSI Target服务:
# 安装iSCSI目标服务器角色 Install-WindowsFeature -Name FS-iSCSITarget-Server -IncludeManagementTools安装完成后,建议进行以下网络优化配置:
- 为iSCSI流量分配专用网卡
- 设置Jumbo Frame(巨型帧)为9014字节
- 禁用TCP/IP协议中的TCP Chimney Offload
2.2 虚拟硬盘创建与配置
创建用于系统安装的虚拟硬盘时,有几个关键参数需要注意:
# 创建固定大小的VHDX虚拟磁盘(建议至少50GB) New-VHD -Path C:\iSCSIVirtualDisks\KylinBoot.vhdx -SizeBytes 50GB -Fixed虚拟硬盘类型选择建议:
- 固定大小:性能更好,但会立即占用全部空间
- 动态扩展:按需占用空间,但可能有性能影响
- 差异磁盘:适合多客户端测试场景
2.3 Target高级配置技巧
在创建iSCSI Target时,以下配置项需要特别注意:
- IQN命名规范:建议采用
iqn.年月.域名反写:自定义标识的格式 - CHAP认证:生产环境务必启用双向CHAP认证
- 负载均衡:多网卡环境下配置MPIO提高可靠性
一个完整的Target创建示例:
# 创建iSCSI虚拟磁盘 $disk = New-IscsiVirtualDisk -Path "C:\iSCSIVirtualDisks\KylinBoot.vhdx" # 创建iSCSI Target $target = New-IscsiServerTarget -TargetName "KylinDeploy" -InitiatorIds "IQN:*" # 将虚拟磁盘分配给Target Add-IscsiVirtualDiskTargetMapping -TargetName $target.TargetName -Path $disk.Path3. 客户端安装环境准备
3.1 制作可引导的临时环境
虽然我们最终要实现无盘安装,但初始阶段仍需要一个临时环境来配置iSCSI Initiator。推荐使用以下任一方式:
- 微型Linux LiveCD:如Tiny Core Linux(约16MB)
- PXE网络引导:配合iPXE脚本自动加载必要组件
- USB急救盘:仅包含基本工具的最小化系统
在临时环境中,需要确保以下组件可用:
open-iscsi客户端工具iproute2网络工具集fdisk或parted分区工具
3.2 open-iscsi配置与连接
发现和登录Target服务器的详细流程:
# 安装open-iscsi客户端 sudo apt-get update && sudo apt-get install -y open-iscsi # 发现Target服务器(假设服务器IP为192.168.1.100) sudo iscsiadm -m discovery -t sendtargets -p 192.168.1.100 # 查看发现的Target sudo iscsiadm -m node # 登录Target(使用CHAP认证示例) sudo iscsiadm -m node -T iqn.2023.com.example:kylin-target \ --op=update -n node.session.auth.authmethod -v CHAP \ --op=update -n node.session.auth.username -v initiatoruser \ --op=update -n node.session.auth.password -v initiatorpass \ --login连接故障排查要点:
- 检查防火墙是否放行3260端口
- 验证网络连通性(ping和telnet测试)
- 确认CHAP认证信息是否正确
- 查看系统日志
/var/log/messages获取详细错误信息
4. BIOS层iSCSI引导配置
4.1 主流服务器iSCSI Boot支持情况
不同品牌服务器对iSCSI Boot的支持程度有所差异:
| 服务器品牌 | 配置方式 | 特殊要求 |
|---|---|---|
| Dell | 通过iDRAC界面配置 | 需加载网卡iSCSI固件 |
| HPE | Intelligent Provisioning工具 | 需单独下载驱动包 |
| Lenovo | XClarity Controller管理 | 部分型号需更新固件 |
| 华为 | iBMC管理系统 | 需配置Boot LUN参数 |
4.2 UEFI环境下的iSCSI配置
现代服务器大多采用UEFI启动模式,配置流程略有不同:
- 进入UEFI Setup界面
- 找到"Network Stack Configuration"启用网络堆栈
- 在"iSCSI Configuration"中添加新引导项
- 填写Target服务器IP、端口和IQN信息
- 配置CHAP认证信息(如启用)
- 保存设置并重启
关键参数说明:
- Boot LUN:通常设置为0
- VLAN ID:如果使用VLAN需要正确配置
- DHCP与静态IP:生产环境建议使用静态IP
4.3 常见问题解决方案
问题1:服务器无法发现Target
- 检查网卡固件是否支持iSCSI Boot
- 验证交换机端口是否允许iSCSI流量
问题2:连接成功但无法引导
- 确认Target上的磁盘已包含可引导分区
- 检查UEFI/BIOS启动顺序是否包含iSCSI设备
问题3:引导过程中断
- 检查MTU设置是否一致
- 验证网络延迟是否在合理范围内(建议<2ms)
5. Kylin V10 SP1安装优化实践
5.1 分区方案设计
针对服务器环境,推荐以下分区方案:
# 使用parted创建GPT分区表 sudo parted /dev/sda -- mklabel gpt # 创建EFI系统分区(建议300MB) sudo parted /dev/sda -- mkpart primary fat32 1MiB 301MiB sudo parted /dev/sda -- set 1 esp on # 创建交换分区(根据内存大小决定) sudo parted /dev/sda -- mkpart primary linux-swap 301MiB 4.3GiB # 创建根分区(占用剩余空间) sudo parted /dev/sda -- mkpart primary ext4 4.3GiB 100%高级分区技巧:
- 数据库服务器:单独划分
/var分区 - 日志密集型应用:加大
/var/log分区 - 容器环境:预留
/var/lib/docker独立分区
5.2 安装后网络优化
为确保iSCSI磁盘的稳定访问,需进行以下内核参数调整:
# 编辑/etc/sysctl.conf添加以下参数 net.ipv4.tcp_sack = 0 net.ipv4.tcp_dsack = 0 net.ipv4.tcp_fack = 0 net.ipv4.tcp_adv_win_scale = 2 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1网络性能测试命令:
# 测试iSCSI磁盘IO性能 fio --filename=/dev/sda --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=64 --runtime=60 --numjobs=4 --time_based --group_reporting --name=iops-test-job5.3 系统裁剪与加固
为服务器环境定制精简系统:
# 移除不必要的软件包 sudo apt-get purge --auto-remove libreoffice* thunderbird* # 安装最小化桌面环境(如需) sudo apt-get install --no-install-recommends kylin-desktop-minimal # 设置自动安全更新 sudo apt-get install unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades在完成所有配置后,建议制作系统模板镜像,便于快速克隆部署到其他服务器:
# 创建系统镜像快照 sudo dd if=/dev/sda | gzip > /nfs/share/kylin-base.img.gz # 恢复到其他iSCSI磁盘 gunzip -c /nfs/share/kylin-base.img.gz | sudo dd of=/dev/sdb