ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Openfiler 搭建 iSCSI 共享存储:ESXi 与 Windows 挂载实战指南

Openfiler 搭建 iSCSI 共享存储:ESXi 与 Windows 挂载实战指南 1. 为什么还要折腾 Openfiler 这套老方案先把话说在前头Openfiler 不是一个新东西它的最后一个稳定版本停留在 2.99 那一代内核基于 2.6 系列官方早就停止维护了。那为什么还有人在搜它的安装教程、还在拿它做 iSCSI 存储答案很现实——它足够轻、足够免费、足够简单一台淘汰的旧服务器或者一台配置还行的虚拟机装完就能对外提供块级存储给 ESXi、Proxmox VE、Windows、Linux 挂载使用。对于想在家里搭一套小型虚拟化实验环境、又不想花钱买商业存储的人来说Openfiler 依然是一个能跑通全流程的练手平台。我自己第一次接触它是为了给一台 ESXi 主机挂共享存储好把虚拟机从本地磁盘迁到共享卷上测试 vMotion 和快照。当时手上只有一台旧塔式机两块 1TB 硬盘装完 Openfiler 配好 iSCSIESXi 那边一扫就认到了 LUN整个过程不到一小时。这个体验让我意识到理解 iSCSI 这套东西Openfiler 是个极好的教学载体因为它把 target、LUN、ACL、CHAP 这些概念都用图形界面摊开给你看不像某些商业存储把细节全藏起来。这篇内容适合三类人一是手里有闲置硬件、想搭 iSCSI 共享存储做虚拟化实验的二是正在学 ESXi、需要一块共享存储来练手 vMotion、HA 的三是想搞明白 iSCSI 协议到底怎么回事、target 和 initiator 怎么握手的。我会从安装、网络规划、卷组划分、iSCSI target 配置一直讲到 ESXi 和 Windows 两端的挂载验证把中间容易踩的坑都摊开说。需要说明的是Openfiler 官方文档比较零散下面涉及的具体参数和步骤一部分来自官方手册一部分是我自己反复装机总结出来的实践方案遇到和你的环境不一致的地方以实际为准。2. 装之前必须想清楚的几件事2.1 硬件与虚拟化平台的选择Openfiler 对硬件的要求低到离谱。官方给的最低配置是 512MB 内存、单核 CPU、一块 8GB 以上的系统盘但这是能开机的标准不是能用的标准。我的建议是系统盘单独一块数据盘至少两块内存给到 2GB 以上CPU 双核起步。原因很简单Openfiler 底层是 Linux 加软件 RAID 加 LVM数据盘要做 RAID 才有意义系统盘和数据盘混在一起将来扩容或者重建 RAID 会非常难受。如果你打算用虚拟机跑VMware Workstation、ESXi、PVE 都行。用 Workstation 做实验最方便因为可以随时快照回滚。这里有个关键点给 Openfiler 虚拟机加数据盘的时候一定要选独立-持久或者直接挂物理盘不要用快照链上的虚拟盘做 iSCSI 后端否则性能会掉得很难看而且快照一多磁盘 IO 延迟会高到 ESXi 那边直接报存储超时。我实测过同样一块盘走快照链和走独立盘4K 随机写能差出三四倍。网络这块强烈建议给 Openfiler 配两块网卡一块管理口跑 Web 管理界面和 SSH一块存储口专门跑 iSCSI 流量。如果只有一块网卡管理流量和存储流量挤在一起你传大文件的时候 Web 界面会卡到打不开。虚拟化环境下加一块虚拟网卡成本几乎为零没理由省这个。2.2 网络规划与 IP 分配iSCSI 走的是 TCP/IP所以网络规划直接决定性能上限。我的习惯是给存储网络单独划一个网段比如192.168.100.0/24Openfiler 存储口用192.168.100.10ESXi 的 vmkernel 口用192.168.100.20两边直连或者走同一台交换机都行。不要跨路由iSCSI 跨三层会引入额外延迟而且 MTU 不好统一。关于 MTU如果你的交换机支持巨帧Jumbo Frame可以把存储网络两端都设成 9000能明显降低大块传输的 CPU 开销。但要注意链路上任何一环不支持 9000就会出问题表现为能 ping 通但 iSCSI 连不上或者传一会儿就断。排查这种问题很折磨人所以实验环境里我一般先用 1500 跑通确认没问题再考虑上巨帧。项目管理网络存储网络网段192.168.1.0/24192.168.100.0/24Openfiler 地址192.168.1.10192.168.100.10对端地址网关/管理机ESXi vmkernel 192.168.100.20MTU15001500验证后可改 9000用途Web 管理、SSHiSCSI 数据2.3 安装介质的准备Openfiler 的 ISO 现在官方源不太好找很多镜像站已经下架。能拿到的版本一般是openfileresa-2.99.1-x86_64-disc1.iso这个。下载完记得校验一下哈希老镜像放久了偶尔会有损坏。写盘用 Rufus 或者直接刻盘都行虚拟机的话直接挂 ISO 启动。注意Openfiler 2.99 是 64 位版本安装时如果虚拟机 CPU 没开虚拟化支持或者 BIOS 里 VT-x 没打开安装过程可能卡在检测阶段。装之前先在虚拟机设置里确认一下。3. 安装过程逐步拆解3.1 引导与语言、键盘选择挂上 ISO 启动第一个界面是引导菜单直接回车走图形化安装。接下来会让你选语言和键盘布局这里建议选 English 和 U.S. English不是因为它好用而是因为中文界面在老版本里翻译不全有些按钮是乱码反而增加理解成本。键盘布局选错的话后面输密码会莫名其妙打不出某些符号这个坑我踩过。分区这一步安装程序默认会帮你自动分区但自动分区会把整块系统盘吃掉如果你系统盘和数据盘是分开的这没问题如果只有一块盘那自动分区之后就没空间做数据存储了。所以我的做法是选手动分区给系统盘划三个区/boot给 200MBswap给内存的 1 到 2 倍剩下的全给/。数据盘在安装阶段不要动装完系统再进去做 RAID 和 LVM这样更灵活。3.2 网络配置与主机名安装过程中会弹出网络配置界面。这里把管理口配好就行存储口可以装完系统再配。主机名建议起个有意义的名字比如of-storage01别用默认的localhost.localdomain因为后面 ESXi 添加 iSCSI target 的时候有些客户端会用 IQN 或者主机名来标识名字清晰能省很多事。IP 配置我一般用静态地址DHCP 在存储环境里是大忌——地址一变所有挂载全断。DNS 可以填网关或者公共 DNSOpenfiler 本身不太依赖 DNS但 NTP 时间同步建议配上因为 iSCSI 的 CHAP 认证和时间戳有关时间差太大偶尔会认证失败。3.3 root 密码与安装收尾root 密码设一个你记得住的别搞太复杂因为后面要频繁用 root 登录 Web 界面和 SSH。安装程序跑完会提示重启重启前记得把 ISO 从虚拟光驱里弹出来否则又会从光盘引导白装一遍。重启后看到登录提示符说明系统装好了。这时候先用管理口的 IP 在浏览器里打开https://192.168.1.10:446注意端口是446不是默认的 443这是 Openfiler 的一个特点很多人第一次访问打不开就是栽在端口上。默认账号是openfiler密码是password登录后第一件事就是改掉它。4. 存储卷的规划与创建4.1 数据盘初始化与 RAID 组建登录 Web 界面后进Volumes标签页先看Physical Storage里有没有识别到你的数据盘。如果没看到多半是盘没接好或者虚拟机没挂上。识别到之后点Software RAID创建阵列。两块盘做 RAID1三块以上做 RAID5这是常规选择。RAID1 的好处是简单、可靠坏一块盘直接换重建快RAID5 空间利用率高但重建时如果又坏一块就全没了而且写性能受限于校验计算。实验环境里我推荐RAID1因为你要的是稳定跑通流程不是追求容量。创建 RAID 的时候块大小chunk size选 64K 或 128KiSCSI 场景下大块顺序读写多大 chunk 效率更高。提示软件 RAID 创建后会有一个同步过程几块大盘可能要同步几十分钟甚至更久。同步没完成之前不要急着在上面建卷组否则性能会很差而且万一中途断电阵列状态可能异常。4.2 卷组与逻辑卷的划分RAID 建好后进Volume Groups把 RAID 设备加进卷组。卷组名字随便起比如vg_iscsi。然后是Logical Volumes这里才是真正决定你对外提供多少存储的地方。逻辑卷怎么划取决于你的用途。如果只是给 ESXi 挂一个数据存储那就建一个大 LV比如 500GB直接整块给出去。如果打算给多台主机分别提供独立 LUN那就建多个小 LV。我的经验是LV 的容量不要卡着物理容量上限建留 10% 到 20% 的余量因为 LVM 快照、元数据都需要空间而且将来扩容也方便。层级名称示例容量说明物理盘/dev/sdb, /dev/sdc1TB x2数据盘RAIDmd01TBRAID1 阵列卷组vg_iscsi1TB包含 md0逻辑卷lv_esxi01500GB给 ESXi 的 LUN逻辑卷lv_win01200GB给 Windows 的 LUN建 LV 的时候有个细节文件系统类型选无或者block因为 iSCSI 提供的是块设备不是文件共享。如果你在这里格式化成 ext4 或者 xfs那这块 LV 就被文件系统占用了没法直接作为裸 LUN 映射出去。这一点和 NFS 共享完全不同很多人第一次配会搞混。4.3 iSCSI target 的创建与 LUN 映射进Services标签页先把iSCSI target服务启动并设为开机自启。然后进Volumes下的iSCSI Targets点Add Target。系统会自动生成一个 IQN格式类似iqn.2006-01.com.openfiler:tsn.xxxxxxxx。这个 IQN 就是 target 的唯一标识ESXi 那边添加的时候要填这个。创建完 target接着做LUN Mapping。把刚才建好的逻辑卷映射到这个 target 上LUN ID 从 0 开始分配。一个 target 可以映射多个 LUN但 ESXi 那边一个 target 下挂太多 LUN 管理起来乱我一般一个 target 对应一个 LUN清晰。然后是Network ACL这一步是控制哪些 initiator 能连这个 target。把 ESXi 的 vmkernel IP 或者 IQN 加进允许列表。如果 ACL 没配默认是拒绝所有ESXi 那边会一直显示未发现设备。ACL 支持按 IP 和按 IQN 两种方式按 IQN 更严格也更安全但配置起来麻烦一点实验环境里按 IP 配就够了。最后是CHAP Authentication。CHAP 是双向认证target 和 initiator 各有一个用户名密码。实验环境可以不开但生产环境必须开。开 CHAP 的时候注意用户名和密码在两端必须完全一致大小写敏感而且密码长度有要求太短会认证失败。我遇到过因为密码里有个特殊字符在 ESXi 端被转义导致认证不过的情况后来改成纯字母数字就正常了。5. 客户端挂载实战5.1 ESXi 端添加 iSCSI 存储在 ESXi 的 Web 管理界面里进存储-适配器添加一个软件 iSCSI 适配器。然后进这个适配器的动态发现填 Openfiler 存储口的 IP 和端口 3260CHAP 如果开了就填上。添加完点重新扫描正常情况下几秒钟后就能在设备里看到新的磁盘。如果扫不到按这个顺序排查先在 ESXi 的 SSH 里vmkping 192.168.100.10看通不通通了再nc -z 192.168.100.10 3260看端口开没开端口开了再看 Openfiler 的 ACL 有没有放行这个 vmkernel IP。十有八九是 ACL 的问题因为 Openfiler 的 ACL 界面不太直观加完要确认一下状态是 enabled 而不是 pending。扫到设备后进存储-新建数据存储选 VMFS把这块 LUN 格式化。格式化会清空 LUN 上所有数据确认这块 LUN 是新的、没在用再操作。VMFS 版本选 6 还是 5 取决于你的 ESXi 版本8.0 默认 VMFS 6没问题。5.2 Windows 端挂载 iSCSI 磁盘Windows 端更简单。打开iSCSI 发起程序在发现标签里点发现门户填 Openfiler 的 IP。然后进目标标签应该能看到 Openfiler 的 IQN选中点连接。如果开了 CHAP点高级填认证信息。连接成功后进磁盘管理会看到一块新磁盘处于脱机状态。右键把它联机然后初始化、分区、格式化。这里有个坑Windows 默认会把非系统磁盘设为脱机这是为了防止多路径冲突单路径环境下手动联机就行。格式化的时候分配单元大小选 64K和 Openfiler 那边的 chunk size 对齐性能会好一些。5.3 挂载后的验证与性能测试挂载完别急着用先做个简单的读写测试。Windows 端可以用diskspd或者CrystalDiskMarkESXi 端可以在数据存储里建个虚拟机跑一下。我一般会传一个几 GB 的大文件看传输速率稳不稳定同时观察 Openfiler 那边的 CPU 和磁盘 IO。如果速率只有几十 MB/s先看网络是不是跑在百兆上再看 RAID 是不是还在同步最后看是不是走了管理网而不是存储网。iSCSI 性能问题九成出在网络和 RAID 状态上存储本身的计算开销很小。千兆网络下单路径 iSCSI 跑到 110MB/s 左右是正常的如果只有一半多半是双工或者 MTU 没对齐。6. 常见问题与排查速查6.1 连接类问题现象可能原因排查方法ESXi 扫不到 LUNACL 未放行检查 Network ACL 是否 enabled能 ping 通但连不上 3260iSCSI 服务未启动Services 里确认 target 服务状态CHAP 认证失败密码不一致或含特殊字符两端改成纯字母数字重试连接后频繁掉线MTU 不一致或网络抖动两端统一 MTU检查交换机6.2 性能类问题性能问题里最隐蔽的是RAID 后台同步。Openfiler 建完 RAID 后会在后台同步这时候读写性能极差但界面上不一定有明显提示。你可以 SSH 进去cat /proc/mdstat看同步进度[....]这种就是还在同步。等同步完再测性能否则测出来的数字没有参考价值。另一个常见问题是写缓存。Openfiler 默认可能没开写缓存导致写入性能偏低。可以在卷组或者 LV 层面调整但要注意开写缓存意味着断电可能丢数据实验环境无所谓真存重要数据的话得配 UPS 或者用带电池保护的 RAID 卡。6.3 我踩过的几个坑第一个坑是系统盘和数据盘混用。早期图省事一块盘装系统又做存储结果系统盘一满iSCSI 服务直接挂掉ESXi 那边所有虚拟机卡死。后来老老实实分开再没出过这个问题。第二个坑是ACL 配了但没生效。Openfiler 的 ACL 加完有时候状态是 pending要点一下应用或者重启 iSCSI 服务才生效。我一开始不知道对着配置页看了半天明明 IP 加进去了就是连不上重启服务后立刻就好了。第三个坑是时间不同步导致 CHAP 偶发失败。这个最难查因为不是每次都失败十次里失败一两次。后来把 Openfiler 和 ESXi 都指向同一个 NTP 源问题消失。所以别嫌麻烦NTP 该配就配。7. 关于这套方案的一些个人体会Openfiler 这套东西放到今天来看确实老了内核老、界面老、官方也不更新了。但它的价值在于把 iSCSI 的整个链路完整地暴露给你从物理盘到 RAID到 LVM到 target到 LUN mapping到 ACL到 CHAP每一层你都能看到、能改、能验证。你在商业存储上可能点几下就完事的东西在这里要一步步配配完你就真的懂了。我现在带新人做存储实验还是会让他在 Openfiler 上走一遍全流程然后再去用 TrueNAS 或者商业存储。因为前者让你理解原理后者让你提高效率顺序不能反。如果你只是想快速有个能用的 iSCSI 存储那 TrueNAS 或者群晖的 iSCSI 功能更省事但如果你想搞明白 ESXi 挂共享存储到底发生了什么Openfiler 依然是个值得花一个下午折腾的选择。最后分享一个小技巧装完 Openfiler 后先做个虚拟机快照把干净的系统状态存下来。后面配置搞乱了直接回滚比重装快得多。这个习惯我在所有实验环境里都保持省下的时间够你多跑好几轮测试。
返回列表