先祝贺你选择学习Linux,你可能即将踏上Linux的工作之旅,出发之前,让我带你来看一看关于Linux和Linux运维的一切。来源于——公众号:马哥linux运维
Linux因其高效率、易于裁剪、应用广等优势,成为了当今中高端服务器的主要 *** 作系统,并且处于一个不可替代的地位。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。随着Linux在中国市场迅猛发展,国内Linux人才缺口逐渐凸显。Linux人才招聘也成了当前最热门的招聘之一。
首先linux是一个非常非常大的概念。想全部吃透是不可能的。理想的说,搞懂linux,就可以做所有工作。个人更倾向于说想做什么样工作,需要学linux的哪部分。
按个人经验介绍下常见的linux有哪些领域,并对应到什么工作。
1)linux应用。这部分严格来说不能算是linux,只是跑在linux上的应用,比如web,网络,IT等,职业包括系统研发,后台开发,服务器性能优化,运维等;
2)linux定制。这部分涉及linux版本的用户包较多,内核会有一些涉及,主要各种商业linux的订制,服务等。比如redhat之类,不少是外国公司,国内大多招现场支持等。
3)linux内核开发。这部分主要是linux内核驱动的开发。几乎全部是编程工作。主要是芯片公司,以及使用芯片的产品开发公司。前者如intel,marvell,后者如中兴华为。
4)android衍生品。因为android包括慢慢火爆的tizen都用的linux内核,所以理由同3。所以手机芯片公司和手机开发公司也是linux开发者的雇主之一。比如高通,TI等;
一、Linux运维的主要工作内容
Linux运维作为众多工作中需求人数最多,薪资待遇最高的岗位,本文重点介绍Linux运维的职业,本文内容由专门研究Linux运维学习和职业发展的机构马哥教育和爱好者们联合撰写。
互联网Linux运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够7×24小时为用户提供高质量的服务。运维的职责覆盖了产品从设计到发布、运行维护、变更升级及至下线的生命周期。
产品的整个生命周期里运维的职责重要而广泛,但运维工程师们的职责不仅限于这部分工作,还需要总结工作中遇到的问题,抽取出相关的技术方向、研发相关的工具和平台以支持/优化业务的发展并提高运维的效率,相关技术工作主要包括:
服务监控技术:包括监控平台的研发、应用,服务监控准确性、实时性、全面性的保障
服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性
服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作
服务性能优化:从各个方向,包括网络优化、 *** 作系统优化、应用优化、客户端优化等,提高服务的性能和响应速度,改善用户体验
服务全局流量调度:接入服务的流量,根据容量和服务状态在各个机房间分配流量
服务任务调度:服务的各种定时/非定时任务的调度触发及状态监控
服务安全保障:包括服务的访问安全、防攻击、权限控制等
数据传输技术:包括p2p等各类传输技术的研发应用,也远距离大数据传输等问题的解决
服务自动发布部署:部署平台/工具的研发,及平台/工具的使用,做到安全、高效的发布服务
服务集群管理:包括服务的服务器管理、大规模集群管理等
服务成本优化:尽可能降低服务运行使用的资源,降低服务运行成本
数据库管理(DBA):通过设计、开发和管理高性能数据库集群,使数据库服务更稳定、更高效、更易于管理。
平台化的开发:类docker等平台的开发管理,及服务接入技术
分布式存储平台的开发优化与接入
等等,凡是关系到服务质量、效率、成本、安全等方面的工作,及涉及到的技术、组件、工具、平台都在运维的技术范畴里。做好每一个技术方向、完成相应的组件、工具、平台研发都能对履行运维职责起到积极的作用,对业务的发展发挥关键影响。
二、Linux运维工作分类
运维的工作方向比较多,随着业务规模的不断发展,越成熟的互联网公司,运维岗位会划分得越细。当前很多大型的互联网公司,在初创时期只有系统运维,随着 模、服务质量的 要求,也逐渐进行了工作细分。一般情况下运维团队的工作分类(见图1-1)和职责如下。
图1-1 运维团队的工作分类
21-应用运维(SRE):应用运维负责线上服务的变更、服务状态监控、服务容灾和数据备份等工作,对服务进行例行排查、故障应急处理等工作,工作职责如下:设计评审、服务管理、资源管理、例行检查、预案管理、数据备份。
22-系统运维(SYS):负责IDC、网络、CDN和基础服务的建设(LVS、NTP、DNS);负责资产管理,服务器选型、交付和维修,工作职责如下:IDC数据中心建设、网络建设、LVS负载均衡和SNAT建设、CDN规划和建设、服务器选型、交付和维护、内核选型和OS相关维护工作、资产管理、基础服务建设。
23-数据库运维(DBA):数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,对数据库进行变更、监控、备份、高可用设计等工作,详细的工作内容如下:设计评审、容量规划、数据备份与灾备、数据库监控、数据库安全、数据库高可用和性能优化、自动化系统建设、运维研发、运维平台、监控系统、自动化部署系统。
24-运维安全(SEC):运维安全负责网络、系统和业务等方面的安全加固工作,进行常规的安全扫描、渗透测试,进行安全工具和系统研发以及安全事件应急处理,工作内容如下:安全制度建立、安全培训、风险评估、安全建设、安全合规、应急响应。
三、Linux运维日常使用软件和技能
运维工程师使用的运维平台和工具包括:
Web服务器:apache、tomcat、nginx、lig>
监控:nagios、ganglia、cacti、zabbix
自动部署:ansible、sshpt、salt
配置管理:puppet、cfengine
负载均衡:lvs、haproxy、nginx
传输工具:scribe、flume
备份工具:rsync、wget
数据库:mysql、oracle、sqlserver
分布式平台:hdfs、mapreduce、spark、storm、hive
分布式数据库:hbase、cassandra、redis、MongoDB
容器:lxc、docker
虚拟化:openstack、xen、kvm
安全:kerberos、selinux、acl、iptables
问题追查:netstat、top、tcpdump、last
运维以技术为基础,通过技术保障产品提供更高质量的服务。运维工作的职责及在业务中的位置决定了运维工程师需要具备更加广博的知识和深入的技术能力:
扎实的计算机基础知识,包括计算机系统架构, *** 作系统,网络技术等;
通用应用方面需要了解 *** 作系统、网络、安全,存储,CDN,DB等,知道其相关原理;
编程能力,小到运维工具的开发大到大型运维系统/平台的开发都需要有良好的编程能力;
数据分析能力:能够整理、分析系统运行的各项数据,从中发现问题及找到解决方向;
丰富的系统知识,包括系统工具、典型系统架构、常见的平台选型等;
综合利用工具和平台的能力;
四、Linux运维工作发展过程
早期的运维团队在人员较少的情况下,主要是进行数据中心建设、基础网络建设、服务器采购和服务器安装交付工作。几乎很少涉及线上服务的变更、监控、管理等工作。这个时候的运维团队更多的属于基础建设的角色,提供一个简单、可用的网络环境和系统环境即可。
随着业务产品的逐渐成熟,对于服务质量方面就有了更高的要求。这个时候的运维团队还会承担一些服务器监控的工作,同时会负责LVS、Nginx等与业务逻辑无关的4/7层运维工作。这个时候服务变更更多的是逐台的手工 *** 作,或者有一些简单批量脚本的出现。监控的焦点更多的在服务器状态和资源使用情况上,对服务应用状态的监控几乎很少,监控更多的使用各种开源系统如Nagios、Cacti等。
由于业务规模和复杂度的持续增加,运维团队会逐渐划分为应用运维和系统运维两大块。应用运维开始接手线上业务,逐步开展服务监控梳理、数据备份以及服务变更的工作。随着对服务的深入,应用运维工程师有能力开始对服务进行一些简单的优化。同时,为了应对每天大量的服务变更,我们也开始编写各类运维工具,针对某些特定的服务能够很方便的批量变更。随着业务规模的增大,基础设施由于容量规划不足或抵御风险能力较弱导致的故障也越来越多,迫使运维人员开始将更多的精力投入到多数据中心容灾、预案管理的方向上。
业务规模达到一定程度后,开源的监控系统在性能和功能方面,已经无法满足业务需求;大量的服务变更、复杂的服务关系,以前靠人工记录、工具变更的方式不管在效率还是准确性方面也都无法满足业务需求;在安全方面也出现了各种大大小小的事件,迫使我们投入更多的精力在安全防御上。逐渐的,运维团队形成之前提到的5个大的工作分类,每个分类都需要有专精的人才。这个时候系统运维更专注于基础设施的建设和运维,提供稳定、高效的网络环境,交付服务器等资源给应用运维工程师。应用运维更专注于服务运行状态和效率。数据库运维属于应用运维工作的细化,更专注于数据库领域的自动化、性能优化和安全防御。运维研发和运维安全提供各类平台、工具,进一步提升运维工程师的工作效率,使业务服务运行得更加稳定、高效和安全。
我们将运维发展过程划分为4个阶段,如图1-2所示。
图1-2 运维发展过程
手工管理阶段:业务流量不大,服务器数量相对较少,系统复杂度不高。对于日常的业务管理 *** 作,大家更多的是逐台登录服务器进行手工 *** 作,属于各自为战,每个人都有自己的 *** 作方式,缺少必要的 *** 作标准、流程机制,比如业务目录环境都是各式各样的。
工具批量 *** 作阶段:随着服务器规模、系统复杂度的增加,全人工的 *** 作方式已经不能满足业务的快速发展需要。因此,运维人员逐渐开始使用批量化的 *** 作工具,针对不同 *** 作类型出现了不同的脚本程序。但各团队都有自己的工具,每次 *** 作需求发生变化时都需要调整工具。这主要是因为对于环境、 *** 作的规范不够,导致可程序化处理能力较弱。此时,虽然效率提升了一部分,但很快又遇到了瓶颈。 *** 作的质量并没有太多的提升,甚至可能因为批量执行而导致更大规模的问题出现。我们开始建立大量的流程规范,比如复查机制,先上线一台服务器观察10分钟后再继续后面的 *** 作,一次升级完成后至少要观察20分钟等。这些主要还是靠人来监督和执行,但在实际过程中执行往往不到位,反而降低了工作效率。
平台管理阶段:在这个阶段,对于运维效率和误 *** 作率有了更高的要求,我们决定开始建设运维平台,通过平台承载标准、流程,进而解放人力和提高质量。这个时候对服务的变更动作进行了抽象,形成了 *** 作方法、服务目录环境、服务运行方式等统一的标准,如程序的启停接口必须包括启动、停止、重载等。通过平台来约束 *** 作流程,如上面提到的上线一台服务器观察10分钟。在平台中强制设定暂停检查点,在第一台服务器 *** 作完成后,需要运维人员填写相应的检查项,然后才可以继续执行后续的部署动作。
系统自调度阶段:更大规模的服务数量、更复杂的服务关联关系、各个运维平台的林立,原有的将批量 *** 作转化成平台 *** 作的方式已经不再适合,需要对服务变更进行更高一层的抽象。将每一台服务器抽象成一个容器,由调度系统根据资源使用情况,将服务调度、部署到合适的服务器上,自动化完成与周边各个运维系统的联动,比如监控系统、日志系统、备份系统等。通过自调度系统,根据服务运行情况动态伸缩容量,能够自动化处理常见的服务故障。运维人员的工作也会前置到产品设计阶段,协助研发人员改造服务使其可以接入到自调度系统中。
在整个运维的发展过程中,希望所有的工作都自动化起来,减少人的重复工作,降低知识传递的成本,使我们的运维交付更高效、更安全,使产品运行更稳定。对于故障的处理,也希望由事后处理变成提前发现,由人工处理变成系统自动容灾。
五、2018年Linux运维必须抓住的前沿技能
这是技术世界正在发生的深刻变革的冰山一角,那么问题来了 作为传统的运维该如何转型呢
这里给出一点小的建议: 大致需要学习下这四个部分:
自动化运维(Ansible,Puppet,Saltstack等)
Devops(Docker,K8s,Jenkins,Jira等),
云服务技术(虚拟化、OpenStack、AWS及阿里云各种产品服务架构等)
python
问题一:服务器装什么系统好 这要看你服务矗做什么用了推荐Ubuntu Server 这个默认是命令行界面,需要手动安装图形化界面
Linux的话 红帽也很好用
另外Windows Server 2008也不错
希望采纳,如有不懂请追问。。
问题二:做网站用那种系统做服务器最好?为什么? 网站用什么服务器取决于你用什么语言开发网站: htm网站,用什么 *** 作系统都支持 例如这样的: fnc asp网站 需要用windows2000或者windows2003 网站 需要用windows2000或者windows2003 php网站 需要linux、unix系统、windows2000或者windows2003 (跨平台语言) JSP网站 需要linux、unix系统、windows2000或者windows2003(跨平台语言)
问题三:什么系统最适合服务器? 如今有越来越多的企业主选择运行他们自己的专用服务器来帮助降低运营成本。运作自己专用的服务器与从托管提供商按月租赁服务器相比有很多好处。不过我们接下来就要考虑需要安装来运行专用服务器的 *** 作系统的问题了。Linux还是Window专用服务器?这不是一个说使用Linux或者Window *** 作系统的文章。笔者只是要衡量每款Linux或者Window *** 作系统的优势,以便我们能对安装何种 *** 作系统做出明智的决定。Linux *** 作系统价格--Linux *** 作系统的价格更加低廉,因为它是开放源码的,这就意味着你可以安装 *** 作系统中所有的选项。Linux *** 作系统能吸引大量的服务器管理员,因为它无需软件的许可证授权费用。脚本支持--Linux可以支持PHP, MySQL和Perl编程语言。而另一方面Windows系统则不能支持这些语言。如果你打算或者正在你的网站上使用这些脚本或者代码,那么使用Windows *** 作系统的话就无法正常工作。脚本在不同平台上不是都兼容的。转化--很多服务器技术人员在将他们的网站在Windows上进行转换会碰到一些Linux软件不会遭遇的问题。但是将网站转化为Windows平台是比较简单和灵活的。Windows *** 作系统价格--由于Windows系统不是开源 *** 作系统,因此价格比Linux系统要贵的多。根据你决定使用的 *** 作系统类型不同,需要花费数百到数千美元不等。NET技术支持--微软开发的NET技术是很有意义的,Windows *** 作系统可以为其提供支持。另一方面Linux系统则无法支持NET技术。支持微软数据库--基于专用服务器的Windows *** 作系统可以支持Microsoft Access或者Microsoft SQL。这些数据库在Linux专用服务器下是无法运行的。为了判断那款 *** 作系统适用于你的专用服务器,认真规划好网站的研发和布局是至关重要的。制定好你要在硬件和每月费用上花费的预算。在Linux和Windows *** 作系统之间进行选择确实是个个人偏好的问题,咨询你的研发人员来了解那种代码语言更加适合使用是最好的。请记住如果你决定使用Windows *** 作系统,你需要为许可证授权支付更多的费用。关于服务器的话题,你是否很感兴趣?下面列举了一些的精彩话题:===============================================================服务器固态硬盘如何挑选?搭建文件服务器需要注意什么
问题四:服务器用什么系统好? 正如我们所知道的,租用服务器对于一个中小型规模的企业来说成本是非常昂贵的。如今有越来越多的企业主选择运行他们自己的专用服务器来帮助降低运营成本。运作自己专用的服务器与从托管提供商按月租赁服务器相比有很多好处。不过我们接下来就要考虑需要安装来运行专用服务器的 *** 作系统的问题了。Linux还是Window专用服务器?这不是一个说使用Linux或者Window *** 作系统的文章。笔者只是要衡量每款Linux或者Window *** 作系统的优势,以便我们能对安装何种 *** 作系统做出明智的决定。Linux *** 作系统价格--Linux *** 作系统的价格更加低廉,因为它是开放源码的,这就意味着你可以安装 *** 作系统中所有的选项。Linux *** 作系统能吸引大量的服务器管理员,因为它无需软件的许可证授权费用。脚本支持--Linux可以支持PHP, MySQL和Perl编程语言。而另一方面Windows系统则不能支持这些语言。如果你打算或者正在你的网站上使用这些脚本或者代码,那么使用Windows *** 作系统的话就无法正常工作。脚本在不同平台上不是都兼容的。转化--很多服务器技术人员在将他们的网站在Windows上进行转换会碰到一些Linux软件不会遭遇的问题。但是将网站转化为Windows平台是比较简单和灵活的。Windows *** 作系统价格--由于Windows系统不是开源 *** 作系统,因此价格比Linux系统要贵的多。根据你憨定使用的 *** 作系统类型不同,需要花费数百到数千美元不等。NET技术支持--微软开发的NET技术是很有意义的,Windows *** 作系统可以为其提供支持。另一方面Linux系统则无法支持NET技术。支持微软数据库--基于专用服务器的Windows *** 作系统可以支持Microsoft Access或者Microsoft SQL。这些数据库在Linux专用服务器下是无法运行的。为了判断那款 *** 作系统适用于你的专用服务器,认真规划好网站的研发和布局是至关重要的。制定好你要在硬件和每月费用上花费的预算。在Linux和Windows *** 作系统之间进行选择确实是个个人偏好的问题,咨询你的研发人员来了解那种代码语言更加适合使用是最好的。请记住如果你决定使用Windows *** 作系统,你需要为许可证授权支付更多的费用。关于服务器的话题,你是否很感兴趣?下面列举了一些的精彩话题:===============================================================服务器固态硬盘如何挑选?搭建文件服务器需要注意什么不同磁带库数据备份不兼容怎么办?如何保障云的数据安全?怎么部署固态存储什么是最佳的存储方案数据中心容量的飙升怎么办主存储系统怎么数据缩减选购虚拟主机需要注意什么固态硬盘掉电数据丢失怎么办架设网络服务器应该注意什么?如何使用最佳实践分析器测试服务器角色?
问题五:服务器系统重装需要注意哪些? 1先把把计算机名,IIS设置域的名称开放的服务网关设置做个记录。
2备份非系统文件到其他存储设备,如u盘,光盘,甚至网盘。
3重新启动系统,进入bios,设置光驱第一个启动
4准备win98启动软盘或光盘,服务器系统安装盘。
5用win98启动盘格式化C盘,命令行format C:
6重新启动系统,插入服务器系统安装盘。
7按提示安装系统
8安装系统、设置计算机名,IIS设置域的名称开放的服务网关设置
9重启。
问题六:服务器系统怎么做?怎么一般的系统不行么? 你好朋友;
现在服务器 *** 作系统主流的就是;
windows server 2003对应的是个人电脑用的xp系统;
windows server 2008对应的是个人电脑用的vista系统;
windows server 2008 r2对应的是个人电脑用的win7系统;
还有就是服务器用的linux系统;
如果你用一般个人电脑的 *** 作系统也可以;就是安装好系统服务器就变成个人电脑了;就发挥不了服务器本来的性能了;另外现在的服务器都不用windows 2000 server了;这个系统是过去的系统;现在微软公司早就已经停止对各种版本的2000系统的技术支持了;这样你用2000顶统不管是哪个版本;也不管是你是服务器还是个人电脑上网都不安全;所以还是用win2003或2008吧
问题七:现在最流行的服务器 *** 作系统是什么。 目前局域网中主要存在以下几类网络 *** 作系统:
1 Windows类
对于这类 *** 作系统相信用过电脑的人都不会陌生,这是全球最大的软件开发商--Microsoft(微软)公司开发的。微软公司的Windows系统不仅在个人 *** 作系统中占有绝对优势,它在网络 *** 作系统中也是具有非常强劲的力量。这类 *** 作系统配置在整个局域网配置中是最常见的,但由于它对服务器的硬件要求较高,且稳定性能不是很高,所以微软的网络 *** 作系统一般只是用在中低档服务器中,高端服务器通常采用UNIX、LINUX或Solairs等非Windows *** 作系统。在局域网中,微软的网络 *** 作系统主要有:Windows NT 40 Serve、Windows 2000 Server/Advance Server,以及最新的Windows 2003 Server/ Advance Server等,工作站系统可以采用任一Windows或非Windows *** 作系统,包括个人 *** 作系统,如Windows 9x/ME/XP等。
在整个Windows网络 *** 作系统中最为成功的还是要算了Windows NT40这一套系统,它几乎成为中、小型企业局域网的标准 *** 作系统,一则是它继承了Windows家族统一的界面,使用户学习、使用起来更加容易。再则它的功能也的确比较强大,基本上能满足所有中、小型企业的各项网络求。虽然相比Windows 2000/2003 Server系统来说在功能上要逊色许多,但它对服务器的硬件配置要求要低许多,可以更大程度上满足许多中、小企业的PC服务器配置需求。
2 NetWare类
NetWare *** 作系统虽然远不如早几年那么风光,在局域网中早已失去了当年雄霸一方的气势,但是NetWare *** 作系统仍以对网络硬件的要求较低(工作站只要是286机就可以了)而受到一些设备比较落后的中、小型企业,特别是学校的青睐。人们一时还忘不了它在无盘工作站组建方面的优势,还忘不了它那毫无过份需求的大度。且因为它兼容DOS命令,其应用环境与DOS相似,经过长时间的发展,具有相当丰富的应用软件支持,技术完善、可靠。目前常用的版本有311、312和410 、V411,V50等中英文版本,NetWare服务器对无盘站和游戏的支持较好,常用于教学网和游戏厅。目前这种 *** 作系统有市场占有率呈下降趋势,这部分的市场主要被Windows NT/2000和Linux系统瓜分了。
3 Unix系统
目前常用的UNIX系统版本主要有:Unix SUR40、HP-UX 110,SUN的Solaris80等。支持网络文件系统服务,提供数据等应用,功能强大,由AT&T和SCO公司推出。这种网络 *** 作系统稳定和安全性能非常好,但由于它多数是以命令方式来进行 *** 作的,不容易掌握,特别是初级用户。正因如此,小型局域网基本不使用Unix作为网络 *** 作系统,UNIX一般用于大型的网站或大型的企、事业局域网中。UNIX网络 *** 作系统历史悠久,其良好的网络管理功能已为广大网络 用户所接受,拥有丰富的应用软件的支持。目前UNIX网络 *** 作系统的版本 有:AT&T和SCO的UNIXSVR32、SVR40和SVR42等。UNIX本是针对小型机 主机环境开发的 *** 作系统,是一种集中式分时多用户体系结构。因其体系 结构不够合理,UNIX的市场占有率呈下降趋势。
4 Linux
这是一种新型的网络 *** 作系统,它的最大的特点就是源代码开放,可以免费得到许多应用程序>>
问题八:装什么服务器系统好? 楼主
您好,很高兴为您解答
若是做交易平台类型的网站,建议您安装linux系统,因为linux系统在安全方面做的比win系统到位,而且在硬件设备方面也能节省资源的,但前提是需要您对linux系统 *** 作熟练,因为linux系统现在还没有普及,大多对linux系统不是很专业,若对linux系统不熟悉,后期 *** 作可能会存在一些技术性问题的
希望能帮到您,如果有服务器租用及托管相关方面问题可以找我
问题九:服务器装什么系统好? 正如我们所知道的,租用服务器对于一个中小型规模的企业来说成本是非常昂贵的。如今有越来越多的企业主选择运行他们自己的专用服务器来帮助降低运营成本。
运作自己专用的服务器与从托管提供商按月租赁服务器相比有很多好处。不过我们接下来就要考虑需要安装来运行专用服务器的 *** 作系统的问题了。
Linux还是Window专用服务器?
这不是一个说使用Linux或者Window *** 作系统的文章。笔者只是要衡量每款Linux或者Window *** 作系统的优势,以便我们能对安装何种 *** 作系统做出明智的决定。
Linux *** 作系统
价格--Linux *** 作系统的价格更加低廉,因为它是开放源码的,这就意味着你可以安装 *** 作系统中所有的选项。Linux *** 作系统能吸引大量的服务器管理员,因为它无需软件的许可证授权费用。
脚本支持--Linux可以支持PHP, MySQL和Perl编程语言。而另一方面Windows系统则不能支持这些语言。如果你打算或者正在你的网站上使用这些脚本或者代码,那么使用Windows *** 作系统的话就无法正常工作。脚本在不同平台上不是都兼容的。
转化--很多服务器技术人员在将他们的网站在Windows上进行转换会碰到一些Linux软件不会遭遇的问题。但是将网站转化为Windows平台是比较简单和灵活的。
Windows *** 作系统
价格--由于Windows系统不是开源 *** 作系统,因此价格比Linux系统要贵的多。根据你决定使用的 *** 作系统类型不同,需要花费数百到数千美元不等。
NET技术支持--微软开发的NET技术是很有意义的,Windows *** 作系统可以为其提供支持。另一方面Linux系统则无法支持NET技术。
支持微软数据库--基于专用服务器的Windows *** 作系统可以支持Microsoft Access或者Microsoft SQL。这些数据库在Linux专用服务器下是无法运行的。
为了判断那款 *** 作系统适用于你的专用服务器,认真规划好网站的研发和布局是至关重要的。制定好你要在硬件和每月费用上花费的预算。在Linux和Windows *** 作系统之间进行选择确实是个个人偏好的问题,咨询你的研发人员来了解那种代码语言更加适合使用是最好的。请记住如果你决定使用Windows *** 作系统,你需要为许可证授权支付更多的费用。
问题十:服务器windows系统哪个版本的好 您好,这个没有什么好不好的,看你要管理的机器吧,如果是用于域的管理的话,下面的机器如果是xp系统则使用windows server 2003 如果是windows 7 则使用 windows server 2008 ,windows 8 则是使用windows server 2012 ,如果不是作为域管理控制器,只是用于服务,那看机器配置吧,建议2008 服务还是做的好一些。希望可以帮助到你!内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。对于整个 *** 作系统来说,内存可能是最麻烦的的设备。而其性能的好坏直接影响着整个 *** 作系统。
我们知道CPU是不能与硬盘打交道的,只有数据被载入到内存中才可以被CPU调用。cpu在访问内存的时候需要先像内存监控程序请求,由监控程序控制和分配内存的读写请求,这个监控程序叫做MMU(内存管理单元)。下面以32位系统来说明内存的访问过程:
32位的系统上每一个进程在访问内存的时候,每一个进程都当做自己有4个G的内存空间可用,这叫虚拟内存(地址),虚拟内存转化成物理内存是通过MMU来完成的。为了能够从线性地址转换成物理地址,需要page table(页表)的内存空间,page table要载入到MMU上。为了完成线性地址到物理地址的映射,如果按照1个字节1个字节映射的话,需要一张非常大的表,这种转换关系会非常的复杂。因此把内存空间又划分成了另外一种存储单元格式,通常为4K。在不同的硬件平台上,它们的大小一般是不一样的,像x86 32位的有4k的页;而64位的有4k页,2M页,4M页,8M页等等,默认都是4k的。每一个进程一般而言都有自己的页路径和页表映射机制,不管那一个页表都是由内核加载的。每一个进程只能看到自己的线性地址空间,想要增加新的内存的时候,只能在自己的线性地址空间中申请,并且申请后一定是通过 *** 作系统的内核映射到物理地址空间中去找那么一段空间,并且告诉线性地址空间准备好了,可以访问,并且在page table中增加一条映射关系,于是就可以访问物理内存了,这种叫做内存分配。但是新的申请一定是通过 *** 作的内核到物理内存中去找那么一段空间,并且告诉线性地址空间好了,可以建设映射关系,最终page table建立映射关系。
这反映了上述描述过程的大体情况。可以看到每一个用户程序都会有自己的页表,并且映射到对应的主存储器上去。
根据上述文字和图表的描述可以发现2个问题:
1每个进程如果需要访问内存的时候都需要去查找page table的话,势必会造成服务器的性能底下
2如果主存储器的内存满了以后,应用程序还需要调用内存的时候怎么办
对于第一个问题,我们就需要借助TLB(Translation Lookaside Buffer)翻译后备缓冲器。TLB是一个内存管理单元,它可以用于改进虚拟地址到物理地址转换速度的缓存。这样每次在查找page table的时候就可以先去TLB中查找相应的页表数据,如果有就直接返回,没有再去查找page table,并把查找到的结果缓存中TLB中。TLB虽然解决了缓存的功能,但是在那么page table中查找映射关系仍然很慢,所以又有了page table的分级目录。page table可以分为1级目录,2级目录和偏移量
但是一个进程在运行的时候要频繁的打开文件,关闭文件。这就意味着要频繁的申请内存和释放内存。有些能够在内存中缓存数据的那些进程,他们对内存的分配和回收更多,那么每一次分配都会在页表中建立一个对应项。所以,就算内存的速度很快,大量频繁的同一时间分配和释放内存,依然会降低服务器的整体性能。当然内存空间不够用的时候,我们称为oom(out of memory,内存耗尽)。当内存耗尽的时候,,整个 *** 作系统挂了。这种情况下我们可以考虑交换分区,交换分区毕竟是由硬盘虚拟出来的内存,所以其性能与真正的内存相比,差了很多,所以要尽力避免使用交换分区。有物理内存空间的时候尽量保证全部使用物理内存。cpu无论如何是不能给交换内存打交道的,它也只能给物理内存打交道,能寻址的空间也只能是物理内存。所以当真正物理内存空间不够用的时候,会通过LRU算法把其中最近最少使用的内存放到交换内存中去,这样物理内存中的那段空间就可以供新的程序使用了。但是这样会引发另外的一个问题,即原来的进程通过page table寻找的时候,那一段空间的数据已经不属于它了。所以此刻cpu发送通知或者异常告诉这个程序,这个地址空间已不属于它,这个时候可能会出现2种情况:
1物理内存有可用的空间可用:这个时候cpu会根据以前的转换策略会把交换分区中的那段内存重新送到物理内存中去,但是转换过来的空间地址不一定会是以前的那一段空间地址,因为以前的那一段空间地址可能已经被别人使用了。
2物理内存没有可用的空间可用:这个时候依然会使用LRU算发把当前物理地址空间上最近最少使用的空间地址转换到交换内存中去,并把当前进程需要的这断在交换空间中的内存送到物理内存空间中去,并且重新建立映射关系。
上述通知或者异常出现的情况,通常叫做缺页异常。缺页异常也分为大异常和小异常两种。大异常就是访问的数据内存中没有,不的不去硬盘上加载,无论是从交换内存中还是直接从磁盘的某个文件系统上,反正需要从硬盘上去加载,这种异常加载需要很长时间。小异常就是进程之间通过共享内存,第二个进程访问的时候,查看本地的内存映射表没有,但是其它进程已经拥有了这个内存页,所以可以直接映射,这种异常加载需要的时间一般很短。
在 *** 作系统开机的时候,每一个io设备都会像cpu申请一些列的随机端口,这种端口叫做io端口。在IBM PC体系结构中,I/O地址空间一共提供了65,536个8位的I/O端口。正是这些io端口的存在,cpu可以与io设备进行读写交互的过程。在执行读写 *** 作时,CPU使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传送数据。I/O端口还可以被映射到物理地址空间:因此,处理器和I/O设备之间的通信就可以直接使用对内存进行 *** 作的汇编语言指令(例如,mov、and、or等等)。现代的硬件设备更倾向于映射I/O,因为这样处理的速度较快,并可以和DMA结合起来使用。这样io在和内存传数据的时候就不需要通过cpu,cpu把总线的控制权交给DMA,每次io传数据的时候就调用DMA一次,就把cpu给解放了出来。当数据传输完了以后,DMA通知给cpu中断一次。DMA在运行的时候对整个总线有控制权限,当cpu发现有其它进程需要使用总线的时候,二者就会产生争用。这个时候,在总线控制权的使用上,CPU和DMA具有相等的权限。只要CPU委托给了DMA,就不能随意的收回这个委托,就要等待DMA的用完。
如果没有其它进程可以运行,或者其它进程运行的时间非常短,这个时候CPU发现我们的IO仍然没有完成,那就意味着,CPU只能等待IO了。CPU在时间分配里面有个iowait的值,就是CPU在等待IO花费的时间。有些是在同步调用过程中,CPU必须要等待IO的完成;否者CPU可以释放IO的传输在背后自动完成,CPU自己去处理其它的事情。等硬盘数据传输完成以后,硬盘只需要像CPU发起一个通知即可。CPU外围有一种设备,这个设备叫做可编程中断控制器。每一个硬件设备为了给CPU通信,在刚开机的时候,在BIOS实现检测的时候,这个设备就要到可编程中断控制器上去注册一个所谓的中断号。那么这个号码就归这个硬件使用了。当前主机上可能有多个硬件,每一个硬件都有自己的号码,CPU在收到中断号以后,就能够通过中断相量表查找到那个硬件设备进行中断。并且就由对应的IO端口过来处理了。
CPU正在运行其它进程,当一个中断请求发过来的时候,CPU会立即终止当前正在处理的进程,而去处理中断。当前CPU挂起当前正在处理的进程,转而去执行中断的过程,也叫做中断切换。只不过,这种切换在量级别上比进程切换要低一些,而且任何中断的优先级通常比任何进程也要高,因为我们指的是硬件中断。中断还分为上半部和下半部,一般而言,上半部就是CPU在处理的时候,把它接进来,放到内存中,如果这个事情不是特别紧急(CPU或者内核会自己判断),因此在这种情况下,CPU回到现场继续执行刚才挂起的进程,当这个进程处理完了,再回过头来执行中断的下半部分。
在32位系统中,我们的内存(线性地址)地址空间中,一般而言,低地址空间有一个G是给内核使用的,上面3个G是给进程使用的。但是应该明白,其实在内核内存当中,再往下,不是直接这样划分的。32位系统和64位系统可能不一样(物理地址),在32位系统中,最低端有那么10多M的空间是给DMA使用的。DNA的总线宽度是很小的,可能只有几位,所以寻址能力很有限,访问的内存空间也就很有限。如果DMA需要复制数据,而且自己能够寻址物理内存,还可以把数据直接壮哉进内存中去,那么就必须保证DMA能够寻址那段内存才行。寻址的前提就是把最低地址断M,DA的寻址范围内的那一段给了DMA。所以站在这个角度来说,我们的内存管理是分区域的。
在32位系统上,16M的内存空间给了ZONE_DMA(DMA使用的物理地址空间);从16M到896M给了ZONE_NORMAL(正常物理地址空间),对于Linux *** 作系统来说,是内核可以直接访问的地址空间;从896M到1G这断空间叫做"Reserved"(预留的物理地址空间);从1G到4G的这段物理地址空间中,我们的内核是不能直接访问的,要想访问必须把其中的一段内容映射到Reserved来,在Reserved中保留出那一段内存的地址编码,我们内核才能上去访问,所以内核不直接访问大于1G的物理地址空间。所以在32位系统上,它访问内存当中的数据,中间是需要一个额外步骤的。
在64位系统上,ZONE_DAM给了低端的1G地址空间,这个时候DMA的寻址能力被大大加强了;ZONE_DAM32可以使用4G的空间;而大于1G以上给划分了ZONE_NORMAL,这段空间都可以被内核直接访问。所以在64位上,内核访问大于1G的内存地址,就不需要额外的步骤了,效率和性能上也大大增加,这也就是为什么要使用64位系统的原因。
在现在的PC架构上,AMD,INTER都支持一种机制,叫做PEA(物理地址扩展)。所谓PAE。指的是在32位系统的地址总线上,又扩展了4位,使得32位系统上的地址空间可以达到64G。当然在32为系统上,不管你的物理内存有多大,单个进程所使用的空间是无法扩展的。因为在32位的系统上,线性地址空间只有4个G,而单个进程能够识别的访问也只有3个G。
linux的虚拟内存子系统包含了以下几个功能模块:
slab allocator,zoned buddy allocator,MMU,kswapd,bdflush
slab allocator叫做slab分配器
buddy allocator又叫做buddy system,叫做伙伴系统,也是一种内存分配器
buddy system是工作在MMU之上的,而slab allocator又是工作在buddy system之上的。
设置为小于等于1G,在数据库服务器应该劲量避免使用交换内存
3在应用服务器上,可以设置为RAM05,当然这个是理论值
如果不的不使用交换内存,应该把交换内存放到最靠外的磁道分区上,因为最外边的磁盘的访问速度最快。所以如果有多块硬盘,可以把每块硬盘的最外层的磁道拿一小部分出来作为交换分区。交换分区可以定义优先级,因此把这些硬盘的交换内存的优先级设置为一样,可以实现负载均衡的效果。定义交换分区优先级的方法为编辑/etc/fstab:
/dev/sda1 swap swap pri=5 0 0
/dev/sdb1 swap swap pri=5 0 0
/dev/sdc1 swap swap pri=5 0 0
/dev/sdd1 swap swap pri=5 0 0
四内存耗尽时候的相关调优参数
当Linux内存耗尽的时候,它会杀死那些占用内存最多的进程,以下三种情况会杀死进程:
1所有的进程都是活动进程,这个时候想交换出去都没有空闲的进程
2没有可用的page页在ZONE_NORMAL中
3有其它新进程启动,申请内存空间的时候,要找一个空闲内存给做映射,但是这个时候找不到了
一旦内存耗尽的时候, *** 作系统就会启用oom-kill机制。
在/proc/PID/目录下有一个文件叫做oom_score,就是用来指定oom的评分的,就是坏蛋指数。
如果要手动启用oom-kill机制的话,只需要执行echo f>/proc/sysrq-trigger即可,它会自动杀掉我们指定的坏蛋指数评分最高的那个进程
可以通过echo n > /proc/PID/oom_adj来调整一个进程的坏蛋评分指数。最终的评分指数就是2的oom_adj的值的N次方。假如我们的一个进程的oom_adj的值是5,那么它的坏蛋评分指数就是2的5次方。
如果想禁止oom-kill功能的使用可以使用vmpanic_on_oom=1即可。
五与容量有关的内存调优参数:
overcommit_memory,可用参数有3个,规定是否能够过量使用内存:
0:默认设置,内核执行启发式的过量使用处理
1:内核执行无内存的过量使用处理。使用这个值会增大内存超载的可能性
2:内存的使用量等于swap的大小+RAMovercommit_ratio的值。如果希望减小内存的过度使用,这个值是最安全的
overcommit_ratio:将overcommit_memory指定为2时候,提供的物理RAM比例,默认为50
六与通信相关的调优参数
常见在同一个主机中进行进程间通信的方式:
1通过消息message;2通过signal信号量进行通信;3通过共享内存进行通信,跨主机常见的通信方式是rpc
以消息的方式实现进程通信的调优方案:
msgmax:以字节为单位规定消息队列中任意消息的最大允许大小。这个值一定不能超过该队列的大小(msgmnb),默认值为65536
msgmnb:以字节为单位规定单一消息队列的最大值(最大长度)。默认为65536字节
msgmni:规定消息队列识别符的最大数量(及队列的最大数量)。64位架构机器的默认值为1985;32位架构机器的默认值为1736
以共享内存方式实现进程通信的调优方案:
shmall:以字节为单位规定一次在该系统中可以使用的共享内存总量(单次申请的上限)
shmmax:以字节为单位规定每一个共享内存片段的最大大小
shmmni:规定系统范围内最大共享内存片段。在64和32位的系统上默认值都是4096
七与容量相关的文件系统可调优参数:
file-max:列出内核分配的文件句柄的最大值
dirty_ratio:规定百分比值,当脏数据达到系统内存总数的这个百分比值后开始执行pdflush,默认为20
dirty_background_ratio:规定百分比值,当某一个进程自己所占用的脏页比例达到系统内存总数的这个百分比值后开始在后台执行pdflush,默认为10
dirty_expire_centisecs:pdlush每隔百分之一秒的时间开启起来刷新脏页,默认值为3000,所以每隔30秒起来开始刷新脏页
dirty_writeback_centisecs:每隔百分之一秒开始刷新单个脏页。默认值为500,所以一个脏页的存在时间达到了5秒,就开始刷新脏
八linux内存常用的观察指标命令:
Memory activity
vmstat [interval] [count]
sar -r [interval] [count]
Rate of change in memory
sar -R [interval] [count]
frmpg/s:每秒释放或者分配的内存页,如果为正数,则为释放的内存页;如果为负数,则为分配的内存页
bufpg/s:每秒buffer中获得或者释放的内存页。如果为正数则为获得的内存页,为负数。则为释放的内存页
campg/s:每秒cache中获得或者释放的内存页。如果为正数则为获得的内存页,为负数。则为释放的内存页
Swap activity
sar -W [interval] [count]
ALL IO
sar -B [interval] [count]
pgpgin/s:每秒从磁盘写入到内核的块数量
pgpgout/s:每秒从内核写入到磁盘的块数量
fault/s:每秒钟出现的缺页异常的个数
majflt/s:每秒钟出现的大页异常的个数
pgfree/s:每秒回收回来的页面个数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)