libvirt怎么添加网络iSCSI目标存储作为虚拟化底层存储池

雨晨姑娘_7864

雨晨姑娘_7864

2026-10-08

287人浏览

原创

不能仅用iscsiadm登录,因libvirt iscsi存储池需自主管理login/logout生命周期、lun发现与acl校验;手动登录后libvirt无法感知连接状态,导致池启停不同步、volume创建失败或报“cannot find device by path”。

libvirt怎么添加网络iscsi目标存储作为虚拟化底层存储池

libvirt 添加 iSCSI 目标作为存储池,核心是用 virsh pool-define 配置一个 type='iscsi' 的持久化池,并确保 initiator 能成功登录 target —— 不是直接挂载路径,也不是靠手动 iscsiadm 登录后就完事。

为什么不能只用 iscsiadm 登录就当存储池用?

libvirt 的 iSCSI 存储池不是“看到设备就认”,它需要自己管理 login/logout 生命周期、LUN 发现和权限校验。如果仅手动运行 iscsiadm -m node -p IP -l,libvirt 启动时无法感知该连接,也无法在池启停时自动同步状态,后续创建 volume 或分配给 VM 会失败(常见报错:cannot find device by path 或 no valid paths to storage)。

  • libvirt iSCSI 池依赖 iscsid 服务持续运行,且要求 /etc/iscsi/initiatorname.iscsi 中的 IQN 已被 target 显式允许(ACL 配置)
  • 必须使用 virsh pool-define 加载 XML 定义,而非靠 udev 自动发现设备节点
  • 池启动后,libvirt 会调用 iscsiadm 执行 discovery + login,这个过程可被日志跟踪:journalctl -u iscsid -f

virsh pool-define 所需的 XML 结构关键点

iSCSI 存储池 XML 必须包含 target portal、IQN、可选认证信息,且 <source></source> 下不能漏掉 <host></host> 和 <device></device>(即使只连一个 target,也得写):

<pool type="iscsi"><name>iscsi_pool</name><source><host name="192.168.10.100"></host><device path="iqn.2026-09.com.example:storage.target01"></device><auth type="chap" username="libvirt_user"><secret usage="libvirt_iscsi_secret"></secret></auth></source><target><path>/var/lib/libvirt/iscsi</path></target></pool>
  • <host name="..."></host> 是 target 的 IP 或 DNS 名,不是 initiator 的;端口默认 3260,不可省略但不用显式写
  • <device path="..."></device> 填的是 target 端配置的完整 IQN(不是 initiator 的),可通过 iscsiadm -m discovery -t st -p 192.168.10.100 验证是否能扫到
  • 若 target 要求 CHAP 认证,必须提前用 virsh secret-define 创建 secret,并在 XML 中引用 usage,不能硬编码密码
  • <target><path></path></target> 是 libvirt 本地用于存放元数据的目录,**不用于挂载设备** —— iSCSI 设备由内核通过 SCSI 总线暴露为 /dev/sdX,libvirt 从 sysfs 解析 LUN 路径

启动池前必须确认的三件事

否则 virsh pool-start iscsi_pool 会静默失败或卡住:

商量SenseChat
商量SenseChat

商量SenseChat是一款AI工具,商汤科技推出的免费AI聊天助手。

下载
  • 运行 systemctl is-active iscsid,确保服务 active;若未启用,执行 systemctl enable --now iscsid
  • 检查 /etc/iscsi/initiatorname.iscsi 是否存在且内容合法(格式为 InitiatorName=iqn.YYYY-MM.reverse.domain:optional_suffix),修改后需重启 iscsid
  • 确认 target 端已将该 initiator IQN 加入 ACL 列表,并绑定了对应 LUN;可用 targetcli ls /iscsi 在 target 上验证

启动后用 virsh pool-list --all 查看状态,再用 virsh vol-list iscsi_pool 看是否列出 LUN —— 正常应显示类似 lun0 的 volume 名,路径形如 /dev/disk/by-path/ip-192.168.10.100:3260-iscsi-iqn.2026-09.com.example:storage.target01-lun-0。

常见错误:LUN 列不出来 or volume 路径为空

最常发生在 target 配置与 initiator 权限不匹配时,而不是网络不通:

  • 现象:virsh vol-list iscsi_pool 返回空,但 iscsiadm -m session 显示已登录 —— 说明 login 成功,但 target 未向该 initiator 暴露任何 LUN
  • 现象:virsh vol-info iscsi_pool lun0 报 no volume with matching name —— 可能是 pool 未真正激活,或 virsh pool-refresh iscsi_pool 未执行(某些 target 需手动刷新才能同步 LUN 变更)
  • 现象:volume 路径是 /dev/sdb 这类不稳定设备名 —— libvirt 默认用 by-path 或 by-id,若看到裸 /dev/sdX,说明 udev 规则或 multipath 未生效,建议在 target 端启用 ALUA 或在 initiator 配置 node.session.scan = manual 并指定 LUN ID

iSCSI 存储池的可靠性高度依赖 target 端的 ACL 精确性和 initiator 的 IQN 稳定性;一旦更换网卡或重装系统导致 /etc/iscsi/initiatorname.iscsi 变更,必须同步更新 target 的白名单,否则池无法启动 —— 这个细节容易被跳过,但会直接阻断所有虚拟机磁盘操作。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

虚拟化

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟化软件介绍
虚拟化软件介绍

虚拟化软件有VMware、VirtualBox、Hyper-V、Parallels Desktop、Oracle VirtualBox等。想了解更多虚拟化的相关内容,可以阅读本专题下面的文章。

2023.12.20

8299

8

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

80

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 3万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

Docker 教程
Docker 教程

共19课时 | 29.4万人学习