提示:本篇有文艺、八卦、伦理等内容,请慎重观看,最后有剧情神转折。
在前三期,我们借鉴社会生产力与生产关系的发展历史,小结了一下存储技术的发展:
内置磁盘存储(原始社会)-> DAS存储(奴隶制社会)-> SAN存储(封建社会)-> NAS存储(资本主义社会)-> 基于以太网 IP的分布式存储 (社会主义社会)-> NVMe固态 SPDK (共产主义社会)
附上前三期链接:
云存储硬核技术内幕——(1) 马克思主义存储社会发展极简史 (上)
云存储硬核技术内幕——(2) 马克思主义存储社会发展极简史 (中)
云存储硬核技术内幕——(3) 马克思主义存储社会发展极简史 (下)
方老师有个迷妹叫子虚,喜欢研究云计算技术,创作歌曲和去旅行。
子虚同学在行遍万里路,读过万卷书之后,创作了一首歌,叫《记忆的行囊》:
……
我把记忆装进我的行囊
走过大理的洱海旁
走过拉萨的八角街
走过成都的宽窄巷
……
子虚回到办公室,边唱这首歌边想虚拟化平台的设计。
我们在《朝夕相伴触手可及的虚拟》中提到,以VMWare Workstation为例,虚拟机的磁盘要么直通到本地硬盘或一个文件夹,要么是一个VMDK文件。
当虚拟机需要在另一台宿主机上启动的时候,VMDK并不能瞬间移动到另一台虚拟机上(想一想,为什么),因此,使用VMDK作为磁盘的虚拟机,是不能热迁移的。
那么,有没有办法让每个虚拟机的持久化存储卷跟着虚拟机飘移,让虚拟机记忆的行囊跟随虚拟机走遍天涯海角呢?
子虚问方老师:“记忆,真的能装进行囊吗?”
方老师没有说话,给了子虚一个空空的盒子,问子虚:“这是什么?”
子虚问:“这是盲盒吗?”
方老师说:“这是记忆。”
子虚问:“记忆呢?”
方老师笑了,指了指天。
子虚仰望天空,看见了一团团的白云。她顿悟了。
原来,想让云上的虚拟机带着持久化记忆自由迁移,需要把持久化存储盘放到共享的云资源池中,再把云资源池上的LUN挂载到虚拟机上,当VM发生迁移的时候,在新的宿主机上仍然可以挂载LUN。
由于云计算技术演进到社会主义时代的水平扩容需求,FC SAN Switch显然无法满足数百台宿主机节点的要求——光纤导向器没那么多物理端口,集中式FC SAN存储也没有那么高性能。因此,能考虑的方案首选是ip san,也就是iSCSI。
iSCSI的实现,是将SCSI命令字封装在TCP/IP中传输到对端,存储控制器进行SCSI命令字解析,并将其落盘,如下图:
由于常见的分布式存储需要采用三副本保证可靠性,SAN控制器会将IO发送到三个磁盘。
那么,虚拟化场景下的访问路径是怎样的呢?
在虚拟机上运行的Linux中,当应用访问外部iSCSI卷时,VFS会调用socket API,将SCSI命令字封装在iSCSI协议中,通过虚拟机的vNIC(弹性网卡)发送到宿主机上的虚拟交换机(vSwitch),然后在宿主机上的物理网卡发送到网络。
SAN存储控制器接收到iSCSI数据包后,将命令字拆离,转换为磁盘操作并执行之。
iSCSI使用TCP/IP 以太网承载,几乎可以无限扩展,在宿主机1000台以上的场景几乎成为了必选。
然而,使用iSCSI有两个弊端:
1、VM上的开销很大。由于VM上每个IO都需要走一遍TCP/IP协议栈,其开销是可想而知的。
2、宿主机上的开销也很大。由于VM上每个IO都需要从vNIC到宿主机的vSwitch,会吃掉大量的宿主机CPU资源。
因此,子虚同学需要为海量的虚拟机,设计访问云存储的新的方式,去绕过vSwitch。
欲知子虚同学如何破局,请看下回分解……
神转折:
你们上当了,子虚是子虚乌有的意思,这首歌是方老师自己瞎编的,网上能找着算我输。