作者:可爱的小 cherry
大家好,这里是 Cherry,喜爱折腾、玩数码,热衷于分享数码玩耍经验 ~
前言
NAS 作为网络存储设备,可以提供各式各样基于网络的存储服务。其中,常用的分类又包含文件传输协议(泛指)、对象存储协议、块存储协议、数据库存储协议等。
⭐文件传输协议(泛指),就是最常见的就是 SMB、NFS、FTP/SFTP、WebDav 等;此外,Syncthing、Rysnc 等也算是。
⭐数据库存储协议,是指将文件以一定的编码格式存入各类数据库中。
⭐对象存储协议,以 AWS S3、MinIO 为常见服务,将文件存在对象桶中。
⭐块存储协议,以 iSCSI 为例,提供原始块设备访问,可作为物理存储。
日常工作、生活中,最常用的就是文件传输协议,这也是大部分 NAS 会提供的服务;其次是对象存储协议,比如图床等;再次是块存储协议,例如 NAS 给小主机扩容等;最后是数据库存储协议,一般仅在开发中使用。
例如极空间私有云,就提供了常见的文件传输服务。
最近,我利用 AI 工具,开发了一款基于 docker 的 iSCSI 管理软件,原理是基于 ubuntu docker 的 tgt web 管理界面,实现原生的 tgt 服务。在本项目的支持下,极空间除了提供能实现文件传输外,也能提供块存储协议!
一、项目部署
1、下载镜像
该项目镜像,我通过 github action 定时发布,可以通过极空间的自定义拉取功能直接下载,镜像地址:ghcr.io/coracoo/d-tgtadm:latest
如果嫌弃 github 仓库下载慢的,也可以下载阿里云的镜像包:【crpi-xg6dfmt5h2etc7hg.cn-hangzhou.personal.cr.aliyuncs.com/cherry4nas/d-tgtadm:latest 】
2、创建容器
选择刚导入 / 下载的镜像,选择添加到容器。
基本设置取消性能限制,让 iSCSI 拥有更好的性能。
【文件夹路径】:默认提供了 /app/config 和 /app/iscsi 两个路径,前者用来存储配置文件、日志;后者用来存储虚拟磁盘,如果这两个文件不映射,那重启容器后就掉盘了,因此务必填写。
此外,如果在极空间里已经有现成的各类虚拟磁盘,我们也可以挂载到 /app/iscsi/XXX.img 下,这样容器会直接读取磁盘,并且自动挂载到 iSCSI 上。
【网络】,本项目采用了 3260(iSCSI 端口),13260(web 管理端口)两个端口,请务必将网络更改为 host 模式。
【环境变量】,目前没有设置参数,唯一可以改的就是 TZ 时区,根据你所在地区修改即可。
二、系统使用方法
1、使用方法
如果我们启动容器的时候,挂在了虚拟磁盘的,那么软件会在第一次启动的时候直接将虚拟磁盘挂载到 iSCSI Target 1 LUN 1 上,我们直接就可以使用了。
在 windows 的搜索框,搜索 iSCSI 发起程序并打开。
在目标里输入极空间的 ip 地址,点击快速连接。
确保连接成功。
接着,搜索并打开计算机管理,切换到磁盘管理,挂载成功的话,系统会提示要初始化磁盘。选择 GPT 分区并确认即可。
然后选择增加的未分配磁盘,右键新建简单卷,一直下一步。
然后你就可以看到挂载为盘符的 LUN 块了,这样我们就可以正常在 PC 里使用 NAS 割出来的 iSCSI 块存储了。磁盘的读写速度是受物理硬盘、网络的影响的,实际使用速度和挂载 SMB 差不多,不会有更多性能损耗。
2、功能详解
除了默认挂载的第一个磁盘外,我们还可以手动配置 iSCSI 服务。
首先是最上方的状态栏,这里展示了系统的基本信息、根目录、Target、LUN、磁盘数量;中间的 LUN 性能目前还在开发中,忽略即可;iSCSI 状态栏,用于打印 tgt 的信息。
系统启动时,会创建一个 iqn.2025-05.com.cherry:target1 的默认 IQN,target id 是 1。大家可以删除也可以保留,设置自己喜欢的 IQN 和 Target ID。
点击创建 Target,可以随意输入 ID 和 IQN,注意 IQN 要保持 iqn.yyyy-mm.com.xxxx:name 的格式,默认开放全部白名单。
清除 ACL 策略,就是删除现有的白名单。
增加 ACL 策略,就是增加白名单。
白名单会在列表里展示,全部放行代表 ALL。
接着,我们要创建虚拟磁盘。默认采用 qemu 方式创建虚拟磁盘,两者的区别写在了系统里,建议使用 qemu 方式创建,配置更灵活。
⭐虚拟磁盘删除功能:考虑到删除是永久性的,所以建议从 NAS 删除,系统里不单独做删除功能。并且在删除之前,需要先将 LUN 块和虚拟磁盘解绑,否则会生成一个空的虚拟磁盘。
创建好虚拟磁盘以后,我们将虚拟磁盘挂载到 Target 和 LUN 中,LUN 作用主要是标记。
最终一个完整的 LUN 块,包括 Target ID、LUN ID、后备磁盘(即虚拟磁盘)。
当然,我们还支持多 Target、多 LUN、多磁盘的混合挂载。详见下图,同时连接了 2 个 IQN,并且挂载了 3 个 LUN。
注意,一块虚拟磁盘不要挂载给不同的客户端,这会导致读写错乱,切记一块磁盘至多对应一台 PC,但是一台 PC 可以对应多块磁盘。
总结
本文通过我自行开发的 web 管理工具,让极空间增加了 iSCSI 存储协议,从而实现给 PC、miniPC、其它 NAS 提供块存储的能力。
至于对象存储服务,大家也可以根据我之前介绍的极空间部署 MinIO 服务来实现。
如果你是家庭用户,并且期待简单易用的 NAS,那么极空间绝对是你的不二选择。国补期间,网络存储设备有 15% 的补贴,是入手的好时机!新手建议入手 Q4、Z4 Pro 性能版两款型号,高性能可入手 Z423 标准版和 Z423 旗舰版。
登录后才可以发布评论哦
打开小程序可以发布评论哦