本文介绍网络存储ISCSI的主要知识点以及如何通过代码控制挂载。
Windows网络存储有很多协议,我目前学习、稍微有了解的是FTP、SMB、ISCSI,FTP、SMB类似可以用来添加共享文件夹,或者添加映射网络驱动器:
我使用FTP都是先建个映射,再将内部的文件夹固定到快速访问。平时使用效率就很高了
回到ISCSI,最近买了2款NAS,多学习学习NAS这块
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250213231432659-299871829.png)
群晖,网上大家评价性能很好。我尝试了下,就退货了。。。略贵,操作还特别复杂
绿联,有点坑不支持ISCSI,只支持SMB这些协议,不过它的手机、PC设备数据同步,软件体验还蛮好的。
威联通,我买了入门级的262C版本,哈哈。4G内存2块硬盘位置,学习肯定是够用了。
iSCSI(Internet Small Computer Systems Interface)是一种使用IP网络传输SCSI命令的协议,使得存储设备能够通过网络进行访问。它将存储区域网络(SAN)的功能扩展到远程位置。 工作方式:iSCSI通过TCP/IP网络传输数据,它将存储设备看作是本地硬盘,允许块级存储访问
iSCSI是一种基于因特网及SCSI协议下的存储技术,使用 TCP/IP 协议(一般使用3260)让两台主机通过IP网络相互协商然后交换SCSI命令。
这样,iSCSI就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN),这样可将NAS的一部分空间作为虚拟磁盘与电脑端共享,像本地硬盘一样使用这部分空间,并且还是块级存储。
买回来初始化后,打开"iSCSI与光纤通道"应用,新建文件LUN快速创建一个ISCSI目标:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250213232255011-1799723704.png)
在控制台-系统状态,查找到我们的IP:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250212234203063-1479309902.png)
手动挂载操作
然后在你电脑Windows上,搜索iscsi,打开"iscsi发起程序"。输入IP,点确定即可:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250213233953746-2116036320.png)
回到第一个Tab,选中iqn目标连接。如果想省事也可以使用"快速连接",在第一个Tab中输入IP:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250213234225938-1782470349.png)
操作完了这些,打开Windows开始菜单-磁盘管理,就可以看到未初始化的磁盘了:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250213234641478-29023907.png)
右键新建卷,完成盘符、格式化,就以正常使用了。这个操作比较耗时,276G磁盘花了35s。。。:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250213234951496-1443306113.png)
代码控制挂载
上面是手动操作挂载的,也可以通过基于iscsi命令快速实现
下面输入IP,查找iscsi目标:
1 iscsicli AddTargetPortal 192.168.31.67 3260
2 iscsicli ListTargets
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250212234253943-1873758169.png)
然后连接目标:
1 iscsicli QLoginTarget iqn.2004-04.com.qnap:ts-262c:iscsi.yudong.87ddf4
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250212234316335-1277716113.png)
操作成功后,iqn目标会显示连接成功:
![](https://img2024.cnblogs.com/blog/685541/202502/685541-20250212234516010-276234168.png)
以上是通过iscsicli实现的,详细的操作指令,可以通过cmd或者powershell输入iscsicli help查看。文档API也可以看 iSCSI 发现库 API - Win32 apps | Microsoft Learn。
也可以通过PowerShell完成挂载,PowerShell实现有比较完善的文档,
iSCSI Module | Microsoft Learn、IscsiTarget Module | Microsoft Learn
实现 Windows Server iSCSI - Training | Microsoft Learn
iSCSI Target Server Overview | Microsoft Learn
另外,WMI其实也可以iSCSI WMI 类 - Windows drivers | Microsoft Learn,只不过貌似未开放
之后就是初始化磁盘 ,命令行操作可以使用diskpart完成。diskpart可以参考 Windows 本地虚拟磁盘 - 唐宋元明清2188 - 博客园 里磁盘初始化的内容
如果需要.NET实现一键挂盘,可以针对上面的iscsicli或者powershell脚本进行封装下。
参考文章:
科普!一文详解 FTP、FTPS 与 SFTP 的原理 - 知乎