Category: Digital Industry and Frontier Technologies

  • UE学习笔记1-安装及基本使用

    UE是虚拟现实相关技术的很有影响力的引擎,这里将边学习边做一下记录备忘,以备后续查阅复习。 1、UE的下载安装,下载链接请参考引文1,下载安装文件后,执行epic games launcher启动程序,注册一个账号后就可以进入启动epic games的程序进入主窗口界面了。登录后,移动至“虚幻引擎”选项卡,并点击“安装”按钮,下载最新版本。下面将介绍一下UE使用的基础内容,主要是窗口中的一些重要的子窗口元素介绍。 2、关卡编辑器界面:首先新建一个项目,选择第三人称模板(Third Person Template),项目设置选择蓝图,质量预设选择最大,以及填写项目名称后会进入关卡编辑器界面。 3、放置actor面板:在下图的红色区域点击弹出drop list对话框并选择“放置Actor面板”菜单项,会在程序窗口的左边弹出放置Actor面板,然后在弹出的面板中选择形状,拖入一个“立方体”放入视口中,并通过配置来设置立方体的大小。如下图所示。 4、内容浏览器子窗口面板:用来管理各类资源,如果在创建项目时勾选了初学者内容包,那么在内容浏览器中可以看到“StarterContent”在我们的项目文件中被创建。如下图所示。 5、大纲子窗口面板:放入到视口中的元素,都会一一列到大纲中,如下图中的右边所示。 6、细节子窗口面板:当选中任一物体后,其相关细节设置就会展示在细节面板中。我们可以在细节面板中对选中的物体设置坐标、材质、碰撞等属性。 上述对UE的各个关键子窗口做了介绍,下面以具体的一个简单的设计实操示例来进行性说明。 在内容浏览器子窗口面板的的“Content”(“内容”)目录下,右击鼠标,在弹出的对话框中选择“创建文件夹”,将创建的文件夹命名为“Level”,双击“Level”,然后在内容浏览器空白处右键,选择“新建关卡”。并进行重命名为“Level_Demo”,双击“Level_Demo” ,此时在视口中一片漆黑,什么都看不到。我们需要在关卡内放入Actor来构建世界,我们可以在菜单栏 – 窗口中找到环境光照混合器,点击里面的5个按钮,可以将其快速添加到场景中。 References

  • 量子计算简要介绍

    量子计算是当前前言的科技创新研发领域,相关的计算概念和理论和传统的计算机差异较大,理解起来也挺有难度。今天有机会了解了一下量子计算的最基础的基础部分,加以记录,后面有机会学习更深入的部分的时候也可以回过头来看一些基础的内容,也是作为知识储备能更快的学习后面的内容。技术发展日新月异,终身学习既是时代的需求,也是自我不断成长和进步的要求。 一、布洛赫球 (Bloch sphere)。和经典计算机的比特位不同,量子计算机的信息表示方式为量子位(quantum bit,qubit),其是0和1的叠加态(具体的表示方式可以参考引文),用公式来理解为其是0和1两个状态的线性组合,需要注意的是,这里的线性因子是复数(两个复数因子有归一化约束,即其模的平方和为1)。 经过欧拉方程和global phase等公式和概念的引入和推导,最后得出如下的公式 用布洛赫球 (Bloch sphere)表示为如下的示意结果。 二、单量子比特上的量子操作,量子操作 (Quantum operations)将量子系统的状态转换成一个新的状态,我们通常也称它们为量子门 (Qubit gates),可以用泡利矩阵的形式来表达,双量子态和多量子态的内容后面有机会再详细介绍,具体也可以参考引文1中的相关内容。上面的两点内容只从数学上进行了阐述,其实际的计算和量子力学等关键的物理背景知识是息息相关的,这方面希望后续有机会要多多了解一下。量子比特的叠加态(Superposition State)是量子计算中一个重要的概念,它允许量子比特同时处于多个状态的线性组合。这使得量子计算在某些情况下能够处理并行计算,与经典计算有着显著的区别。(和传统计算机基于经典比特和晶体管数字逻辑电路属于不同的计算范式) 三、量子计算机的物理实现也有多种,有基于超导量子的实现,也有基于光电子的量子计算机的实现,具体实现方式根据技术差异可能比较大。 四、量子算法有对应的软件模拟,如Qiskit是基于python的面向量子计算的开源软件开发框架,由IBM量子计算团队开发和维护,可以构建、 模拟、执行量子电路。 五、量子力学和信息科技的融合发展出现了量子计算,量子通信和量子精密测量等先进技术,也是当前发展的前沿技术,后面由机会也可以多了解一下。 今天是交通大学128周年校庆,我和交大有挺深的渊源,在这里祝贺交大128岁生日快乐,祝愿交大在未来的科教兴国的征程上硕果累累,创造更大的辉煌! References

  • 深度学习框架中自动微分的实现

    自动微分的实现为深度学习的框架的梯度回传的计算提供了很大的便捷,我们只需定义好算子(operator),搭建好整个深度神经网络的网络结构后,就可以通过拓扑序构建好(具体拓扑排序方法可以参考引文中的深度优先搜索方法DFS)计算图,然后就可以根据偏微分的链式法则,就可以依次反向计算节点的数值结果,参数梯度等数值了。 在不同的深度学习的框架中,神经网络反向传播的算法实现会存在着一些差异,以早期的比较有影响力的caffe举例说明,caffe的实现中没有算子,而是blob(tensor)和layer,Net三种粒度的结构,各种不同的计算方法的layer(类似于各种不同的operator,如加减乘除)中计算前向和反向的结果,layer的输入为bottom blob,输出为top blob(也有可能存在着inplace的操作)其计算流图的关系是通过Net类中的相关函数进行静态计算的(Init函数)。 深度学习框架经过技术的发展,早期的caffe已经淡出了研发者的视线,不过在当时(还没有出现tensorflow,caffe2,以及pytorch)是相当有影响力的,其中的设计思想也是比较优秀的,有兴趣的读者可以阅读某些layer的forward,backward函数(基于cpu和gpu(cublas库)的矩阵计算)的实现都可以具体阅读源码加以具体深入的理解。不过由于其python的接口支持不是特别丰富,一些特殊的层的自定义实现和框架的重编译门槛比较高,相比pytorch要繁琐很多。 现在基于pytorch的深度学习框架由于其简洁易用而广受欢迎,其网络的定义也更加自由灵活(代码定义网络结构也很方便),基于pytorch的深度学习应用框架也有很多,纷繁多样,比如openmmlab等等。 Reference

  • 交互式VR在视觉增强方面可能的应用

    人类个人的感知,认知和创造性都是有限制的,这里仅从视觉感知增强的方面来说一说元宇宙相关技术的作用。所描述的场景和应用只是一些可能的案例,实际上会有更多丰富的场景,但也有待去更好的在技术产品上落地实现,在实际中得以很好的应用。 人类在感知上存在着较大局限,比如仅从视觉上来讲,人的眼睛只能感受波长较窄的一段可见光,看不清微观世界运行的细节,也看不清大的宏观宇宙的全貌,人的视角也很有限制,不能同时看到360度周视全貌,以及遮挡视线部分的内容。感知是认知的基础,人类首先能够看得见听得着,才能不断积累对世界的认识并代代相传,智慧才能不断升级。 人类感知能力的局限可以由现在科技的发展进行拓展和增强,人们越来越会制造高级的工具来延申我们的视觉感知,听觉感知以及行动力等等。就拿VR来说,可以应用的场景很多,特别在小的微观细节和大的宏观全貌的交互式可视化上将能够大有所为。这里就简要的来说一说。 比如生物化学这些领域,一些分子结构的交互动态可视化,DNA双螺旋到底长成什么样子,一些生物医药,特别对于生物学和医学的同学,如果能够通过VR技术来可视化很多生物微观的细节结构和动态行为,那这里的学习和理解将更加的直观和深刻。 再比如大的宏观结构,数字孪生地球,太阳系和银河系等等,都是非常有教育价值的场景,通过数字地球,未来我们甚至可以随时云上游览地球的任何一个地方,我们可以通过缩放来了解地月的运行方式,太阳系的行星和卫星,以及可能的太阳系带着自己的行星卫星和星云在银河系中飞奔的场景。 还有很多的场景可以用到,如展示栩栩如生的已经灭绝的古生物,中小学语文课历史课等内容都可以制作设计精良的交互可视化内容。以后VR,AR和AI相结合的元宇宙产品,有更多的内容期待着大家发挥神奇的想象力,期待后面这些方面也能有所实践。

  • 虚实结合的生活工作空间设想

    随着元宇宙、人工智能和5G,6G区块链等技术的进步和融合,未来我们的生活工作方式将会有较大的变化,新的数字化时代科技发展日新月异,超乎我们的想象,这里就先天马行空的来说一说未来可能的情况和场景。 以IT公司为例,未来程序员编程实现工作将更多的由程序员的数字代理来完成,现实生活中的程序员可以负责来review和优化代码,以及程序的集成等工作。 家庭生活空间也类似,这里每个人可以由实体成员,实体机器人代理和虚拟代理三个角色构成,实体机器人负责在家庭物理空间完成一定的任务,如家务购物等,虚拟代理可以参加虚实融合的教学家长会,完成一些实体成员日程生活的记录如记账网购等活动。甚至我们日常活动中产生的想法和行动都可以数字化到元宇宙空间中,虚拟代理和实体在认知状态和行为上实现同步。某种意义上这样的数字虚拟代理可以实现实体个人成长经历一定程度的永久化,后代们将会更加具体的看到前人的生活工作情况,是一个活生生的家庭族谱,可以设置时间分辨率去浏览回顾,个人或伴侣也可以在年迈的时候去回忆曾经的美好时光。 综合上面两个场景及可能的更多的常见来看,未来虚拟空间将展现越来越重要的作用,虚拟空间将拥有更强大的生产力,人们的日常工作将会越来越多的由我们在虚拟空间的代理来完成,每一个组织,包括最小单位的个人,到家庭,公司,政府单位等都可以在元宇宙空间中建立虚拟代理,这些代理还可以在元宇宙空间中互联,实现更大的社交元宇宙,就像我们的物理世界中组织模式一样。也有说元宇宙就是下一代互联网,不过其组成元素将大大扩展很多,将是一个和现实世界平行发展但也有耦合和交互的虚拟世界,理想状态甚至是和物理世界同步运行着的一个镜像世界,或者加入非物理世界的人为构造和想象的部分,以及可能的多个不同特色和任务的虚拟世界,相互耦合着相互影响着推动整体世界向前运行。

  • 具身智能(Embodied AI)开源数据集Open X-Embodiment简介

    为了训练一个通用的机器人策略,Google推出了Open X-Embodiment数据集,通过在全球机器人实验室收集机械臂操作的数据集,历时大半年,一共得到了大大小小60多个来自21个组织结构34个机器人研究实验室的数据集,包含在22个机器人上采集的能够完成527种不同技能(skills)的16万个任务(160266 tasks)的上百万条数据。60个已有数据集中涉及到的机器人有单臂、双臂和四足,Franka占多数。下图为数据集的来源组织单位,可以看出诸多著名高校和研究结构都有参与其中。 可以看到除了这前面的一些动作有一定数量之外,其他的几百个动作的数量都非常少,技能数据呈现长尾分布(如下图中d所示)。 机器人大模型有两个典型代表,RT-1是高效的为机器人控制(robotic control)设计的基于transformer架构的模型,RT-2是一个大的视觉语言模型联合微调训练( co-fine-tuned)以输出机器人动作(以自然语言的表现形式,natural language tokens)。RT为Robotics Transformer的简称。RT1使用130k条机器人遥操作数据训练,展示出了其处理多种任务的能力和很强的泛化能力。但其通用性仍受限于数据集的大小。RT-1 的输入由图片序列、自然语言指令构成,输出由机械臂运动的目标位姿( Toll , pitch gaw , gripper stαtus)、基座的运动 、模式转换指令构成( The robot action is a 7-dimensional vector consisting of x, y, z, roll, pitch, yaw, and gripper opening or the rates of these quantities.)。RT-2抛弃了RT-1的设计,采用了利用网络上海量图文数据预训练出的图文模型,这些模型的规模可以最大达到55B的参数量,远远超过RT-1的35M的规模。这些图文模型被训练来回答关于图片的问题,原本的输出是文字,RT-2创造性的将机器人动作重新编码,使得编码为“文字”的机器人动作作为图文模型的输出。RT-X把提高扩展的目标放在了指令中的“动作”。 基于RT-1模型用该混合的机器人数据训练的结果模型为RT-1-X,基于RT-2模型用该混合的机器人数据训练的结果模型为RT-2-X,RT-1-X和RT-2-X比RT-1和RT-2模型性能优越了很多。得到的RT-1-X和RT-2-X模型表现出了很强的泛化能力和涌现能力(跨机器人实体学习的能力)。是以后更加通用智能的机器人的技术实现的曙光。 Open X-Embodiment数据集采用RLDS格式进行描述,RLDS为Reinforcement Learning Datasets的缩写,是一个用来存储,检索和操作序列的决策制订和执行的剧集数据(episodic data in the context of Sequential Decision Making),剧集一般记录一个完整的任务轨迹过程,比如一盘棋的下棋的步骤序列,在这里为机器人的一个任务的数据序列。如下图所示为一个episode数据的图像序列。如需了解数据集的更多的细节,可以参考引文中github里相关的代码链接。 行业内开源的好的数据集对于推动整个方向的发展起到了非常重要的作用,之前也有介绍过数据要素方面的博客短文(参考引文链接),具身机器人在将来将可以实现更多的任务,也可以在更多的应用场景中得到应用,数据集也可能会进一步扩充和丰富,以后如家务机器人,教育机器人等等也许会在不久后能够在实际生活中得到较好的应用。期待越来越多的算法和应用创新来丰富数字化场景的应用和数字化产业的发展,为社会经济提供新的增长动力,为人们的生活带来更多的便利和福祉。…

  • 云计算相关技术简介(五)-Neutron组件相关技术概念简介

    Neutron组件模块是openstack项目中负责提供网络服务的组件,它基于软件定义网络的思想,实现了网络虚拟化下的资源管理。本篇文章将简要介绍neturon网络组件的相关的技术的简要介绍,具体的相关技术的详细介绍后面会在实践环节安排专门的篇幅进行阐述。 一般的,OpenStack中网络实现包括vlan、gre、vxlan等模式,在OpenStack中,所有网络有关的逻辑管理均在Network节点中实现,例如DNS、DHCP以及路由等。Compute节点上只需要对所部署的虚拟机提供基本的网络功能支持,包括隔离不同租户的虚拟机和进行一些基本的安全策略管理(即security group)。安全组的对象是虚拟网卡,由L2 Agent来实现,比如neutron_openvswitch_agent 和 neutron_linuxbridge_agent,会在计算节点上通过配置 iptables 规则来限制虚拟网卡的进出访问。计算节点上运行着虚拟机。如果不启用 DVR 特性,则所有的网络相关的服务,都在网络节点上进行。即计算节点上的网络只需要实现二层转发即可。 GRE:General Routing Encapsulation,一种通过封装来实现隧道的方式。在openstack中一般是基于L3的GRE,即original pkt/GRE/IP/Ethernet(从左到右layer依次降低)。隧道协议将这些其他协议的数据包重新封装在新的包头中发送。被封装的数据包在隧道的两个端点之间通过网络进行路由,被封装数据包在网络上传递时所经历的逻辑路径称为隧道。简单来说,隧道技术是一类网络协议,是将一个数据包封装在另一个数据包中进行传输的技术;使用隧道的原因是在不兼容的网络上传输数据,或在不安全网络上提供一个安全路径。通过网络隧道技术,可以使隧道两端的网络组成一个更大的内部网络。 DVR(Distributed Virtual Router,DVR),按照 Neutron 原先的设计,所有网络服务都在网络节点上进行,这意味着大量的流量和处理,给网络节点带来了很大的压力。这些处理的核心是路由器服务。任何需要跨子网的访问都需要路由器进行路由。为了降低网络节点的负载,同时提高可扩展性,OpenStack 自 Juno 版本开始正式引入了分布式路由DVR特性(用户可以选择使用与否),来让计算节点自己来处理原先的大量东西向流量和非 SNAT 南北流量(有 floating IP 的 vm 跟外面的通信)。这样网络节点只需要处理占到一部分的 SNAT (无 floating IP 的 vm 跟外面的通信)流量,大大降低了负载和整个系统对网络节点的依赖。很自然的,FWaaS 也可以跟着放到计算节点上。DHCP 服务、VPN 服务目前仍然需要集中在网络节点上进行。 VXLAN,VXLAN(Virtual Extensible LAN)是一种用于解决数据中心内部网络限制和提高网络的灵活性与可扩展性的网络虚拟化技术。它于2011年被提出,旨在扩展和改进传统的虚拟局域网(VLAN)功能。VXLAN技术通过封装原始以太网帧(包含MAC地址、VLAN标签等)到UDP报文中来工作。这种封装允许VXLAN跨越不同的网络段和IP子网(将原始以太网帧作为应用数据用UDP协议进行封装),从而实现网络虚拟化功能。具体的关于VXLAN的详细介绍请参考引文。 VXLAN现在是比较常用的SDN的虚拟网络的实现。这里将详细介绍一下相关的实现原理细节。上面就是VXLAN系统的网络结构图,对相关组成部分做一些介绍,如TAP设备:模拟一个二层的网络设备,可以接受和发送二层网包。VETH:虚拟ethernet接口(virtual eth),通常以pair的方式出现,一端发出的网包,会被另一端接收,可以形成两个网桥之间的通道。在上图中的qbr-xxx/qbr-yyy一般简称为qbr。qbr是Quantum Bridge的缩写,而OpenStack网络组件的前一个名称就是Quantum,qbr就是虚拟网桥,用来做安全组控制的。qvb:neutron veth, Linux Bridge-side。qvo:neutron veth, OVS-side。br-int是集成的网桥,实现将数据包转化为VLAN包作用;br-tun是将VLAN进一步封装成VXLAN隧道技术,而且上图左边部分的这些虚拟实现都是在计算节点内部实现的相关的网络虚拟化功能。其中下面以出报文和入报文的过程示例进行一个简要的说明。 其中上图中的计算节点和网络节点通过物理交换机相连,把vxlan的包封装成IP包进行传输。 出报文的转换过程 注:出br-tun时,VLAN变为VXLAN,并转为VNI=100。 入报文的转换过程 网络节点担负着进行网络服务的任务,包括DHCP、路由和高级网络服务等。一般包括三个网桥:br-tun、br-int…

  • 云计算相关技术简介(四)-docker和虚拟机

    上一篇文章中介绍过openstack中虚拟机镜像服务模块glance,就说到虚拟机镜像和docker镜像,当时没有具体展开,这篇文章将较为详细介绍虚拟机技术和docker容器相关技术之间的比较。不正确的地方欢迎批评指正。 首先虚拟机的概念是相对于物理机器而言的,虚拟机是依赖于物理计算机而设计实现的逻辑计算机,根据物理计算机的特性,有基于单机的虚拟机,如基于wmware虚拟机管理软件,在单台计算机上构建多个虚拟机器,从而可以方便模拟不同计算节点,如搭建大数据的模拟环境。也有基于多个甚至很多个物理机器之上构建的虚拟机管理系统,这类的虚拟机管理软件有openstack和VMware vSphere等,甚至一些大的公司会构建自己的虚拟机软件系统管理平台(可以参考引文中的介绍),一般这样基于分布式环境的虚拟机调度和管理系统成为云计算平台。 docker容器技术,容器是利用namespace将文件系统、进程、网络、设备等资源进行隔离,利用cgroup对权限、cpu资源进行限制,最终让容器之间互不影响,容器无法影响宿主机。docker容器之间属于进程之间隔离,而虚拟机之间属于系统之间的隔离。 虚拟机的镜像文件实实在在就是操作系统环境的persistent storage,docker镜像是一个“应用程序和它运行依赖环境”的封装。当镜像运行起来后即是docker容器。运行时的容器本质是操作系统下的一个进程,这些进程共享同一个宿主机OS的内核。与传统VM相比,docker是一种操作系统虚拟化技术,并不需要在镜像内安装GuestOS。docker在共享宿主机内核的基础上包装内核提供的一系列API,这些API中最重要的就是namespace和cgroup。通过namespace实现隔离,通过cgroup实现资源限制。一般管理docker镜像的服务称为docker hub,现有的也有多个开放的docker镜像源。 一般虚拟机是云计算系统中IAAS平台的关键技术,是建立在cpu硬件虚拟化和操作系统级的软件虚拟化(如KVM等)的基础之上的。而docker容器可以理解为在host操作系统之上运行的一个特殊的进程。而docker容器以及基于此之上的编排技术k8s等则是相关的PAAS平台的所依赖的技术,大数据平台如hadoop可以基于虚拟机之上直接部署,也可以基于容器环境部署。具体可以参考后两个引文链接。docker容器技术的出现,大大方便了开发部署的效率,开发环境和部署环境可以快速复制分发,不需要每个开发人员为了开发库和开发机器环境的兼容问题去浪费时间和精力,有种一劳永逸的感觉。关于docker容器相关的技术细节,如dockerfile的编写,一些CLI命令的使用如docker容器的启动等等,会在后续的相关课程中进行介绍。 References

  • 云计算专业企业实践(三)-openstack系统组件介绍

    这次的实践内容是通过网络会议进行的,昨天的实践今天补充记录一下,以备后续查阅。现在流媒体通信技术比较成熟,网络视频会议等工具使得很多物理上远距离的沟通变得方便很多,在云计算专业实践中,除了物理服务器的布置,网络拓扑结构的组织和安排以及布线等需要在现场进行实践锻炼外,其他如技能知识点的学习,相关软件系统的安装部署和维护都可以远程进行,工作不再太多的受物理距离的限制,可以节省出出行的时间来,有利于一天的生活工作安排。 言归正传,openstack是一个虚拟机平台系统,是IAAS系统中处于服务器硬件节点集合和原生操作系统之上运行的一个分布式系统,其功能用简介的一句话概括可以理解为虚机调度分配和管理系统。其中openstack系统上层实现主要是python语言,底层的开发有基于更高性能的c++语言。下面首先介绍一下openstack的几大模块。后续根据进一步的熟悉和理解再去补充或新增专门描述细节的文章,不正确的地方欢迎批评指正。 1、horizon-dashboard模块,GUI模块,理解为管理员和openstack系统进行交互的用户界面,是管理整个运行在底层(水平线下)openstack系统的维护通道,通过界面可以了解系统的运行状态等信息; 2、nova-compute模块,计算模块,也是openstack最核心和主要的模块,提供了nova-api,会涉及调用其他的模块如虚拟机镜像服务模块,存储模块,网络模块,用户认证模块等,是虚拟机调度、分配和运行管理的核心组件,也用到了cpu硬件虚拟化和linux内核中hypervisor虚拟化组件的功能,实际云计算平台运维的工作中有50%以上的问题会集中在此模块; 3、cinder-volume模块,存储模块,支持swift(openstack自带存储模块)和ceph分布式存储模块。提供cinder-api供horizon-dashboard层调用; 4、neturon-network模块,提供vpc(virtual private cloud)功能,可以通过逻辑封装实现虚拟网络的功能,vpc可以实现虚拟交换机,vxlan也是虚拟实现的局域网,可以方便不同租户和项目之间的隔离;网络模块也是很重要的模块,这部分逻辑虚拟实现的功能比较多,相关技术和概念相对也较复杂,后续会有机会再专门去记录和介绍; 5、glance-image service模块,是虚拟机镜像模块,负责存储和管理虚机镜像,通过管理多种虚机镜像,支持用户选择合适的镜像进行服务部署;在这里镜像是虚机操作系统镜像,如ubuntu系统还是windows系统的镜像文件,而容器镜像是docker服务中的运行在docker虚拟化技术上的系统环境镜像,是容器启动的系统文件。是不同的镜像概念; 6、keystore-identity service模块,为用户认证模块,提供了用户的信息,如用户设置的安全组策略,用户的身份信息等,主要用作权限认证,在其他模块中可能会调用该模块去验证权限等操作。 以上为openstack的主要的模块组件,实际的云计算环境部署的时候,一般的部署的步骤是:1、搭建云计算的物理服务器和硬件网络拓扑,如机架式服务器,三层交换机和网络布线等硬件物理结构的设计和实施;2、原生操作系统的安装,以及相关的环境设置,如hostname,ssh免密登录等;3、openstack云平台环境的安装,有基于kolla方式的较为便捷的部署方式,通过openstack kolla ansible(编排工具,偏向于支持运维服务)进行较为方便的安装部署,其中有几个种地按的配置文件需要了解,如globals.yaml,multinode.yaml等配置文件,需要对里边的配置项有比较深入的理解。 Reference

  • 云计算专业企业实践(二)-ceph存储

    今天参加云计算第二次企业实践,阳光明媚,春天来了。午餐后和一起过来的老同事在附近的公园散了会步,感受到了久违的温暖阳光,公园的树木一动不动,水平如镜,温暖而安静。 今天学习的技术主要是ceph存储,ceph存储是云计算中比较流行的存储技术,实现了分布式的大容量高可靠性和伸缩性存储功能。可以支持上千个存储节点,容量达到TB到PB级别。下面简要说说ceph的技术概要,欢迎补充和批评指正。 ceph的技术架构大体是这样的:(1)、底层是RADOS分布式存储系统,RADOS即为Reliable Autonomic Distributed Object Store,也就是可信赖的自动分布式对象存储,RADOS中的pool,PG(placement group)和OSD(object storage device)以及hash,crush等算法实现了具有数据冗余副本的分布式存储系统,如果有数据盘损坏,该系统设计的crush算法能够比较方便实现自愈。(2)librados库,支持访问底层的rados对象库,支持多种高级语言,是中间层的一个开发库,向上层提供服务。(3)最上层的开发库有radosgw,类比于公有云里边的对象存储,块存储rbd(虚拟机中申请的磁盘)和cephfs(类比于共享文件)等机制。 上层应用接口:Ceph上层应用接口包括对象存储RADOSGW、块存储RBD和文件系统存储CephFS。RADOSGW提供与Amazon S3和Swift兼容的RESTful API网关,供相应的对象存储应用开发使用;RBD提供标准的块设备接口,常用于虚拟化场景下为虚拟机创建volume。 其中虽然对上层提供了不同的存储服务,如块存储,在申请虚机时可以作为虚拟机的块磁盘使用,还有rados gateway提供了类似于基于bucket和file的两层结构的对象存储,和cephfs文件存储系统(类似于nfs和windows共享文件),但是这些不同的存储方式的底层都是基于rados的高效分布式存储的,由于在ceph中一般都是采用object这个单位进行的分片存储,分布式存储的文件读写就可能采用并行的机制,实现高吞吐量的IO读写。 细节还有很多,如要理解crush算法,理解不同的管理工具和配置文件的使用等等,还有和openstack云计算平台的集成等等,具体到后面的实践环节再补充更新。 References