我的笔记本电脑瞬间扩大一个T的容量!
前言
不知道有多少人在家里搭建中央存储设备的,也就是NAS。这个东西在我日常生活中,存储了大量的个人资料,家人们的照片,技术的资料,还有各种高清影视剧。搭配公网的IP,可以真正做到,任何时候任何地点的读取资料的需求。
我之前玩NAS写过一篇基础性的介绍文章,包括公网的申请和端口映射,有兴趣的小伙伴可以读下:
https://mp.weixin.qq.com/s/MwaZeDQZfk0tRt1D4iE-5g
然而使用NAS一段时间后,虽然可以随时随地的对文件进行读取和保存。但是我发现还是有很多不方便的地方。
比如我电脑里的一个资料在公网环境要从NAS读取(注意是公网,内网其实怎么样都行),碰到了以下几个麻烦:
1.打开NAS的管理界面,进行授权登陆,把文件下载到本地运行。如果文件小倒还没事,如果文件体积一大,比如一部电影20个G,那我必须等电影全部下载到本地才可以观看。
2.群晖NAS提供了Synology driver文件同步工具,每台电脑上需要装一个客户端软件,A电脑同步上去,B电脑启动时还要等待Synology driver同步下来才能使用文件。我总觉得这种方式虽然可行,但还是太麻烦,还要通过第三方同步软件的支持才可以用。不原生。
3.如果是通过ftp,sftp等这种方式进行挂载访问,也是一样的问题。无非就是把网页的授权登陆换成了ftp的授权。而且ftp好像也不支持流方式的读取,电影无法直接读取播放。
4.至于smb协议方式,把smb映射到公网存在安全隐患。况且smb的传输效率也很低。
所以我后来都采用webdav协议进行挂载,把nas挂载成本地的一个网络硬盘进行访问。这种方式我一直觉得是最好的方式,因为相当于直接在本地进行了NAS磁盘的操作。也能以流的方式播放影视资源。多台电脑,也能同时挂载,这里存进去,那里就能实时读取到。相当便捷。
但是在使用webdav的时候我也发现一些弊端,比如有些软件或者游戏是不支持直接装在网络磁盘里的。
我于是就想,如果系统能把网络磁盘当做是自己本地的磁盘。那就完美了。
就在前段时间,一个老哥和我介绍了iSCSI这个协议,还真能实现这样的骚操作。我研究了以后,成功的把NAS的一部分磁盘空间完美的挂载到了本地,并且,系统会把这个磁盘完完全全当做是本地的磁盘空间。我的macbook pro瞬间扩大了一个T的容量!
好啦,前言有点长,所以,这篇文章就是给玩NAS的同学介绍下iSCSI协议的玩法。
什么是iSCSI
iSCSI(Internet Small Computer System Interface即Internet小型计算机系统接口),是一种在TCP/IP上进行数据块传输的标准,是由CiSCO和IBM两家公司发起的,并且得到了各大存储厂商的大力支持。iSCSI将SCSI命令封装于TCP/IP包之中,并且使用了一个SCSI帧头。iSCSI可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行快速的数据存取备份操作,也就是基于网络的存储。
这是关于iSCSI的解释,我给大家翻译一下:
首先iSCSI是一种通讯传输的协议标准,基于以太网进行数据传输,且传输速率非常高。其次目前很多系统的存储底层都支持这种协议,很多系统底层也支持这种协议,比如windows,macOS。所以这种协议,能够被系统的存储底层所识别,从而从内核层面进行挂载。这种挂载形式会被系统认为是本地的磁盘,但是走的却是网络传输协议。
一句话:操作系统原生的把NAS当做是自己本地的硬盘。安装软件游戏都没问题。
接下来就开搞,设置主要分2个端,服务端(NAS)和客户端(PC的操作系统)
NAS端的设置
我这里仅以群晖的NAS操作系统来介绍,威联通的我没玩过,但是原理都一样。
首先你得把群晖的NAS操作系统更新到7.0版本,可以通过控制面板->更新和还原这个界面来查看:

然后,套件中间里找到SAN Manager这个套件,进行安装:

打开安装好的SAN Manager,选择LUN,点击新增。
选择你创建空间所用的磁盘,然后输入分配容量,我这里分配的是1T容量。这里就是从你这块磁盘划分出一块空间当做一块虚拟磁盘的意思。

这里一路下一步下去,LUN就会创建好,而且SAN Manager会自动为你创建一个Target,并且把LUN和Target会绑定好关系。在iSCSI里,你就会看到已经创建并映射好关系的Target。这里的Target是你客户端最终要连接的目标。

然后你需要将NAS服务器的3260端口通过路由器映射出去,如果进行端口映射我这里就不说了。如果不会的请自行baidu。
至此,NAS端的设置就完成了。
Windows端的设置
windows是原生支持iSCSI协议的。无需第三方软件既可以完成配置。这里我以windows 10的设置来举例。
首先win+R打开运行,输入services.msc

然后在打开的服务窗口里找到Microsoft iSCSI Initiator Service,启动它

随后在控制面板中找到管理工具,打开它

在管理工具里找到iSCSI发起程序,双击打开

在弹出的窗口中选择发现tab页,点击发现门户

在弹出的窗口中,输入你家路由的公网IP地址(不知道怎么申请公网的,可以看开头的另一篇文章介绍)和端口,端口我这里映射的是33260。

如果检测通过的话,回到目标tab页,你就会看到已发现的target目标,点击连接就可以了。

设置完这些后,你会发现,你的磁盘并没有多一块出来啊。别急,磁盘还需要做最后一步初始化动作。右击我的电脑,点管理,打开磁盘管理器。你会发现有一块磁盘还未被分配(这里我是拿一块分配了5G空间的演示)

选择GPT分区表方式进行确定,然后进行格式化。这里磁盘格式要注意下,如果你是想在多台windows电脑进行挂载就选NTFS,如果你是想在macOS和windows之间进行共同挂载就选FAT32。
格式化完毕之后,我们可以看到。这块磁盘已经完全像是在本地一样了。

这时,我们打开我的电脑,会发现多了一块磁盘,而且从表面上来看,你完全看不出这是块iSCSI挂载的硬盘。你甚至于可以把软件和游戏装到这里面!

macOS端的设置-Initiator X
Mac下的iSCSI协议苹果一直以来没有集成,所以这里需要用到第三方的软件来进行挂载。
macOS下的挂载iSCSI的软件不多。而且大多数需要收费。研究了下,macOS下有2个选择,daemon tools和Initiator X。
Initiator X在不付费的情况下只能挂载一个target。(关于获取Initiator X软件的方法看文末)。
装好软件,点左上角的Discovery,填入你的公网地址和端口

然后系统就会加载这个ip端口下的target

双击连接后,桌面就会多出一个这么图标

接下来把这个拖进你的finder收藏列表就可以了

然后,让我们看下这个盘的容量

是不是,多出了一个T的容量了,而且从感觉上也接近原生磁盘。是不是很哇塞。
macOS端的设置-Deamon Tools
另一款软件是Deamon Tools,我自己就用这款软件来进行挂载iSCSI磁盘。它是一款收费软件
为什么我不用免费的?主要是我有多台电脑,也有好几个磁盘要挂载,用免费的满足不了我,而且另一个原因Deamon Tools确实是一款老牌的虚拟磁盘映射工具,出于对这款软件的信任,我买了它的序列号,一次购买,永久使用。而且也不贵。
收费标准如下,这里我只买了2台机器的,终生授权费用也不贵,也只有78人民币。而且支持微信和支付宝支付,对国人也比较友好。

安装好之后,界面长这样,我们只需要它的远程设备功能就可以了,右键添加,和之前差不多的方式,输入公网ip和端口,然后回到主界面就可以自动发现target,双击进行连接就可以了。

之后的操作就和之前一样了,在桌面上就会多出一个磁盘,把这个拖到收藏列表里就可以了。
因为我mac电脑基本不怎么关机,直接打开Deamon Tools会帮我们自动连接。这样方便很多。
传输速率如何
传输速率分2个方面,写入和读取。
因为iSCSI挂载的盘从本质上来说还是网络盘,所以写入和读取还是取决于网络的传输速率。但是这里写入和读取取决的点不一样。
写入,取决于你当前网络的上行速度和家里网络的下行速度,取最小值。比如我公司的上行速度是50Mbps,而我家里网络的下行速度是300Mbps,那么我写入的速度就是50Mbps,换算成实际速度,约等于6MB每秒。
读取,取决于你当前网络的下行速度和家里网络的上行速度,取最小值,比如我公司的下行速度是500Mbps,而我家里网络的上行速度是30Mbps,那么我读取的速度就是30Mbps,换算成实际速度,约等于4MB每秒。
一般来说,企业的上行速度会比家里的上行速度来的快,所以如果你是在公司用。写入速度一般都是大于读取速度的。
有的小伙伴可能会觉得,这种6M写入,4M读取的速度实在是慢的可以。其实你只要不传输电影,一般的资料文件是绰绰有余了。而且就算是电影,你也不需要进行下载到本地看,直接打开观看即可,会以流的方式进行读取。
实测下来,4M的读取速率,看2K视频都可以不卡顿了。4K视频对传输速率要求比较高,4K还是会出现卡顿。
需要注意的事项
iSCSI这种挂载方式相当于从你的NAS划分了一块虚拟的空间。
这块虚拟的空间如同你本地的磁盘一样,需要格式化,甚至于可以进行分区。但是你放在这块磁盘空间的文件在你的NAS上却不会被读出来。
会有小伙伴问,那这样的意义是什么呢。我NAS上读不出来有什么用。
其实如果你有多台电脑,就会直呼这是个神器了。因为文件存在NAS里,其实也并不需要NAS系统来进行使用。使用方肯定是你的电脑。你A电脑存进去,B电脑就能像在本地一样的使用。难道不香么。等于从使用层面来说,让你不会觉得NAS这个东西的存在。而文件却实实在在的保存在NAS里,你NAS也不需要读出文件来使用。
后记
这篇文章介绍了我玩NAS的一些分享,后续这个主题如果有人感兴趣,还会继续下去。为此我建了一个NAS交流群,感兴趣的小伙伴请在我公众号里回复"NAS",就可以加入群聊。关于此篇文章提到的软件,我都会在群里进行打包分享。
我的公众号新开辟了4个专栏,分别是开源推荐,技术干货,技术男的世界观以及技术改变生活。我是一个喜欢折腾的技术男,我日常分享除了写专业知识外,还会分享我对于这个世界的看法以及数码方面的应用介绍,我希望通过技术能改变和提高我们的生活效率。如果你对于我的内容感兴趣,希望你能点赞,分享,最重要的是关注我。

我的笔记本电脑瞬间扩大一个T的容量!的更多相关文章
- 用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(上)-快速上手Docker
如果想在一台电脑上搭建一个多节点的Hadoop集群,传统的方式是使用多个虚拟机.但这种方式占用的资源比较多,一台笔记本能同时运行的虚拟机的数量是很有限的.这个时候我们可以使用Docker.Docker ...
- 利用jquery+iframe做一个ajax上传效果
以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...
- 推荐一个js脚本的字体拟合模型
推荐一个js脚本的字体拟合模型 http://r3mi.github.io/poly2tri.js/ 推荐一个js脚本的字体拟合模型 http://r3mi.github.io/poly2tri. ...
- 关于容器、虚拟机以及 Docker 的一个入门教程
Yves yao · 2017-09-05翻译 · 1315阅读 原文链接 huangxiaolu审校 源地址:http://zcfy.cc/article/a-beginner-friendly ...
- 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装
在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...
- 日常学习随笔-自定义了一个MyArrayListDefin集合(数组扩容+迭代器+JDK1.8新方法+详细说明)
一.自定义了一个ArrayList的模拟集合(源码+详细说明) 前段时间分析了下ArrayList集合的源码,总觉得如果不自己定义一个的话,好像缺了点什么,所以有了如下的代码. 代码可以说是逐行注释了 ...
- C语言判断一个32位的数据,有多少位是1,然后用串口发送出来
今天遇到了一个问题,遇到一个32位的数据,写一个子函数来判断它的多少位是1.我的思路一开始是把这个数据变成一个32位容量的数组然后每个位去比较是不是1,如果是1,就用另一个变量加1.最后返回这个变量. ...
- 如何制作一个可以用Bochs调试的最新内核系统盘
参考:http://blog.chinaunix.net/uid-26207112-id-3332621.html 1. 正确地创建一个包含启动分区的磁盘映像 1.1 创建磁盘映像文件 首先需要对磁盘 ...
- 手写一个简单的HashMap
HashMap简介 HashMap是Java中一中非常常用的数据结构,也基本是面试中的"必考题".它实现了基于"K-V"形式的键值对的高效存取.JDK1.7之前 ...
随机推荐
- TP5.0版本mysql查询语句 闭包
Db::name('tiwen') ->where('user_id', $user_id) ->where(function ($query) { $query->where(fu ...
- Docker DevOps实战:GitLab+Jenkins(2)- CI/CD相关配置
Jenkins关联GitLab Gitlab仓库配置Webhooks 上传项目到GitLab,Jenkins构建
- composer install 出现 RuntimeException Failed to execute
报错:composer.json 的 require添加新包 需要删除composer.lock和vender 从新composer install [RuntimeException] Faile ...
- 『GoLang』协程与通道
作为一门 21 世纪的语言,Go 原生支持应用之间的通信(网络,客户端和服务端,分布式计算)和程序的并发.程序可以在不同的处理器和计算机上同时执行不同的代码段.Go 语言为构建并发程序的基本代码块是 ...
- nginx 配置文件(支持thnkphp3.2~5)
server { listen 8080 ; server_name localhost; set $root /var/www/myweb; #listen 443 ssl; #ssl_certif ...
- 【译】.NET Core 3.0 发布小尺寸 self-contained 单体可执行程序
.NET Core 提供的发布应用程序选项 self-contained 是共享应用程序的好方法,因为应用程序的发布目录包含所有组件.运行时和框架.您只需要告诉使用者应用程序的入口 exe 文件,就可 ...
- 深入浅出WPF-05.控件与布局
控件与布局 突出特点:1.专门的UI设计语言XAML,无需像MFC那样使用编程语言设计UI.2.前几代在UI和数据交互方面是由消息Message到控件事件,始终是把UI控件放在主导位置而把数据放在了次 ...
- 启用 Spring-Cloud-OpenFeign 配置可刷新,项目无法启动,我 TM 人傻了(上)
本篇文章涉及底层设计以及原理,以及问题定位,比较深入,篇幅较长,所以拆分成上下两篇: 上:问题简单描述以及 Spring Cloud RefreshScope 的原理 下:当前 spring-clou ...
- mysql从零开始之MySQL UPDATE 更新
MySQL UPDATE 更新 如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQ ...
- 解决VSCODE"因为在此系统上禁止运行脚本"报错
在VSCODE中使用yarn,结果报错: 找了下原因,是因为PowerShell执行策略的问题. 解决方法: 以管理员身份运行vscode; 执行:get-ExecutionPolicy,显示R ...