虚拟机挂载LUN的核心答案是:先确认虚拟机系统类型,再通过虚拟机管理平台将LUN作为硬盘直通或映射给虚拟机,最后在虚拟机内部完成磁盘初始化和格式化,整个过程涉及存储端、虚拟化层、操作系统层三个环节,任何一个环节配置不一致都会导致挂载失败。
挂载LUN前必须弄懂的基础概念
LUN究竟是什么
LUN(Logical Unit Number)是存储阵列上划分出来的逻辑单元,你可以把它理解为一块“远程硬盘”,通过光纤通道或以太网(iSCSI)协议送给服务器使用,虚拟化和LUN是天生的一对,几乎所有虚拟化平台都把LUN当作数据存储的基础载体。
三种常见挂载方式对比
| 方式 | 实现原理 | 适用场景 | 性能表现 |
|---|---|---|---|
| VMFS/存储池挂载 | LUN先被虚拟化平台接管,再切成虚拟磁盘文件 | 多数生产环境 | 中上 |
| RDM裸设备映射 | VMware环境下把LUN直接映射给虚拟机 | 核心数据库、物理迁移 | 接近物理机 |
| 虚拟机内直连 | 虚拟机内软件iSCSI发起器直接连接 | 特殊测试环境 | 中 |
行业共识认为,生产环境推荐第一种方式,简单可靠且支持快照和迁移,RDM不直观,维护起来容易踩坑。
先做兼容性检查
挂载LUN之前,花十分钟查一下虚拟化平台硬件兼容列表,常见误区是存储阵列较新,而虚拟化平台版本太老导致无法识别LUN,还有一点容易被忽视:确认LUN已经正常映射到主机,存储端遗漏映射是挂载失败的头号原因。
虚拟机挂载LUN的详细步骤
基于vSphere的VMFS卷挂载
步骤1 确认存储端映射
在存储阵列管理界面确认LUN已映射给ESXi主机的HBA卡或iSCSI Initiator,不确定的话可以用以下命令查看ESXi是否识别到LUN:
esxcli storage core device list
如果看到设备类型为Disk的设备,说明物理层已经通了。
步骤2 扫描存储适配器
登录vSphere Web Client,进入主机 → 存储 → 存储适配器,点击“重新扫描”,这一步在光纤环境用不着太久,但千万别跳过,很多新手直接去建存储卷找不到LUN,问题就出在没重新扫描。
步骤3 新建VMFS数据存储
在存储设备列表找到新出现的LUN,右键新建数据存储,选择VMFS版本时,vSphere 6.5以上建议使用VMFS 6,支持更快的闪存效率和更大的卷尺寸。
步骤4 给虚拟机添加硬盘
进入虚拟机编辑设置,添加新设备 → 硬盘 → 选择已有数据存储,选中刚创建的VMFS卷,指定磁盘大小,推荐使用精简制备模式,实际占用的空间远小于分配空间。
Linux虚拟机内部直接挂载iSCSI LUN
这个场景更贴合物理机迁移或要求数据直通的环境,在虚拟机内部执行:
yum install iscsi-initiator-utils
systemctl start iscsid
iscsiadm -m discovery -t sendtargets -p 存储IP
iscsiadm -m node -T iqn.xxx -p 存储IP -l
挂载后执行:
fdisk -l
确认出现的新磁盘设备(dev/sdb),然后按常规流程分区格式化挂载:
mkfs.ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data
如果想开机自动挂载,编辑/etc/fstab,使用UUID更稳妥。
Windows虚拟机通过RDM挂载LUN
VMware RDM方式适合Windows下运行SQL Server或Oracle的场景,在添加硬件时选择裸设备映射,指定LUN后按向导完成,需要注意的一点:Windows虚拟机内部需要执行diskpart命令去联机磁盘,否则磁盘管理里看不到可用状态。
diskpart
list disk
select disk 1
online disk
然后初始化磁盘并分配盘符即可。
挂载LUN的五大注意事项
注意多路径软件的一致性
生产环境必须安装多路径软件,比如Linux的device-mapper-multipath、Windows的MPIO,多数情况下,不装多路径软件会带来盘符漂移和I/O卡顿,装好后执行
multipath -ll确认链路状态正常。
注意磁盘标签和持久命名的规则
Linux下重启后盘符漂移是常见问题,建议配置udev规则或使用/dev/mapper/路径代替/dev/sdX,另一个坑是使用WWID识别磁盘,按WWID固定映射关系,不容易出错。
注意文件系统对齐
创建文件系统时,io大小要与底层存储对齐,建议块设备使用512e格式,格式化时设置-b size=4096并做错位校准,不对齐会明显影响存储的随机读写性能。
注意快照和备份策略
LUN挂载给虚拟机后,存储端的快照功能无法直接兼容虚拟化平台的VM级快照,两者混用可能导致数据不一致,建议只用一层的快照策略,别叠加。
注意取消映射的顺序
需要卸载LUN时,先关机虚拟机,再卸载文件系统或磁盘,最后再从存储端移除LUN映射,反过来的话,虚拟机的磁盘设备可能悬挂或报错。
挂载LUN遇到问题时的排查思路
问题是:主机看不到LUN。 依次检查存储端映射是否提交、HBA卡/网卡状态是否正常、虚拟化平台是否需要重新扫描、交换机Zone是否包含两侧WWN,这四步查完能覆盖绝大多数情况。
问题是:虚拟机能看到磁盘但无法格式化。 检查磁盘是否处于只读状态,可能是存储端快照卷或克隆卷没有写权限,另外确认虚拟化平台给虚拟机添加磁盘时总线类型选对,SATA和SCSI混用也会导致驱动加载不到。
问题是:重启后挂载丢失。 查看/etc/fstab是否配置正确,虚拟机引导时存储是否先于系统就绪,如果是iSCSI依赖存储网络,配置网络服务的启动顺序很关键。
虚拟机挂载LUN有哪些误区
LUN容量分了多大就用多大
LUN本身可以扩容,但虚拟机内操作系统处理文件系统扩容需要额外步骤,如果LUN后面用瘦制备或自动精简配置,底层存储还有超额分配的概念,不能只看前端容量。
把虚拟机直接放在RDM上性能更好
RDM的机身性能优势已经很小,对于大多数业务场景,虚拟化文件系统VMFS的队列深度和缓存机制已经足够,反而多了管线功能,RDM更适合需要集群软件识别LVM或硬件控制的特殊场景。
忽略虚拟机总线的并发限制
单块虚拟磁盘队列深度有限,高并发业务容易卡在存储I/O上,挂LUN时建议把数据文件分散到多块虚拟磁盘,别集中在一块盘上。
虚拟机挂载LUN常见问题解答
虚拟机挂载LUN和物理机挂载LUN有何不同?
虚拟机多了一层虚拟化层,物理机直接用HBA卡发起存储协议,虚拟机可能是通过虚拟化平台的存储协议间接访问(如VMFS),或是通过虚拟HBA直通映射,前者需要先建数据存储再分配虚拟磁盘,后者在虚拟机内部看到的效果和物理机几乎一致,管理路径不一样,故障排查的复杂度更高。
ESXi主机下怎样让虚拟机识别新的LUN?
在存储阵列完成映射后,ESXi主机需要执行一次存储适配器扫描,然后可以建VMFS数据存储,或通过编辑虚拟机设置添加RDM磁盘,添加RDM时选择已有的裸设备,确认类型为全新SCSI控制器,虚拟机内部执行磁盘刷新或重启一次就能看到新设备。
Linux虚拟机挂载LUN后如何配置多路径?
安装multipath-tools包,设置/etc/multipath.conf包含alias和WWN对应关系,启动multipathd服务后运行multipath -ll检查链路,随后对映射出的/dev/mapper/mpathX路径执行分区格式化,如果采用多路径,分区和挂载都基于mapper路径,不直接使用/dev/sdX。
最后的建议
把虚拟机挂载LUN的操作拆成存储端、主机端、虚拟机内三个环节去看,存储端确认映射,主机端确保识别,虚拟机内完成初始化,一步步验证,先把LUN挂载流程写清楚,再接入自动化和标准化运维,这块操作就稳了,记住一个原则:任何变更前先确认监控有数据,任何操作前先备份,不抱侥幸心理。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/622409.html





