版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要自动化运维系统能够为运维人员提供对大规模服务器群集进行可视化运维操作的平台,通过自动化运维系统运维人员可以更直观清晰的了解和记录主机信息,并进行管理。本文设计并实现了一个自动化运维系统。系统设计开发使用VIM开发工具,Python开发语言,MySQL数据库,使用了集中化运维管理工具SaltStack,基于web.py的架构完成,该系统设计实现的功能包括:账户管理,主机管理,已加入SaltStack的主机信息采集,Master监控,本系统同时提供对于远程主机的命令管理。关键词:Python;SaltStack;自动化运维
AbstractTheautomatedoperationandmaintenancesystemcanprovideaplatformfortheoperationandmaintenancepersonneltovisualizetheoperationandmaintenanceoflarge-scaleserverclusters.Throughtheautomaticoperationandmaintenancesystem,theoperationandmaintenancepersonnelcanunderstandandrecordthehostinformationmoreintuitivelyandclearly,andmanageit.Thispaperdesignsandimplementsanautomatedoperationandmaintenancesystem.ThesystemdesignanddevelopmentusesVIMdevelopmenttools,Pythondevelopmentlanguage,MySQLdatabase,andusesthecentralizedoperationandmaintenancemanagementtoolSaltStack,whichiscompletedbasedontheweb.pyarchitecture.Thefunctionsdesignedandimplementedbythesysteminclude:accountmanagement,hostmanagement,andhasjoinedSaltStackThehostinformationcollection,Mastermonitoring,thesystemalsoprovidescommandmanagementfortheremotehost.Keywords:Python;Saltstack;Automatedoperations目录TOC\o\h\z\u第一章绪论 第一章绪论1.1研究意义与目的随着互联网时代的飞速发展,特别是在发展中飞速融入了人们的生活中。在这其中产生的信息也是越来越大,越来越多,云计算与大数据也就这么随着发展,而在发展中跟上来的挑战就是所需要管理的主机集群也愈发庞大,而作为在这后面提供支持的运维人员所需面临的就是如此多的主机,而这有许多工作都是繁琐,重复的,而所需要处理的如此多且重复,那么就很容易出现错误。该自动化运维系统基于WEB开发,用户可以通过在该系统中看到主节点的资源信息,以及将所有的机器进行一个登记,以及对各个主机的信息可以进行查看,并且在WEB中通过SaltStack管理工具可以通过批量的命令发送来进行对旗下主机的一些重复性操作进行批量处理。因此该选题还是有必要的,因为这样就可以通过一个可视化的WEB界面来直观的让使用人员了解所有的主机情况,并且让一些重复繁琐的操作一次就能实现,减少出错的概率,因此这对于运维人员来说是具有实用性的【1】。 通过使用WEB来开发该自动化运维平台,该课题主要是有以下的几点目的:1、在大学的时候所学的一些相关专业课程的基础上,将所学的知识与实践结合使用,来进一步巩固相关专业的知识以及实操的能力,从而达到对学习过的知识了解的更清晰,运用更熟练,这是对于已学习过的知识进行更深的挖掘;2、随着互联网时代的飞速发展,为此提供支持的主机数量也越来越庞大,完成该选题是为了给使用人员提供一个自动化运维平台,能够减低运维人员的一些重复繁琐的工作量,以及更好的对主机集群进行更好的管理;3、自动化运维领域目前较为热门,这能够帮助我们掌握Python的一部分知识,以及对于MySQL,SaltStack运维管理工具等进行学习,在之后的职业选择中有更多的选择,在进行相关的运维工作能有更好的帮助。通过该选题的设计与实现,可以有效的增强我们对于新知识的学习与使用、对相关资料的查询以及使用,以及找出问题分析并解决、综合实践使用相关知识等能力,这有利于我们的学习能力、专业技能能力以及逻辑能力的进一步加强。1.2研究背景和现状在互联网用户及内容的规模还不如现在的过去,为这些行为提供服务的主机数量并不多,因此运维人员通过逐台的登陆主机进行维护或者进行部署服务等都是游刃有余。而随着互联网的逐渐发展,伴随着的就是信息数据量的逐渐增多以及需要上线的项目也变得越来越多,这时候就需要逐渐的扩大主机群的规模,在面对逐渐扩大的主机集群时,运维人员则通过shell脚本以及Python来对这些主机进行维护等处理。而到了现在,又伴随这云计算大数据等的到来,以及人工智能等行业的火热,运维人员所需要面临的挑战就大了,因此就有了Ansible、Chef、Puppet、Fabric、SaltStack等的自动化运维工具来为人们提高效率。 为了完成该自动化运维平台,通过学习、研究、分析,本自动化运维系统主要功能有用户可以通过在该系统中看到主节点的资源信息,将所有的机器进行一个登记,以及对各个主机的信息可以进行查看,并且我们可以使用SaltStack管理工具通过批量的命令发送来对旗下主机的一些重复性操作进行批量处理,这有助于提高人们的工作效率,让一些重复、繁琐的工作减少出现错误。该自动化运维平台使用Python语言进行编码与实现,后台则采用web.py的框架,存储方面则使用MySQL数据库来为数据提供存储以及通过SaltStack运维工具来实现功能,通过这些相关工具和技术的结果使用来完成该系统。1.3系统内容综述与论文结构1.3.1本文主要内容本系统是一个基于Python开发的WEB项目,是一个自动化运维的WEB应用。前端使用Mako进行开发,后台使用web.py进行开发,数据库使用MySQL,并结合了SaltStack自动化运维工具。可以通过本系统来进行对主节点的资源信息展示的,以及远程命令、查询子节点的信息、批量部署等等功能。1.3.2本文主要结构本论文的主要结构介绍如下:第1章:绪论,主要是论述自动化运维平台研究的意义与目的、课题的背景与现状以及对本论文的主要内容进行简单的概述第2章:系统分析与设计,主要是对该系统的功能模块来进行需求的分析,然后设计出一套符合本系统的架构模式和结构模式,介绍集中化运维工具SaltStack介绍以及开发本系统时使用到的一些技术还有系统所需要的环境以及数据库设计。第3章:自动化运维系统的详细设计与实现,首要是详细介绍本系统的各个功能模块的设计思路以及核心代码的实现,主要有功能实现、关键技术和关键的业务逻辑等第4章:系统测试,主要写了对于整个系统进行测试第5章:总结与展望,对于本论文进行归纳总结以及提出展望。第二章系统分析与设计2.1需求分析用户模块:用户登陆、注册、修改信息、退出。主页模块:展示主节点当前各类信息。显示当前时间。主机登记模块:登记所需记录的主机详细信息。修改所需记录的主机详细信息。删除所需记录的主机详细信息。SaltStack模块:显示当前加入SaltStack的子节点信息。通过SaltStack命令执行功能实现远程命令、批量部署等功能。2.2系统总体设计2.2.1开发结构设计设计、创建该WEB的模式使用了MVC模式,该模式的是指ModelViewController即模型-视图-控制器。关于该模式作用如下:Model即模型,它表示的即是核心的对于数据的操作或者对于数据库的操作;Controller即控制器,它负责的根据收到的请求而调用所需要的Model来完成请求;View即视图,它则与用户进行交互并根据所接受到的数据来呈现到用户面前。2.2.2系统架构设计本自动化运维系统的架构由客户端和服务端组成,客户端面对的是使用该自动化运维平台并进行交互的用户,所有功能的实现则由客户端、服务端、数据库以及SaltStack之间的交互完成。如下图2-1所示,为该自动化运维系统的总体架构:图2-1系统架构图2.2.3总体功能架构根据2.1的功能需求分析,如图2-2所示,此为该自动化运维系统的功能模块:图2-2系统功能模图2.3SaltStack综述2.3.1简介SaltStack是一个在2011年建立的开源项目,这是一个功能强大,能适应与大规模的进行批量管理服务器的C/S自动化集中管理工具,该工具是基于Python语言实现,实现它的底层网络架构,进行通信的则是轻量级消息队列ZeroMQ。通过对于SaltStack的部署以及使用,我们能够对大量服务器做到任务执行以及配置管理以及基于这两大功能延伸的另外的一些功能如采集服务器数据等等。2.3.2SaltStack基本原理SaltStack所使用的模式是C/S模式,即客户端/服务端的模式,其中客户端是指SaltStack中的minion子节点,服务端指Saltstack中的Master主节点,主节点Master与子节点minion之间的通信是利用的轻量级消息队列ZeroMQ。当主节点和子节点的SaltStack对应组件下载安装完后,配置完对应配置和hosts启动服务后,子节点minion会连接主节点Master将自己的pubkey发送过去,请求它为其签发证书,而这时的主节点Master则通过salt-key命令可以查看并且接受子节点minion的key,为它签发证书,而等到证书签发完毕后,就代表这主节点Master和子节点minion之间已经互相信任了。这时候我们就可以通过主节点Master端发送任何指令让匹配的子节点minion执行,子节点minion执行完命令后则返回结果。在这之间完成任务是通过4505以及4506两个端口实现的,其中4505端口对于的是轻量级消息队列ZeroMQ的PUBsystem,它的功能是用来发送消息的,而4506端口则是REPsystem,它的功能则是用来接受消息的。SaltStack的主节点与子节点之间的的消息是通过轻量级消息队列ZeroMQ的发布-订阅模式来进行传递的,它们之间的连接方式有tcp以及icp两种。SaltStack的命令通过salt.client.LocalClient.cmd_cli发布到主节点Master,并以此来获取一个jobid,而命令执行得到的结果则是根据此jobid来获取的。主节点Master接收到该命令后,则通过ZeroMQ在发送到子节点minion上,并通过接受到的消息得到需要执行的命令在通过minion._handle_aes处理,其会发起一个本地线程来执行命令。在处理完命令后,调用minion._return_pub方法,将执行结果返回给主节点Master。主节点Master接受到了子节点minion返回的结果后,在通过使用Master._handle_aes方法,将结果写的文件中。在最后获取到结果并最终输出到终端的则是salt.client.LocalClient.cmd_cli通过轮询获取Job执行结果【2】。在SaltStack中的还包含了State、Grain、Pillar、Highstate、Modules等模块。其中,State模块是通过在服务器Master中的/srv/salt路径下编写.sls函数关于配置管理等的一些指令,在通过命令调用该函数实现对与目标服务器的配置管理等。Grain是在SaltStack中的以keyvalue形式存储的一种静态的数据库,它存储的是由客户端minion要返回给服务端的数据,这部分数据是静态的,包含一些如操作系统类型、版本或者一些硬件属性的不经常改变的数据。Pillar是在SaltStack中的以keyvalue形式存储的一种动态的数据库这里面存储的数据是比较私密的,它存储的是客户端minion需要向服务器索要的数据,这些数据是只有指定的某个minion客户端才能看到的关于自身的Pillar数据,而别的是无法看见的。Highstate的功能与State模块功能类似,但是却是能通过top.sls来对多个服务器来进行更为仔细的管理。Modules模块则是包含的SaltStack的指令,包括命令行cmd模块指令、cp模块指令、service模块指令等等,通过这些指令来完成SaltStack的功能【3】。2.3.3SaltStack的部署架构在SsltStack中,它包含的角色有三种,其中最重要的两个角色分别是处于中心控制系统的Master角色,以及被管理的客户端minion,还有一个角色是syndic,它的作用类似与代理,即只负责分发任务下去给客户端minion执行。 而基于这三种角色,SaltStack则有四种部署的架构【4】: 第一种:Master服务器与所有客户端minion直连,minion通过消息队列直接接受来自于Master服务器分发下来的命令,并执行命令或者完成配置管理,具体结构图如图2-3所示:图2-3单Master直连第二种:Master服务器通过syndic节点来将命令发布给旗下的客户端minion,在该架构中,Master服务器通过syndic来对客户端进行管理,通过这种结构,则可以进行更加多级的扩展以此来满足更大规模的使用,具体结构图如图2-4所示:图2-4使用代理连接第三种:多台Master服务器与所有客户端minion直连,minion通过消息队列直接接受来自于Master服务器分发下来的命令,并执行命令或者完成配置管理,而使用这种结构的时候,客户端minion需要在hosts以及salt的配置文件中配置多个服务端的节点以及多个服务器Master之间的配置、状态、密钥文件等需要相同,以此来提高系统的高可用,解决单点问题,具体结构图如图2-5所示:图2-5多Master连接第四种:单minion客户端的无Master服务器模式,即单机版,在该种架构当中,客户端不受任何的服务器Master控制使用,只要在本地运行,一些相关的功能就能自己完成,具体结构图如图2-6所示:图2-6单机版在本次系统中,我们采用的是第一种Master服务器对所有客户端minion进行管理的架构,在进行这小型的架构时即可满足需求。2.3.4为何选择SaltStack目前来说可以选择的自动化运维工具有很多,但是目前而言较为热门的还是Puppet、Chef、Ansible和SaltStack、Fabric这几个工具。其中Ansible、SaltStack和Fabric这三者都是基于Python来进行开发的,而Puppet、Chef则是基于Ruby来进行开发的。和Saltstack相比,Ansible和其之间功能是非常相似的,不过SaltStack是基于轻量级消息队列ZeroMQ来进行通信的,而Ansible则不一样,它的底层主要还是通过SSH来进行通信,而ZMQ相比,那Ansible它的通信速度则就慢了许多了,而当如果遇到更大规模的集群时,是不如SaltStack的,除此之外,它在对于支持的环境这方面而言,也是比SaltStack支持的操作系统的数量要更少一些,不过它相对与SaltStack,它在进行安装部署的时候,子节点是不需要在下载安装agent的,相对与SaltStack而言则是则是更简单。而Fabric相对与SaltStack而言,它要更适合与小型的环境中,而且相比较与SaltStack而言,由于它的定位以及本身,会更加的容易出现单点故障,因此如果是在稍微大型些的环境中使用的话则显的不妥。Puppet则是相对于这些而言要更成熟,但是它的库也因此显的更为笨重,除此之外,由于它是基于Ruby开发的,而如果要使用它则需要对此语言有更深入的了解才能很好的掌握该工具,相比较而言,它的使用门槛还是有点高的。而Chef与Puppet有点类似,但也是一样由于是基于Ruby开发的,想要使用该工具的话还需要通过次语言进行更多的开发以及了解才能对其进行使用,这相对与Pupper而言,更不是一个能简单使用的工具【5】。因此基于多方面的考虑,我们在这里选择了使用SaltStack这一款工具,相比较而言,它具有较为全面的功能,以及拥有快速的速度,对于各类操作系统环境的支持也要更加全面,在大型的集群环境也不会显得不堪重用,而且使用门槛不高,对于使用人员而言更为友好,而且由于是使用Python开发的,因此对于该语言是相当兼容的,而Python中的数量庞大的库对其的使用更是提供了更为有力的支持【6】。2.4开发技术综述2.4.1Python编程语言Python是当前较为热门的,能在时下火热的领域中频频出现的如人工智能等的一种面向对象的解释型高级计算机脚本语言。它在创立之初就是为了要编写shell脚本而出现的。目前来说,在现在的许多公司对于使用Python的工程师还是很有需求的,而别是在与人工智能以及运维方面等。Python这一门语言具有许多的有点,比如简洁、拥有大量的扩展库,而正是凭借这些扩展库让Python拥有了许多的功能以及对于新手而言更为友好,它的使用门槛并不会特别的高,正是这等等的众多优点也让它的在现在的众多的编程语言当中能有属于它自己的地位,当然了,Python也并不是毫无缺点的,比如相对与C、Java等语言来说它的速度就相对而言慢了不少了,而这也是它解释型语言的特性导致的,它在工作的时候是需要将代码解释给硬件能理解的语言,所以就会导致在速度方面会比较慢,以及还有另外的一些小的缺点,当然了,这些缺点对于Python而言并不会盖过它的优点【7】。2.4.2web.py框架web.py框架是一个小巧轻量但是这不影响它功能强大的一个基于Python的WEB开发框架。它是一个很精简的框架,只是提供了基础的骨架以及url路由,对于用户而言通过使用这个框架对于业务的逻辑方面来说是更容易上手使用进行开发的,不过也是因为它精简的特性所导致它所拥有的功能并没有其他框架那样强悍,如果有所需要的另外一些功能则需要使用者自己在去进行开发。2.4.3Mako模板Mako模板是一个基于Python的一个WEB模板,它是一个借鉴了Jinjia2等多个优秀模板而编写出来的一个简单易上手、渲染速度快,并且对于Python语言的引用有着优秀的支持的一个模板,虽然它的使用难度并不算很高,但是这并不影响它的对于Python中的WEB开发的优秀的支持。2.4.4psutil库psutil库你一个可以在Python使用的且且跨平台的一个第三方库。它在对于对系统资源监控之一方面起到重要的作用,通过使用该库,我们使用Python来进行对系统管理的时候效率会的到非常大的提高,而且使用调用该库并实现功能的时候非常简单,只需要些许代码即可实现所要实现的对系统资源监控的功能,除此之外,该库所支持的操作系统数量也是不少,主流的大部分操作系统都能支持进行资源监控,psutil绝对是一个在运维人员手中的一个重要第三方库。2.4.5Dmidecode工具Dmidecode是一个可以获取系统硬件信息的一个工具,我们可以通过下载Python使用的版本来对该工具进行使用,通过该工具,我们能够对于系统的的硬件信息进行获取,这是一个对于psutil的补充使用。2.4.6MySQL数据库MySQL是一个在现在也有非常多个人或企业使用的一个开源的、体量小、轻型的关系型数据库,别看它开源且体量不大,但是这写都不影响它的功能,功能强大,对于使用人员来说相对于其他数据库而言更容易上手,对于许多操作系统都是提供使用支持的,而且具有非常不错的稳定性的同时维护方面也并不困难,这些结合起来对于个人或者是一些中小企业来说,满足他们的数据存储需求也是完全足够的了,而即便是是在面对大型的数据存储的场景时,它也并不是不能使用的,这足以看出它的功能强大【8】。2.5系统所需环境及数据库设计2.5.1系统运行时所需环境桌面虚拟软件:VMwareWorkstationPRO操作系统:Centos6.5数据库:MySQL5.1.73SaltStack:SaltStack20.2环境配置1、Python的相关配置: 在使用操作系统自带的Python的时候,还需要下载pip这一Python的包管理工具,以此来下载使用一些所需要使用的Python的库,在下载后,可一通过pip-V命令来查看pip的版本,并以此来查看是否安装正确。而在正确下载该管理工具后,在下载其他包后,可以是哦那个pip-show命令来查看所下载的包是否正确。 2、MySQL的相关配置: MySQL是我在该系统中采用的用来存放一些数据的关系型数据库,在本次中所使用的是5.1.73版本的数据库。在下载安装后,我们在为其创建了root用户以及密码为123456789,除此之外,为了能够不仅仅是在本机连接上数据库,通过MySQL的命令,为用户root赋予了远程登陆的权限,除此之外,为了防止数据库出现问题,将这里面的空账号删除。 3、SaltStack的相关配置: SaltStack是我在该系统中所使用的一款自动化集中管理工具。在下载该工具前,我们需要修改yum源,因为如果使用默认的仓库的话,这里面是不含有该工具的,因此需要安装新的yum源,并更改相应的配置。在完成前面的步骤后,由于在本系统中所采用的架构是服务端Master直接管理客户端minion,所以需要分别对应下载相应的salt-master和salt-minion版本。下载完相对于的版本,则分别在所有服务器中的hosts文件中增加相对应的ip到主机名的映射,然后在minion服务器中修改SaltStack的相应配置后,将所有服务器启动,在启动后,客户端minion会根据之前的hosts文件中的映射以及相应salt文件中的配置寻找带Master并发送证书请求其为自己进行签名,已达到互信,Master可以通过salt-key-a的命令来接受某客户端的请求,不过如果需要接受很多minion的时候,则可以修改相应的auto_accept的配置,让Master自动为minion签发证书。如此一来,SaltStack也就完成了相应的配置可以进行使用了。2.5.3数据库表分析为了能够满足该自动化运维系统的功能需求,在此于数据库中建立了与用户信息模块、主机信息模块、配置信息模块、登陆信息模块等相关的表来实现。 用户信息模块:该表存放了用户的id、账号、密码、昵称、手机号码、邮箱账号、用户等级、用户状态、最后登陆记录、注册时间、备注等这类信息。主机信息模块:该表存放了关于该主机的id、主机名称、如果存在域名记录域名信息、内网ip、公网ip、管理ip、服务器型号对应id、CPU信息对应id、硬盘大小对应id、内存大小对应id、操作系统版本、自定义编码信息、登记时间信息、上架时间信息、更改的时间、登记者id、更改者id、任务信息、类型、机房归属信息对应id、所属机柜信息对应id、标签、编号、当前状态、备注等信息。配置信息模块:该表存放了关于该配置的id、类型、该类型的值、组标记、当前状态、备注等信息。登陆信息模块:该表存放了关于登陆顺序信息id、用户id登陆时间、登陆ip、登陆地方、使用浏览器类型、登录令牌、过期时间、会话状态等信息。2.5.4概念模型设计 根据上述的需求分许,我们可以凭此得到设计思路,并按照此思路设计出各实体关系,并用E-R图表现出来。各E-R图如图2-7所示:图2-7实体关系图2.5.5数据库表结构设计当前的表结构设计如表2-1至2-4所示:表2-1用户信息users表字段名类型长度允许空值主键注释idint3√用户的idusernamevarchar20账号passwordvarchar60密码nicknamevarchar20是昵称mobilevarchar15是手机号码emailvarchar50是邮箱账号levelint1用户等级statusvarchar3用户状态loginfoint5最后登陆记录regdatetimestamp0注册时间commentvarchar50是备注表2-2主机信息hosts表字段名类型长度允许空值主键注释idint3√用户的idhostnamevarchar30主机名称domainvarchar30是如果存在域名记录域名信息priip1varchar15内网ippriip2varchar15是内网ippubip1varchar15是公网ippubip2varchar15是公网ipadminipvarchar15是管理ipmodelvarchar30服务器型号对应idcpuvarchar30CPU信息对应idhddvarchar20是硬盘大小对应idmemvarchar20内存大小对应idosvarchar30操作系统版本rnumvarchar20自定义编码信息storagedatedate0登记时间信息startdatedate0上架时间信息mdatetimestamp0更改的时间creatorint3登记者ideditorint3更改者idrolevarchar20任务信息typevarchar20类型idcvarchar20机房归属信息对应ididctagvarchar20所属机柜信息对应idstagvarchar20标签snumvarchar20编号statusvarchar10当前状态commentvarchar20是备注表2-3配置信息options表字段名类型长度允许空值主键注释idint3√该配置的idtypevarchar15类型valuevarchar50该类型的值defaultvarchar3组标记statusvarchar3当前状态commentvarchar20是备注表2-4登陆信息login_logs表字段名类型长度允许空值主键注释idint6√登陆顺序信息iduidint3用户iddatatimestamp0登陆时间ipvarchar15登陆iplocationvarchar30是登陆地方agentvarchar150使用浏览器类型tokenvarchar64是登录令牌expirydatetime0是过期时间statusvarchar3会话状态第三章自动化运维系统的详细设计与实现3.1用户模块的设计与实现3.1.1登陆注册流程如果用户的登陆进网站后则进入登陆界面,在输入相关用户信息进行登陆后,会去数据库进行判断是否正确并将结果返回到前面,如果成功则登陆,失败则无法进入。在进入网站后可以通过用户管理的功能增加用户,并将该数据与数据库中数据进行比较,如果用户信息不存在则注册成功,存在则注册失败。其中登陆注册的流程图如图3-1至3-2所示。图3-1登陆流程设计图3-2注册流程设计3.1.2用户模块的介绍与实现用户模块中包括了登陆、注册、修改信息、删除用户、查看信息、退出组成。用户添加、删除、修改查看页面如图3-3至3-4所示。 图3-3登陆页面图3-4用户管理页面 在登陆的时候,点击登陆,则通过一个监控事件将用户信息拿去数据库进行查询,然后通过该信息获取该用户的所有信息并保存开启一个session会话中在将此次会话状态设置为运行中的时候并根据此进行一个cookie的设置然后在进行用户的登陆,最终通过验证跳转进入主页。而在登陆后,则可以对用户进行注册,通过新增用户,对用户的数据进行输入后,则将该数据拿去数据库中根据用户名来进行判断是否拥有重复的用户,经过判断没有后,则将新用户的数据存入数据库中完成用户注册。进行用户注册后,还可以对用户信息进行修改、查看以及删除以及对使用状态的更改。这一系列操作则是通过修改数据库中的数据属性来进行实现。 在完成了一系列操作后需要退出,则在选择登出后,通过该用户的id找到数据库中的数据将数据库中关于该用户的使用状态进行更改,并将该session会话关闭,这时候即完成了退出。该部分的主要代码逻辑如附录1中所示。3.2模块的设计与实现3.2.1主页功能流程在进行登陆后,会将信息传递到主页后,在主页中将这些传递过来的信息在页面中展现出来,其中流程图如图3-5所示。图3-5主页功能流程设计3.2.2主页模块的介绍与实现在该模块中主要是包含了相关的资源展示展示主页以及当前时间显示和导航栏。如图3-6所示。图3-6主页在登陆后,通过urls的功能调用对象使用以此获取需要在主页中展示的相关系统资源信息,并将通过引用的包的功能来实现这一需求,在将获取到的相关系统资源信息以及登陆的用户信息传递到主页中,主页在通过Mako来将得到的各类信息进行展示。而关于时间显示的实现则是通过导入时间的包来获取当前时间,并在主页中显示。该部分的主要代码逻辑如附录2中所示。3.3主机登记模块的设计与实现3.3.1主机登记功能流程在通过登陆进入网站后,可以在选项中选择主机管理进入管理界面,进入主机管理界面后,可以通过添加主机信息,进入添加界面,在将对某主机的配置以及描述等信息录入后就添加完成。添加完成后可以进行编辑查看以及删除操作。其中流程图如图3-7所示。图3-7登记、查看、删除主机流程设计3.3.2主机登记模块的设计与实现在该模块中主要是包含了主机信息的录入、编辑查看以及删除操作,如图3-8所示。图3-8主机页面 录入操作是在选择添加主机后,先通过数据库获取到配置信息表传递到前端提供给用户选择,在用户选择完毕后,则将最后的信息传递到后台,先通过数据库查询有无冲突的信息,在检测不冲突后,则进行插入数据的操作,开始将主机信息写入数据库中,这样就完成了添加操作。编辑查看主要是通过id在数据库中查找相关对于的主机信息,并将对应的信息传递到前端,然后就将获取的信息读取出来并进行展示。而删除则是通过id在库中查找到对于的信息,并进行数据的删除。该部分的主要代码逻辑如附录3中所示。3.4SaltStack模块的设计与实现3.4.1SaltStack模块功能流程在进入网站后通过选项进入SaltStack功能列表,在选择实时状态时,可以查看已经加入SaltStack集群中的客户端minion节点的信息。在功能列表中选择命令下发时,可以进入远程命令的功能列表,在进入后,可以通过选择要发布的目标主机的匹配信息、匹配模式、执行模块、以及执行命令进行对SaltStack的操作。其中流程图如图3-9至3-10所示。图3-9SaltStack实时状态流程设计图3-10SaltStack命令执行流程设计3.4.2SaltStack模块的设计与实现在该模块中主要是包含了对SaltStack集群的查看实时状态、以及命令执行的功能,如图3-10至3-11所示。图3-10命令执行功能图3-11子节点实时状态 查看实时状态主要是通过salt命令调出相关的资源信息以及状态信息等,通过分段保存等然后将信息传递到前端,并在前端调用信息进行展示。而远程命令则是通过写入目标主机对象、匹配规则如使用通配符匹配还是正则表达式还是列表选择等、选择的执行模块以及具体的执行命令来发布命令,可以通过此来实现批量部署、远程运行系统命令、查询某些主机的信息等等SaltStack的强大的功能,而在将命令传到后端执行后,后端通过建立一个client来处理命令,并将命令的结果返回,在通过根据不同的返回结果来进行存放这些数据后,在将对应的执行结果返回前端,并在前端展示执行的最终结果。该部分的主要代码逻辑如附录4中所示。第四章系统测试4.1运行环境 当前系统运行在虚拟机中,使用的是Centos6.5的版本,而其他的配置如下图4-1所示:图4-1配置版本4.2测试过程 执行项目后,通过WEB输入访问地址并通过8080端口访问该系统,进入到登陆页面,如果不输入用户名,则通过弹出提示如图4-2所示,如果没有输出密码,则如4-3所示,如果用户名或密码不正确则如4-4所示,图4-2至4-4如下所示:图4-2用户名空图4-3密码空图4-4用户名或密码错误 在用户名和密码验证无误后则跳转进入主页,在主页中展示Master信息和Saltstack接入信息,如图4-5所示:图4-5主页 在进入主页后,选择主机进入主机管理页面,可以看到录入的主机信息并进行管理进行增删改查,如图4-6所示:图4-6主机管理 选择添加主机页面可以登记主机信息,如图4-7所示:图4-7登记主机信息 登记完主机信息后,可以在管理页面看到此主机并可继续进行管理操作,如图4-8所示:图4-8添加完成 在添加完主机后可以进行修改或者删除操作,而点击编辑后则如图4-9所示:图4-10编辑 在操作完主机管理的功能后,可以选择用户,进入用户管理页面,如图4-11所示:图4-11用户管理 点击添加用户,则可以进行注册操作,如图4-12所示:图4-12添加用户 成功添加后可以在用户管理出看到新的用户,如图4-13所示:图4-13添加成功 切换用户登陆,使用新用户test登陆如图4-14所示:图4-15登陆成功在用户信息处可以修改密码,修改密码如图4-16所示图4-16修改密码在完成用户管理后可以选择SaltStack进入SaltStack模块,选择进入实时状态,在此可以看到minion节点的信息,如图4-17所示:图4-17实时状态在选择命令下方,进入命令执行模块,如图4-18所示,为选择下发安装Apache的命令:4-18命令下发在完成后,可以点击右上角的退出来完成退出系统。第五章总结与展望5.1总结 经过在这么几个月时间中的努力,通过结合了本专业相关的计算机基础理论、通过额外学习并进行实际使用的SaltStack集中管理工具以及对于开发的知识与实践之后,完成了本自动化运维系统的设计与实现以及对于论文的撰写,在这整个的过程中,通过理论与实践的相结合也是让我感到受益匪浅。 在开发本自动化运维系统的过程中也是出现了不少的状况,比如对于一些平时没有用上的知识的使用出现了问题以及在对于新技术的使用过程中的不熟悉导致进度颇为艰难。而通过不断的翻阅书籍以及通过网络查找资料以及与他人讨论才克服这些问题。而在这么一整个过程中的最大的收益就是对于SaltStack这款工具的有了实际的了解和使用,通过它,我们能更快的完成一些繁琐复杂的任务,在实际中也是非常有帮助的。而在开发的过程中的对于最后的总结则是认为对于各类功能的设计以及对于对应的数据库的规划要清晰以及对于系统的框架的规划需要有条理且在之前就定好在由小及大串联起来,这会让我们在实际的开发过程中会有更好的体验。5.2未来展望随着使用者所部署的地方需要管理的服务器越来越多,单单现在的功能是不足以继续满足需求的,还需要对于系统进行更深入的开发。因此本人认为还有几点需要继续更近一步的改进。一、结合其他的管理工具以及等提升效率的工具在进行组合使用进行开发以及来提高本系统的功能性;二、对于当前系统使用的SaltStack工具,编写更多更细致的.sls文件来满足更细致的面多多种场景的使用,因为在面对着许多需要同样设置的同时,也会出现不同的差异化,因此就需要在根据此进行更细的划分;三、对于现在的系统进行改更细致优化以及提供更多的功能。参考文献【1】Python自动化运维:技术与最佳实践[M].机械工业出版社,2014年,刘天斯著【2】SaltStack运维实战[M].电子工业出版社2016年,刘英杰著【3】SaltStack技术入门与实战[M].机械工业出版社,2016年,刘继伟;沈灿;赵舜东著【4】自动化运维之saltstack[Z]/13760226/2308580【5】saltstack[Z]/Richardzhu/p/5790286.html【6】自动化运维工具SaltStack的研究与自动化运维平台建设[R]赵新;于滨;唐素珍;曹殿雪著【7】python程序设计[M].清华大学出版社,2016年【8】MySQL从入门到精通[M].清华大学出版社,明日科技2017年8月1日附录附录1:#登陆getPost=web.input()try:getSQL=db.query('''selectu.id,u.username,u.password,u.nickname,u.status,L.ip,L.location,L.datefromusersasuleftjoinlogin_logsasLonu.loginfo=L.idwhereusername="%s"andpassword="%s"'''%(getPost.username,getPost.password))except:web.header('Content-Type','application/json')returnjson.dumps({'code':-1,'msg':'数据库错误'})ifgetSQL:getData=getSQL[0]SID=getData['id']Username=getData['username']Status=getData['status']ShowName=getData['nickname']LastDate=getData['date']LastIP=getData['ip']LastLocation=getData['location']ifnotShowName:ShowName=UsernameifStatus=='yes':genSession(SID,Username,ShowName,LastIP,LastLocation,LastDate,False,Lstat='ok',kpl=getPost.kpl)web.header('Content-Type','application/json')returnjson.dumps({'code':0,'msg':'Success'})else:web.header('Content-Type','application/json')returnjson.dumps({'code':-2,'msg':'用户已被禁用'})else:web.header('Content-Type','application/json')returnjson.dumps({'code':-3,'msg':'用户名或密码错误'})#注册
getPost=web.input()try:getSQL=db.query('''selectid,usernamefromuserswhereusername="%s"'''%(getPost.username))except:return"error"ifgetSQL:return"false"附录2:f=open('/proc/loadavg')l=f.read().split()f.close()loadavg_1=l[0]loadavg_5=l[1]loadavg_15=l[2]#GetMemoryf=open('/proc/meminfo')m=f.readlines()f.close()mem={}forninm:iflen(n)<2:continuename=n.split(':')[0]var=n.split()[1]mem[name]=int(var)/1024mem['MemUsed']=mem['MemTotal']-mem['MemFree']-mem['Buffers']-mem['Cached']附录3:try:getSQL=db.query('''selecthostname,priip1fromhostswherehostname="%s"orpriip1="%s"'''%(p.hostname,p.priip1))exceptException,e:print"MySQLError:",Exception,":",ereturn"Error"ifgetSQL:foriingetSQL:ifp.hostname==i.hostname:return"HostnameError"ifp.priip1==i.priip1:return"PriIP1Error" try:db.query('''insertintohosts(hostname,role,priip1,priip2,pubip1,pubip2,model,cpu,hdd,mem,os,rnum,storagedate,adminip,type,startdate,idc,idctag,snum,stag,status,comment,creator,editor)values("%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s")'''%(p.hostname,p.role,p.priip1,p.priip2,p.pubip1,p.pubip2,p.model,p.cpu,p.hdd,p.mem,p.os,p.rnum,p.storagedate,p.adminip,p.type,p.startdate,p.idc,p.idctag,p.snum,p.stag,p.status,ment,getLogin()['SID'],getLogin()['SID']))exceptException,e:print"MySQLError:",Exception,":",ereturn"Error"return"Add.True"附录4:c=web.input()fun=c.funarg=c.argtgt=c.tgtexpr_form=c.expr_formtimeout=c.timeoutiftimeout.isdigit():timeout=int(timeout)else:timeout=NoneArg=[arg]local=salt.client.LocalClient()FL=Cmd.CMD致谢时光飞逝,一眨眼间我就在美丽的东软学院中度过了四年。这四年,这是我人生中非常重要的四年,我很幸运能够接触到这些不仅传授我的知识,还能从更高的层次来指导我的人生和追求价值的老师,还有态度积极乐观、互相进步的同学们。它们使我在学校中生活充实,在之后也拥有了继续追求前进的动力,为我的大学生活画下来一个完美的句号。在这篇论文的设计过程中,从一开始确定论文题目到项目的实现,最后到论文的完成,总共花费了三个多月时间。这其中我经历了很多的困难,面临过不少困惑,但我最终克服了它们。我要感谢我的毕业论文导师赵元成老师,在学习过程中,老师给了我详细的指导,从选题指导,论文框架到详细修改,并提出了许多有价值的建议。当我在论文中期遇到难题的时候,他指导了我论文写作的思路和方向。感谢给我论文提供了帮助和意见的朋友和同学们和查阅资料时指明方向的各位作者,他们的帮助让我在论文的编写中有了很大的启发。最后,我特别的感谢我的父母,是他们支持我完成学业,是他们为我提供了一个坚强的后盾以及对我的包容与爱。在此,我要向所有在百忙之中审阅论文并参加答辩的专家教授们表示衷心的感谢!
怎样提高电脑系统运行速度WindowsXP的启动速度比Windows2000要快30%左右,但相对于Windows98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高WindowsXP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统资源,加快电脑运行速度。1.加快系统启动速度WindowsXP的启动速度比Windows2000要快30%左右,但相对于Windows98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高WindowsXP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统资源,加快电脑运行速度。(1)MsconfigWindowsXP的启动速度在系统安装初期还比较快,但随着安装的软件不断增多,系统的启动速度会越来越慢,这是由于许多软件把自己加在了启动程序中,这样开机即需运行,大大降低了启动速度,而且也占用了大量的系统资源。对于这样一些程序,我们可以通过系统配置实用程序Msconfig将它们从启动组中排除出去。选择“开始”菜单中的“运行”命令,在“运行”对话框中键入“Msconfig”,回车后会弹出“系统配置实用程序”对话框,选择其中的“启动”选项卡(如图1),该选项卡中列出了系统启动时加载的项目及来源,仔细查看每个项目是否需要自动加载,否则清除项目前的复选框,加载的项目越少,启动的速度就越快。设置完成后需要重新启动方能生效。(2)BootvisBootvis是微软提供的一个启动优化工具,可提高WindowsXP的启动速度。用BootVis提升WindowsXP的启动速度必须按照正确的顺序进行操作,否则将不会起到提速的效果。其正确的操作方法如下:启动Bootvis,从其主窗口(如图2)中选择“工具”菜单下的“选项”命令,在“符号路径”处键入Bootvis的安装路径,如“C:\ProgramFiles\Bootvis”,单击“保存”退出。从“跟踪”菜单中选择“下次引导”命令,会弹出“重复跟踪”对话框,单击“确定”按钮,BootVis将引导WindowsXP重新启动,默认的重新启动时间是10秒。系统重新启动后,BootVis自动开始运行并记录启动进程,生成启动进程的相关BIN文件,并把这个记录文件自动命名为TRACE_BOOT_1_1。程序记录完启动进程文件后,会重新启动BootVis主界面,在“文件”菜单中选择刚刚生成的启动进程文件“TRACE_BOOT_1_1”。窗口中即会出现“CPU>使用”、“磁盘I/O”、“磁盘使用”、“驱动程序延迟”等几项具体图例供我们分析,不过最好还是让BootVis程序来自动进行分析:从“跟踪”菜单中选择“系统优化”命令,程序会再次重新启动计算机,并分析启动进程文件,从而使计算机启动得更快。(3)禁用多余的服务WindowsXP在启动时会有众多程序或服务被调入到系统的内存中,它们往往用来控制Windows系统的硬件设备、内存、文件管理或者其他重要的系统功能。但这些服务有很多对我们用途不大甚至根本没有用,它们的存在会占用内存和系统资源,所以应该将它们禁用,这样最多可以节省70MB的内存空间,系统速度自然也会有很大的提高。选择“开始”菜单中的“运行”命令,在“运行”对话框键入“services.msc”后回车,即可打开“服务”窗口。窗口的服务列表中列出了系统提供的所有服务的名称、状态及启动类型。要修改某个服务,可从列表双击它,会弹出它的属性对话框(如图3),你可从“常规”选项卡对服务进行修改,通过单击“启动”、“停止”、“暂停”、“恢复”四个按钮来修改服务的状态,并可从“启动类型”下拉列表中修改启动类型,启动类型有“自动”、“手动”、“已禁用”三种。如果要禁止某个服务在启动自动加载,可将其启动类型改为“已禁用”。WindowsXP提供的所有服务有36个默认是自动启动的,实际上,其中只有8个是必须保留的(见下表),其他的则可根据自己的需要进行设置,每种服务的作用在软件中有提示。4)修改注册表来减少预读取,减少进度条等待时间WindowsXP在启动过程中会出现一个进度条,我们可以通过修改注册表,让进度条只跑一圈就进入登录画面。选择“开始”菜单中的“运行”命令,在“运行”对话框键入“regedit”命令后回车,即可启动注册表编辑器,在注册表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters,选择其下的EnablePrefetcher键,把它的键值改为“1”即可。(5)减少开机磁盘扫描等待时间当Windows日志中记录有非正常关机、死机引起的重新启动,系统就会自动在启动的时候运行磁盘扫描程序。在默认情况下,扫描每个分区前会等待10秒钟,如果每个分区都要等上10秒才能开始进行扫描,再加上扫描本身需要的时间,会耗费相当长的时间才能完成启动过程。对于这种情况我们可以设置取消磁盘扫描的等待时间,甚至禁止对某个磁盘分区进行扫描。选择“开始→运行”,在运行对话框中键入“chkntfs/t:0”,即可将磁盘扫描等待时间设置为0;如果要在计算机启动时忽略扫描某个分区,比如C盘,可以输入“chkntfs/xc:”命令;如果要恢复对C盘的扫描,可使用“chkntfs/dc:”命令,即可还原所有chkntfs默认设置,除了自动文件检查的倒计时之外。2.提高系统运行速度提升系统运行速度的思路与加快启动的速度类似:尽量优化软硬件设置,减轻系统负担。以下是一些常用的优化手段。(1)设置处理器二级缓存容量WindowsXP无法自动检测处理器的二级缓存容量,需要我们自己在注册表中手动设置,首先打开注册表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”,选择其下的“SecondLevelDataCache”,根据自己所用的处理器设置即可,例如PIIICoppermine/P4Willamette是“256”,AthlonXP是“384”,P4Northwood是“512”。(2)提升系统缓存同样也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”位置,把其下的“LargeSystemCache”键值从0改为1,WindowsXP就会把除了4M之外的系统内存全部分配到文件系统缓存中,这样XP的内核能够在内存中运行,大大提高系统速度。通常来说,该优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。需要注意的是必须有256M以上的内存,激活LargeSystemCache才可起到正面的作用,否则不要轻易改动它。(3)改进输入/输出性能这个优化能够提升系统进行大容量文件传输时的性能,不过这只对服务器用户才有实在意义。我们可在中新建一个DWORD(双字节值)键值,命名为IOPageLockLimit。一般情况下把数据设置8~16MB之间性能最好,要记住这个值是用字节来计算的,例如你要分配10MB的话,就是10×?1024×1024,也就是10485760。这里的优化也需要你的机器拥有大于256M的内存。(4)禁用内存页面调度在正常情况下,XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。在注册表中找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”下的“DisablePagingExecutive”键,把它的值从0改为1即可禁止内存页面调度了。(5)关闭自动重新启动功能当WindowsXP遇到严重问题时便会突然重新开机,可从注册表将此功能取消。打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\”将AutoReboot键的Dword值更改为0,重新启动后设置即可生效。(6)改变视觉效果WindowsXP在默认情况下启用了几乎所有的视觉效果,如淡入淡出、在菜单下显示阴影。这些视觉效果虽然漂亮,但对系统性能会有一定的影响,有时甚至造成应用软件在运行时出现停顿。一般情况下建议少用或者取消这些视觉效果。选择桌面上“我的电脑”图标,单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,打开“系统属性”对话框。选择“高级”选项卡,在其中的“性能”栏中单击“设置”按钮,会弹出“性能选项”对话框(如图4),可选择“调整为最佳性能”单选框来关闭所有的视觉效果,也可选择“自定义”然后选择自己需要的视觉效果。(7)合理设置页面虚拟内存同样也是在“性能选项”对话框中,选择“高级”选项卡,在其中的“虚拟内存”栏中单击“更改”按钮,接下来选择虚拟内存为“自定义大小”,然后设置其数值。一般情况下,把虚拟设为不小于256M,不大于382M比较合适,而且最大值和最小值最好一样。(8)修改外观方案WindowsXP默认的外观方案虽然漂亮,但对系统资源的占用也多,可将其改为经典外观以获得更好的性能。在桌面空白位置单击鼠标右键,从弹出的快捷菜单中选择“属性”命令,会打开“显示属性”对话框,在“主题”选项卡选择主题为“Windows经典”,即可将外观修改为更为经济的Windows经典外观。(9)取消XP对ZIP支持WindowsXP在默认情况下打开了对zip文件支持,这要占用一定的系统资源,可选择“开始→运行”,在“运行”对话框中键入“regsvr32/uzipfldr.dll”,回车确认即可取消XP对ZIP解压缩的支持,从而节省系统资源。(10)关闭Dr.WatsonDr.Watson是WindowsXP的一个崩溃分析工具,它会在应用程序崩溃的时候自动弹出,并且在默认情况下,它会将与出错有关的内存保存为DUMP文件以供程序员分析。不过,记录DUMP文件对普通用户则毫无帮助,反而会带来很大的不便:由于Dr.Watson在应用程序崩溃时会对内存进行DUMP记录,将出现长时间硬盘读写操作,要很长一断时间程序才能关闭,并且DUMP文件还会占用大量磁盘空间。要关闭Dr.Watson可打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug”分支,双击其下的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就取消它的运行了。同样,我们可以把所有具备调试功能的选项取消,比如蓝屏时出现的memory.dmp,可在“系统属性”对话框中选择“高级”选项卡,单击“启动和故障恢复”栏中的“设置”按钮,并在弹出的“启动和故障恢复”对话框中选择“写入调试信息”为“无”(如图5)。(11)启动硬盘/光驱DMA模式打开“系统属性”对话框,选择“硬件”选择卡中的“设备管理器”按钮,打开“设备管理器”窗口,在设备列表中选择“IDEATA/ATAPI控制器”,双击“主要IDE通道”或“次要IDE通过”,在其属性对话框的“高级设置”选项卡中检查DMA模式是否已启动,一般来说如果设备支持,系统就会自动打开DMA功能,如果没有打开可将“传输模式”设为“DMA(若可用)”。(12)关掉不用的设备WindowsXP总是尽可能为电脑的所有设备安装驱动程序并进行管理,这不仅会减慢系统启动的速度,同时也造成了系统资源的大量占用。针对这一情况,你可在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,方法是双击要停用的设备,在其属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。在重新启动设置即可生效,当需要使用这些设备时再从设备管理器中启用它们。(13)关闭错误报告当应用程序出错时,会弹出发送错误报告的窗口,其实这样的错误报告对普通用户而言几乎没有任何意义,关闭它是明智的选择。在“系统属性”对话框中选择“高级”选项卡,单击“错误报告”按钮,在弹出的“错误汇报”对话框中,选择“禁用错误汇报”单选项,最后单击“确定”即可。另外我们也可以从组策略中关闭错误报告:从“运行”中键入“gpedit.msc”,运行“组策略编辑器”,展开“计算机配置→管理模板→系统→错误报告功能”,双击右边设置栏中的“报告错误”,在弹出的“属性”对话框中选择“已禁用”单选框即可将“报告错误”禁用。(14)关闭自动更新“自动更新”功能对许多WindowsXP用户而言并不是必需的,可将其关闭以节省系统资源。在“我的电脑”上单击鼠标右键,从快捷菜单中选择“属性”命令,选择“系统属性”对话框中的“自动更新”选项卡,勾选“关闭自动更新,我将手动更新计算机”单选框,单击“确定”按钮即可关闭自动更新功能。如果在“服务”已经将“AutomaticUpdates”服务关闭,“系统属性”对话框中的“自动更新”选项卡就不能进行任何设置了。(15)去掉菜单延迟去掉菜单弹出时的延迟,可以在一定程度上加快XP。要修改的键值位置在“HKEY_CURRENT_USER\ControlPanel\Desktop”。修改其下的“MenuShowDelay”键,把默认的400修改为0,按F5刷新注册表即可生效。(16)清除预读文件WindowsXP的预读设置虽然可以提高系统速度,但是使用一段时间后,预读文件夹里的文件数量会变得相当庞大,导致系统搜索花费的时间变长。而且有些应用程序会产生死链接文件,更加重了系统搜索的负担。所以,应该定期删除这些预读文件。预计文件存放在WindowsXP系统文件夹的Prefetch文件夹中,该文件夹下的所有文件均可删除。(17)关闭自动播放功能在WindowsXP中,当往光驱中放入光盘或将USB硬盘接上电脑时,系统都会自动将光驱或USB硬盘扫描一遍,同时提示你是否播放里面的图片、视频、音乐等文件,如果是拥有多个分区的大容量的USB硬盘,扫描会耗费很长的时间,而且你得多次手动关闭提示窗口,非常麻烦。这种情况下我们可以将WindowsXP的自动播放功能关闭。运行“组策略”程序。在组策略窗口左边栏中,打开“计算机配置”,选择“管理模板”下的“系统”,然后在右边的配置栏中找到“关闭自动播放”并双击它,会弹出“关闭自动播放属性”对话框。在其中“设置”选项卡中选择“已启用”,“关闭自动播放”下拉列表中选择“所有驱动器”(如图6)。这样以后就不用担心WindowsXP的“自动播放”功能带来的麻烦了。如果你只是想禁止系统扫描某个驱动器(如USB硬盘)上的文件,可采用下面的方法。先连上你的USB硬盘,让系统将它识别出来。然后打开“我的电脑”,选择USB硬盘上的某个分区,按鼠标右键,会弹出磁盘属性窗口,选取“自动播放”选项卡,将所有内容的类型都选择为不执行操作。如果USB硬盘有多个分区,对所有分区都进行同样的操作,这样当你将USB驱动器拔掉再重新接上时,系统会将USB硬盘识别出来,而不会反复问你是否播放USB硬盘中的文件了。3.加快关机速度WindowsXP的关机速度要慢于启动速度,特别有些任务还需要手工结束,更加延缓了关机速度。因此,要加快关机速度,首先要开启WindowsXP的自动结束任务功能。具体步骤是:从注册表中找到“HKEY_CURRENT_USER\ControlPanel\Desktop”,把“AutoEndTasks”的键值设置为1即可。然后再修改“HungAppTimeout”为“4000(或更小)”(预设为5000),该键值同样也在“HKEY_CURRENT_USER\ControlPanel\Desktop”下;最后一步再找到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\”,同样把WaitToKillServiceTimeout设置为“4000”;通过这样设置后的关机速度明显要加快了。够全面吧~~◆二、硬件优化设置◆1、关掉不用的设备
在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,在要停用设备属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。当需要使用这些设备时再从设备管理器中启用它们。◆2、内存性能优化
WindowsXP中有几个选项可以优化内存性能,它们全都在注册表下面位置:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession
ManagerMemory
Management
1)禁用内存页面调度(Paging
Executive)
XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。256M以上内存才使用这个设置。把“DisablePagingExecutive”的值从0改为1就可以禁止内存页面调度了。
2)提升系统缓存
必须有256M以上的内存,才激活它。把LargeSystemCache键值从0改为1,一般来说,这项优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。
3)输入/输出性能
内存大于256M才更改这里的值,这个优化只对server
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026云南红河州个旧市医疗卫生共同体贾沙分院招聘编外工作人员1人备考题库附答案详解ab卷
- 2026云南昆明市外国语学校招聘2人备考题库附答案详解ab卷
- 2026新疆准东能源投资(集团)有限公司 招(竞)聘7人备考题库及答案详解(各地真题)
- 2026四川雅安市雨城区公益性岗位招聘4人备考题库含答案详解
- 2026广西贵港市电子商务促进中心招募就业见习人员2人备考题库附答案详解(精练)
- 灌排工程工安全培训效果水平考核试卷含答案
- 煅白制备工冲突管理测试考核试卷含答案
- 美甲师安全知识模拟考核试卷含答案
- 电器附件装配工安全演练能力考核试卷含答案
- 2026届福清市福清华侨中学高二生物第一学期期末达标检测模拟试题含解析
- 2026中国电信四川公用信息产业有限责任公司社会成熟人才招聘备考题库及答案详解参考
- 南瑞9622型6kV变压器差动保护原理及现场校验实例培训课件
- 统编版(2024)七年级上册道德与法治期末复习必背知识点考点清单
- 2026年春节放假前员工安全培训
- (2025版)成人肺功能检查技术进展及临床应用指南解读课件
- 《春秋》讲解课件
- 青少年抑郁障碍的护理与康复训练
- 农业养殖认养协议书
- T-CAPC 019-2025 零售药店常见轻微病症健康管理规范
- 康定情歌音乐鉴赏
- 2025年四川省解除(终止)劳动合同证明书模板
评论
0/150
提交评论