【注:答案为本人所写,仅供参考】
1.就本课程最后一个实验,回答下列问题:
(1)请描述该实验系统的功能和你所做的工作(8分);
(2)详细描述实验系统在云端的部署过程(6分);
(3)简述实验过程的难点/痛点和自己做实验的体会(6分)。
(1)在阿里云ECS服务器上安装FTP、MySQL服务、JDK、Nginx、tomcat,并编写JavaWeb应用,部署到阿里云服务器,实现学生信息的增删查改、管理员登录、输入格式控制、管理员账号密码重置、管理员退出等功能。
(2)①本地调试:用IDEA连接tomcat进行测试,使用Navicat对数据库做可视化操作——创建数据表、插入初始数据等等
②使用FTP将JavaWeb程序文件上传到服务器,使用Navicat备份本地数据表,并对远程数据库运行SQL文件,恢复数据库
③将Nginx与tomcat进行连接,将所有访问请求转发给tomcat进行处理
(3)①虽然ftp服务开放了主目录之外的目录的读写权限,但是因为Linux对目录权限设置非常严格,不同目录或文件权限很少相同,因此对主目录、经常访问的/home目录、/etc目录等使用了最简单的chmod 777来实现远程文件操作
②编写好后的程序经常遇到无论是本地调试还是部署到云端,都有打不开的现象(返回tomcat错误页),是WEB-INF文件夹下web.xml文件的问题
③Nginx与tomcat的结合是一个很大的痛点。如果不结合将只能使用8080端口访问服务器JSP应用,如果没有tomcat将无法运行JSP应用。为了实现将所有访问请求转发给tomcat进行处理,经CSDN、博客园等查询资料,对nginx.conf的操作各不相同,有的是新建一个conf文件然后与Nginx注册,但是我一直失败了,最后采取的操作是直接修改nginx文件,加入监听端口号、代理服务器地址(即服务器本机的8080端口号)
④界面设计——在这方面非常缺乏经验。将整个页面分为顶部消息栏、左侧菜单栏、和主要内容部分,分别由3个不同网页文件负责展示,这样做有利于模块化的编写与调试
⑤可以改进的地方——代码结构。涉及SQL操作的每一个JSP文件都单独使用jdbc与MySQL数据库连接一次,造成资源的浪费和性能的损失,此外如需修改数据库用户名密码则需要逐个修改。此外无论是SQL的账号密码还是管理员的账号密码都使用明文传输,有泄露的风险,值得改进
2.(1)简述Google GFS的技术架构?(10分)
(2)云计算中心自动化管理分几个阶段?说明每个阶段的任务。(10分)
(1)Google GFS将整个系统节点分为三类角色——Client(客户端,多个)、Master(主服务器,一个)、Chunk Server(数据块服务器,多个),元数据集中管理, 数据无缓存机制。Client是GFS提供给应用程序的访问接口,以库文件的形式提供;Master是GFS的管理节点,负责整个文件系统的管理;Chunk Server负责具体的存储工作。
GFS存储的文件都被分割成固定大小的Chunk。 Chunk服务器把Chunk以linux文件的形式保存在本地硬盘上,并且根据指定的Chunk标识和字节范围来读写块数据。为了保证可靠性,Chunk在不同的机器中复制多份,缺省情况下,使用3个存储复制节点,不过用户可以为不同的文件命名空间设定不同的复制级别。
Master维护了系统的元数据,管理系统范围内的活动,比如, Chunk租用管理无用Chunk的回收、以及Chunk在Chunk服务器之间的迁移。 Master节点使用心跳信息周期地和每个Chunk服务器通讯,发送指令到各个Chunk服务器并接收Chunk服务器的状态信息。Client实现了GFS文件系统的API接口函数以及应用程序的访问接口。应用程序从Master获取元数据,根据元数据提供的信息与Chunk服务器直接进行交互。
Client和Master之间的交互只有控制流(指令信息),没有数据流,因此降低了Master的负载 (因为控制流只需传送指令和状态,数据量小)。Client与Chunk 之间直接传输数据流,同时由于文件被分成多个chunk进行分布式存储,因此Client可以同时并行访问多个Chunk,从而让系统的I/O并行度提高。
GFS中的客户端不缓存文件数据,只缓存Master中获取的元数据。Chunk服务器也不需要缓存数据,Chunk以本地文件的方式保存, Linux操作系统的文件系统缓存会把经常访问的数据缓存在内存中
(2)第一阶段:IT服务操作。这一阶段主要是监控和管理IT基础设施的广义集合,如网络、服务器、应用和相关的存储设备。
第二阶段:IT服务管理。这一阶段会制定一系列的设施间的交互和协作处理,确保IT服务符合标准规范。
第三阶段:数据中心自动化。这一阶段的时间和精力主要是维护IT环境,定制、检查和执行服务层协议。为了保证IT的高效、节约成本,将使用必要的工具进行自动化处理,真正实现工作或过程的自动化。
3.(1)简述大数据的特点以及大数据和云计算的关系;(6分)
(2)云计算可以分成哪几个类型?并对每个类型举例说明;(6分)
(3)说明云计算与并行计算/分布式计算/集群计算的异同。(8分)
(1)①价值密度低(Value)——在成本可接受的条件下,通过快速采集、发现和分析,从大量、多种类别的数据中提取价值的体系架构。
②快速(Velocity)——数据增长速度快,而且越新的数据价值越大,这就要求对数据的处理速度也要快,以便能够从数据中及时地提取知识,发现价值。
③复杂度(Complexity)——对数据的处理和分析的难度大
④数据量大(Volume)——存储的数据量巨大,PB级别是常态,因而对其分析的计算量也大。
⑤多样(Variety)——数据的来源及格式多样,数据格式除了传统的结构化数据外,还包括半结构化或非结构化数据,比如用户上传的音频和视频内容。而随着人类活动的进一步拓宽,数据的来源更加多样。
大数据与云计算是G=f(x)的函数关系
G——我们的目标
f——云计算
x——大数据
大数据是数据源经过云计算系统的处理得到一个结论,G=f(x),这是一个高度抽象的数学模型,f非常复杂,云计算就是大数据的计算,对于小数据,云计算就失去了意义。
(2)①将软件作为服务SaaS(Software as a Service)——SaaS服务提供商将应用软件统一部署在自己的服务器上,用户根据需求通过互联网向厂商订购应用软件服务,服务提供商根据客户所定软件的数量、时间的长短等因素收费,并且通过浏览器向客户提供软件的模式。如:Salesforce online CRM、简道云
②将平台作为服务PaaS(Platform as a Service)——这是一种分布式平台服务,厂商提供开发环境、服务器平台、硬件资源等服务给客户,用户在其平台基础上定制开发自己的应用程序并通过其服务器和互联网传递给其他客户。对资源的抽象层次更进一步,提供用户应用程序运行环境。如:Google App Engine、Microsoft Windows Azure
③将基础设施作为服务IaaS(Infrastructure as a Service)——IaaS即把厂商的由多台服务器组成的“云端”基础设施,作为计量服务提供给客户。它将内存、I/O设备、存储和计算能力整合成一个虚拟的资源池为整个业界提供所需要的存储资源和虚拟化服务器等服务。如:Amazon EC2/S3、AWS
三种类型从上至下,专用度依次递减,通用度依次递增
(3)共同点:
①都具有超强的数据处理能力:都能够通过互联网将本地计算机上的计算转移到网络计算机上。以此获得数据或者计算能力。
②都构建自己的虚拟资源池而且资源及使用都是动态可伸缩的:服务可以快速方便地获得,某种情况下是自动化的。都可通过增加新的节点或者分配新的计算资源来解决计算量的增加。根据需要分配和回收CPU和网络带宽。根据特定时间的用户数量、实例的数量和传输的数据量调整系统存储能力。
③都涉及到多承租和多任务,即很多用户可以执行不同的任务,访问一个或多个应用程序实例。
④系统本身都具备很强的可伸缩性。也就是各种运算资源可以快速透明的接入计算网络,而不需要花费很高的人力、物力以及财力成本。
⑤都涉及到运算资源的统筹协调。一个大的运算任务可以分解到许许多多运算节点并行来处理,提高运算效率。这同时也就需要有一个统一的多任务多用户系统能够透明的分解运算任务和分配运算资源。
⑥都涉及到庞大复杂的计算机网络系统,都是需要通过网络将分散在各地的许多运算节点有效地联系起来。
⑦都在很大程度上对网络有非常高的要求,要大规模的应用到工业生产中去,还需要有一个良好的网络基础设施做支撑,在⑧一个网络资源匮乏的环境中,它的效果要得到体现其难度是非常巨大的。
不同点:
①云计算是从集群技术发展而来,区别在于集群虽然把多台机器联了起来,但其某项具体任务执行的时候还是会被转发到某台服务器上,而云可以简单的认为是任务可以被分割成多个进程在多台服务器上并行计算,然后得到结果,好处在于大数据量的操作性能非常好。
②云可以使用廉价的PC服务器 ,可以管理大数据与大集群,关键技术在于能够对云内的基础设施进行动态按需分配与管理。
③云计算与并行计算、分布式计算的区别,以计算机用户来说,并行计算是由单个用户完成的,分布式计算是由多个用户合作完成的,云计算是没有用户参与,而是交给网络另一端的服务器完成的。
4.(1)什么是存储虚拟化,其作用是什么?(6分)
(2)简述存储虚拟化的技术架构和实现模式;(6分)
(3)说明在NAS和HDD (硬盘)中的虚拟化技术。(8分)
(1)存储虚拟化的定义:把分布的异构存储设备统一为一个或几个大的存储池
通过对存储(子)系统或存储服务的内部功能进行抽象、隐藏或隔离,使存储或数据的管理与应用、服务器、网络资源的管理分离,从而实现应用和网络的独立管理。
对存储服务和设备进行虚拟化,能够在对下一层存储资源进行扩展时进行资源合并、降低实现的复杂度。存储虚拟化可以在系统的多个层面实现,比如建立类似于HSM(分级存储管理)的系统。
在物理存储系统和服务器之间增加一个虚拟层,它管理和控制所有存储并对服务器提供存储服务。服务器不直接与存储硬件打交道,存储硬件的增减、调换、分拆、合并对服务器层完全透明。隐藏了复杂程度、允许将现有的功能集成使用、摆脱了物理容量的局限。
存储虚拟化的作用:提高设备使用效率、统一数据管理功能、设备构件化、降低管理难度、提高可扩展性、数据跨设备流动
(2)架构:对上层的应用屏蔽下层复杂的存储设备构成的集合。
上层:服务器集合管理——计算单元,由各种服务器和虚拟机构成,有各种数据要求(块设备访问和文件访问两种)
下层:存储集合管理——除了像硬盘一样对上层提供数据块外,还像装了文件系统,上层应用不需要给本机操作系统的文件系统打交道,可以直接访问存储系统的文件系统获取文件
下层(存储集合管理)通过块接口和文件接口为上层(服务器集合管理)提供服务,块设备访问由设备驱动程序处理,直接文件访问是应用程序向文件系统提出请求
在大型系统中,不只是单一的操作系统,由专用的数据存储设备或网络,统一对上层提供两种数据接口。但是到了应用和服务器,还是通过应用和服务器的操作系统,通过操作系统的文件接口和块接口获取数据。
实现模式:
实现结果——块虚拟化、磁盘虚拟化、磁带/磁带驱动器、磁带库虚拟化、文件系统虚拟化、文件/记录虚拟化
实现位置——基于主机的虚拟化、基于网络的虚拟化、基于存储设备/存储子系统的虚拟化
实现方式——带内虚拟化、带外虚拟化
①块虚拟化对多块硬盘建立RAID,划分逻辑卷(LUN),使存储的使用者无须关心RAID实现的具体过程,只要像读写普通硬盘一样读写这个逻辑卷,就能获得RAID对数据的保护功能。磁盘虚拟化将扇区地址用LBA(逻辑块地址)表示,屏蔽底层物理磁盘的概念,使磁盘的使用者无须了解磁盘的内部硬件细节,通过块地址就可以访问磁盘。磁带、磁带驱动器、磁带库虚拟化采用类似RAID的技术对多盘磁带进行条带化和校验,以期提高磁带使用的可靠性和性能,提高了磁带驱动器使用效率,加快了数据备份的速度
②基于主机的存储虚拟化使服务器的存储空间可以跨越多个异构的磁盘阵列,常用于在不同磁盘阵列之间做数据镜像保护;一般由操作系统下的逻辑卷管理软件完成(安装客户端软件),不同操作系统的逻辑卷管理软件也不相同。基于存储设备的存储虚拟化在同一存储设备内部,进行数据保护和数据迁移;在存储控制器上添加虚拟化功能,常见于中高端存储设备。基于网络的存储虚拟化用于异构存储系统整合和统一数据管理;通过在存储域网(SAN)中添加虚拟化引擎实现。
③带内虚拟化用于异构存储系统整合,统一数据管理,在业务运行同时完成复制、镜像、CDP等各种数据管理功能, 配置简单,易于实施;带外虚拟化一般用于不同存储设备之间的数据复制,配置复杂,实施难度高
(3)NAS设备——虚拟硬盘,提供专用操作系统和文件系统,通常有很多硬盘或RAID构成,系统经过优化,专用于数据存储。可以对上层提供标准的文件访问
客户端——NFS/CIFS 客户端和虚拟文件系统
NAS设备通过LAN为客户端提供文件
NAS的特点:
支持异构主机——通过文件接口访问设备
成熟的网络拓扑结构——通常在局域网访问,也可以在广域网访问,响应性能有所降低
高度集成的存储子系统——专用的存储服务器/存储设备
设备简单化——既可以看作文件又可以看作设备
HDD虚拟化可以通过磁盘虚拟化、块虚拟化等技术实现
磁盘虚拟化:
1.磁盘扇区的物理地址一般用C-H-S(柱面号-磁头号-扇区号)表示
2.磁盘虚拟化就是将扇区地址用LBA(逻辑块地址)表示,屏蔽底层物理磁盘的概念
3.磁盘虚拟由磁盘自身固件完成
4.磁盘虚拟化的结果是使磁盘的使用者无须了解磁盘的内部硬件细节,通过块地址就可以访问磁盘
块虚拟化:
1、块虚拟化是指对多块硬盘建立RAID,划分逻辑卷(LUN)。
2、每个逻辑卷对于使用者都完全等同于一块物理硬盘。物理上来说,这个逻辑卷的所有数据块,都是通过RAID处理,分布在不同的物理硬盘上。
3、块虚拟化的结果是使存储的使用者无须关心RAID实现的具体过程,只要象读写普通硬盘一样读写这个逻辑卷,就能获得RAID对数据的保护功能。
5.(1)简述服务器虚拟化的概念,主要包括哪些内容?(8分)
(2)为什么需要做虚拟机迁移,描述迁移的过程和步骤;(6分)
(3) 虚拟机迁移过程中,文件系统如何迁移? (6分)
(1)服务器虚拟化:将一个或多个物理服务器虚拟成多个逻辑上的服务器
一个物理的服务器虚拟成若干个独立的逻辑服务器,比如分区
把若干分散的物理服务器虚拟为一个大的逻辑服务器,比如网格技术
架构:
OS虚拟化从下至上依次为物理机(底层硬件)、主机操作系统、虚拟机管理器(VMM)、多个客户虚拟机
寄居虚拟化从下至上依次为物理机(底层硬件)、主机操作系统、Hypervisor、多个客户虚拟机
裸机虚拟化从下至上依次为物理机(底层硬件)、Hypervisor、多个客户虚拟机
(2)迁移的目的:
将虚拟机实例从源宿主机迁移到目标宿主机,并且在目标宿主机上能够将虚拟机运行状态恢复到其在迁移之前相同的状态,以便能够继续完成应用程序的任务。
①云计算中心的物理服务器负载经常处于动态变化中,当一台物理服务器负载过大时,若此刻不可能提供额外的物理服务器,管理员可以将其上面的虚拟机迁移到其他服务器,达到负载平衡
②云计算中心的物理服务器有时候需要定期进行升级维护,当升级维护服务器时,管理员可以将其上面的虚拟机迁移到其他服务器,等升级维护完成之后,再把虚拟机迁移回来
迁移的过程:
步骤1:预迁移(Pre-Migration)——目标预定,迁往哪里
步骤2:预定资源(Reservation)——看目的地的资源是否足够
步骤3:预复制(InterativePre-Copy)——把机器上的非实时数据拷贝到目的机器
步骤4:停机复制(Stop-and-Copy)——复制CPU当前正在使用的数据,如寄存器、寄存表等动态数据
步骤5:提交(Commitment)——通知云计算系统,确定新机启动,旧机停机
步骤6:启动(Activation)
第一阶段,Push阶段
第二阶段,Stop-and-Copy阶段——预复制先复制不用的数据,后复制先停机拷贝后复制
第三阶段,Pull阶段
实际上,迁移内存没有必要同时包含上述三个阶段,目前大部分的迁移策略只包含其中的一个或者两个阶段。
(3)迁移存储设备的需要占用大量时间和网络带宽,通常以共享的方式共享数据和文件系统,而非真正迁移。大多数集群使用NAS(Network Attached Storage,网络连接存储)作为存储设备共享数据。NAS实际上是一个带有瘦服务器的存储设备,其作用类似于一个专用的文件服务器。在局域网环境下,NAS已经完全可以实现异构平台之间,如NT、UNIX等的数据级共享。因此,Xen并没有实现存储设备的迁移,实时迁移的对象必须共享文件系统。