文章目录
计算机基础和Linux安装
内容概述
- 计算机系统
- 计算机硬件组成
- 操作系统
- Linux相关介绍
- Linux哲学思想
- 获取Linux
- 虚拟机
- Linux 安装
本章开篇,我们先来聊聊计算机系统的那些事儿。我们的运维课程,可是紧紧围绕着计算机系统来展开的。那么,计算机系统到底是啥?它都由哪些部分组成呢?别急,接下来我们就给大家详细介绍一下。
说到计算机,硬件可是个绕不开的话题。虽然我们运维工程师现在对服务器硬件的关注度逐渐降低了,但这毕竟是基础知识,还是得了解一下。毕竟,在某些生产环境中,我们可能还是会接触到硬件服务器。不过,现在有个趋势就是,随着云计算的发展,我们越来越不太关注硬件了。很多公司,特别是中小公司,都全面采用了云环境,比如阿里云、华为云、腾讯云等,物理服务器都看不见了。所以,硬件方面的知识我们虽然不像以前那么重视,但作为常识,还是得掌握的。
接下来,我们聊聊操作系统的概念。Linux,大家应该都听说过吧,它跟Windows一样,都是操作系统的一种。那么,操作系统都有哪些类型呢?为什么我们要选择学习Linux,而不是Windows呢?Linux作为运维的核心基础组件,它有很多版本,而且它的哲学思想、原则都非常优秀,这也是为什么Linux这么受欢迎,为什么我们在运维中频繁使用Linux,而较少使用其他操作系统的原因。
学习Linux,肯定得安装部署吧。理论上,装操作系统得拿一台计算机来装。如果要装两个操作系统,那是不是得买两台计算机呢?其实不用。在学习期间,我们可能会运行10多个,甚至20、30个Linux操作系统,构成一种网络架构。如果按照刚才的理论,那我们岂不是要买10来台机器才能做实验?为了降低学习难度,我们采用了虚拟机这种方式。虚拟机可以大大降低我们学习Linux的成本,而且非常灵活。想增加硬件、软件?都可以用软件的方式来模拟出来,这样既节约成本,又方便实用。
有了虚拟机这个软件之后,我们就可以在上面安装Linux了。这就是本章我们要学习的内容。
1.计算机系统
计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。
计算机有很多形式,比如:生活中常见的家用电脑、笔记本、智能手机、平板电脑等,还有生产环境中提供重要业务支撑的各种服务器(Server),都算是计算机。
其中一个完整的计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成。
图1-1 计算机系统的组成
首先,我们来探讨第一个概念——计算机系统。提及计算机系统,就不得不先问问,什么是计算机呢?计算机的专业英文术语是Computer,而在日常生活中,我们很多人习惯称它为“电脑”。简单来说,电脑就像是一个带电的、能像人一样思考的大脑。那么,这台“带电的大脑”究竟能解决什么问题呢?
大家都知道,生活中有许多具体的工作,传统上都是靠人力来完成的。人力完成这些工作既辛苦,又可能让人心生厌倦。如果不想干,可以找人来帮忙,但别人凭什么帮你呢?在过去,统治阶级可能会通过武力或其他手段来奴役普通人完成这些工作。然而,在现代社会,我们不再希望出现这种现象。于是,计算机应运而生,它能够代替人力去完成那些相对重复且简单的工作,并且能高效、高质量地完成。这些事情,计算机都能帮我们自动实现,从而大大减轻了人的工作量。那些琐事、杂事、重复性的工作,都不再需要人工去完成,而是由计算机代劳。这样,人类的工作就得到了解放,这是一个非常美好的目标。
当然,说到计算机,大家可能首先想到的是笔记本电脑或台式机。但实际上,计算机的表现形态远不止于此。比如,我们现在的手机也是一台计算机。手机里的组件和普通电脑的组件其实非常相似,都有CPU、内存、硬盘等。因此,计算机的表现形式并不仅限于电脑、台式机或笔记本电脑。智能手机、平板电脑,甚至家里的智能设备,如小爱同学音响、扫地机器人、智能摄像头等,这些都带有智能处理芯片,都可以归入计算机的领域。计算机的表现形式可谓是丰富多彩。
而我们运维的工作,就是管理这些各种各样的计算机,让它们能够协同工作,产生具体的工作成果。一台计算机要代替人工去完成一些事情,就像人一样,需要具备一些相关的组成部分。一个人要完成工作,需要大脑来思考、四肢来干活,可能还需要五官来接受和发出信息等。计算机也一样,它有类似的组件。
一个完整的计算机,简单来说,可以分为硬件和软件两部分。你可以把一台计算机想象成一个人,计算机的目标就是代替人工来完成工作,所以计算机就像一个智能化的人。如果把计算机的硬件和软件与人相比较,硬件就相当于人的肉体,没有肉体,什么都干不了;而软件则相当于人的灵魂,一个人没有灵魂,也同样什么都干不了。
硬件是我们看得见、摸得着的东西,比如计算机的屏幕,拆开后的各种芯片、CPU、内存等,这些都是硬件。但还有一些不是实体的东西,它们是一些逻辑上的存在,这就是软件。就像一个人的思维、灵魂、精神等,这些都是不可见的,但它们确实影响着我们的思考。在计算机里,这种类似“灵魂”的东西就是我们所说的软件。
软件又分为核心的系统软件和各种应用软件。在我们的电脑里,大家都安装了各种软件。比如,至少得先装一个操作系统,如Windows、Mac或Linux。有了操作系统之后,可以再安装其他软件。比如,喜欢打游戏可以装个游戏软件,想开会可以装个腾讯会议,想聊天可以装个微信或QQ。这些就是应用软件。
对于一个系统来说,硬件是基础,但最核心的是它的软件系统。大家都知道,人和人之间最大的差别不在于肉体上。虽然每个人的身体或许有差别,但影响你社会地位的不是你肉体的强大,而是你的思维。同样地,计算机之间的差别也在软件方面,软件才是最关键的。而我们运维的课程重点就在软件上。当然,硬件你也得了解,因为没有硬件也就谈不上软件了。但软件是我们学习的重点。学运维,实际上就是要学习各种软件,从底层的操作系统开始,到后期的各种服务、各种应用,我们要学的内容很多。
1.1 计算机硬件
计算机发展历史:
- 第一代计算机(1946-1957):电子管时代。这一时期的计算机,主要元件是庞大的电子管,它们体积巨大,运算速度相对缓慢,且能耗较高。然而,这些初露锋芒的电子计算机,却为人类计算技术带来了前所未有的突破,为后续的计算机发展铺设了坚实的基石,开启了计算机科学的新篇章。
- 第二代计算机(1958-1964):晶体管时代。随着晶体管的发明和广泛应用,计算机迎来了革命性的变革。晶体管取代了电子管,使得计算机体积大幅缩小,运算速度显著提升,同时能耗也大大降低。这一代计算机的出现,不仅提高了计算机的性能,也为计算机在更多领域的应用开辟了新的道路。
- 第三代计算机(1965-1970):集成电路时代。集成电路技术的兴起,使得计算机内部的元件数量急剧增加,而体积却进一步减小。这一代计算机的运算速度更快,可靠性更高,为科研、工业、军事等领域提供了强大的计算支持。集成电路的应用,标志着计算机技术又迈上了一个新的台阶。
- 第四代计算机(1971以后):大规模集成电路时代。随着大规模集成电路技术的日益成熟,计算机的性能实现了质的飞跃。这一代计算机不仅运算速度极快,而且体积小巧、功耗低,易于普及和推广。它们的广泛应用,极大地推动了信息化社会的发展进程,改变了人们的生活方式和工作模式,让计算机成为了现代社会不可或缺的重要工具。
1.1.1 世界上第一台电子计算机
图1-2 世界上第一台电子计算机ENIAC
1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算机)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算。
图1-2展示的是世界上第一台真正意义上的计算机。在早期,虽然也有一些类似计算机的工具,比如中国古代的算盘,它能代替人进行计算,但并不能算作真正的计算机。直到1946年,世界上第一台真正的计算机诞生了。您看到的这张图片中,一面墙大小的设备就是一台计算机。这台计算机最初是为了计算弹道导弹的轨迹而发明的。弹道导弹的计算涉及非常复杂的数学运算,虽然人工也能完成,但速度太慢,效率太低。因此,在1946年,这台革命性的计算机应运而生。当时,这台计算机的成本高达40多万美金,但它的计算速度相当可观,每秒钟能进行5000次计算。当然,以现在的标准来看,这个速度已经慢得无法比拟,但在当时,与人相比,它的效率要高得多。想象一下,人一秒能计算几次?对那个年代来说,这台计算机无疑是一个划时代的产品。发展到今天,我们手中的小小手机,其性能已经远远超越了世界上第一台计算机。
1.1.2 冯·诺依曼体系结构
图1-3 冯·诺依曼体系
1946年美籍匈牙利数学家John von Neumann(约翰·冯·诺依曼)于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。
冯·诺依曼体系的要点是:
- 数字计算机的数制采用二进制,bit 位, byte 字节,1 byte =8 bit(1个字节等于8位)。
- 计算机应该按照程序顺序执行。
- 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。
计算机的硬件五个组件:
- 控制器:指挥系统。
- 运算器:数学和逻辑运算。
- 存储器:存储信息。
- 输入设备:接收外部信息。
- 输出设备:输出计算机内部信息到外部设备。
不论是我们世界上的第一台计算机,还是现今的各式计算机,都遵循着一个名为冯·诺依曼的体系架构。这一体系,自1946年首台计算机诞生以来,便成为了所有计算机的基本工作原理。冯·诺依曼,这位美籍匈牙利的数学家,正是这一体系的提出者。他的这一创举,主要包含以下几个核心要点:
首先,计算机内部采用二进制方式进行数据处理。这一概念在当时堪称颠覆性,因为人们日常生活中更习惯于使用十进制。所谓进制,就是当数值达到某一特定数(如n)时,便需升位。十进制即是逢十升位,比如从9变到10,就需从个位数升为两位数。而二进制则是逢二升位,仅有0和1,当数值达到2时,便需升位变为10(在二进制中代表2)。同理,还有八进制、十六进制等,八进制即逢八升位,十六进制则是逢十六升位,用A表示10,B表示11,依此类推,F表示15,当数值达到16时,便需升位为10(在十六进制中表示)。虽然计算机内部以二进制运作,但它在工作时,能将处理结果转化为人们易懂的文字或十进制数字。
其次,计算机执行操作时,是按照预先设定的逻辑顺序来进行的。这一顺序由程序员编写的程序决定,告诉计算机第一步做什么,第二步做什么,以此类推。计算机的智能,实则源于人们预先灌输给它的这些逻辑程序,它并非天生聪明,而是按照人的指令来执行任务。
再者,计算机的硬件由五个主要部分组成:运算器、控制器、存储器、输入设备和输出设备。控制器就像人的大脑,指挥着计算机内部的各个硬件协同工作;运算器则负责进行加减乘除等基本数学运算,这是计算机最基础的功能。控制器和运算器在计算机中通常被集成在一起,形成了我们常说的CPU。存储器则用于存储信息,就像人的记忆力一样。它分为内存和硬盘两类,内存是短期记忆,断电即失;而硬盘则是长期记忆,数据可以持久保存。输入设备如键盘、鼠标等,用于将外部信息输入计算机;输出设备如屏幕、声卡等,则用于将计算机处理后的结果输出给外部世界。
总而言之,冯·诺依曼体系架构以其简洁而高效的设计理念,奠定了现代计算机的基础。从二进制的数据处理方式,到预设的逻辑执行顺序,再到硬件的五个主要组成部分,这一体系架构无不彰显着人类的智慧与创造力。
图1-4 John von Neumann(约翰·冯·诺依曼)
图1-4展示的正是赫赫有名的约翰·冯·诺依曼先生。关于他的详细介绍,可以访问维基百科:https://zh.wikipedia.org/wiki/约翰·冯诺伊曼,该页面详尽地阐述了冯·诺依曼的生平与成就。
图1-5 早期计算机系统的输入设备:穿孔纸带
在早期,编写程序可不像现在这么便捷,那时靠的是纸带。这纸带上有着一排排的小孔,有孔的地方代表1,没孔的地方就是0。程序员们得把这些纸带一个个拼接起来,形成一串串的0101组合。然后,把这串组合送进计算机里,计算机通过读取这些孔,把有孔的地方识别为1,没孔的地方识别为0,这样就把0101的指令读进去了,从而知道程序员想要它做什么。
大家可以想象一下,那时的程序员每天的工作就是在纸带上打孔。当然,他们手头肯定有个手册,告诉哪个0101组合代表加,哪个代表减,他们得根据这个手册来做转换,然后把转换好的纸带送给计算机去处理。所以,早期的程序员工作可是相当辛苦的。
万一出了错,比如本来应该是0或者1的地方,不小心多打了一个孔,那这条纸带就作废了。总不能每次都浪费吧?为了修正这个错误,程序员们就得想办法把那个多打的孔补上。他们就用胶水,把那个小孔给粘上。粘上以后,那里就没孔了,也就不是1了。所以,早期的程序员手上经常都是胶水,他们的工作和学习环境可比现在糟糕多了。
现在,我们只需要在键盘上轻松敲几个字母,程序就写好了。而在以前,编写程序可是全靠这纸带一点点完成的。
图1-6 早期程序员的工作环境
图1-6就是早期程序员工作的环境。
1.1.2.1 二进制和其它进制介绍
基于电路设计的复杂性和成本考虑,对于当前计算机来讲,是基于二进制来处理数据的(未来或许不是这样,如量子计算机)。比如可以用高低电平,磁极的正反,光照的有无等分别表示1和0,相对其它进制更容易实现,成本也更低。
进制 | 数值表示 | 英文 | 简写 | 特性 |
---|---|---|---|---|
二进制 | 0、1 | Binary | BIN或B | 逢二进一 |
八进制 | 0、1、2、3、 4、5、6、7 | Octal | OCT或O | 逢八进一 |
十进制 | 0、1、2、3、4、5、6、7、8、9 | Decimal | DEC或D | 逢十进一 |
十六进制 | 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F | Hexadecimal | HEX或H | 逢十六进一 |
表1-1 常见进制数值表示和特性
那么什么是二进制呢?二进制英文称为binary,但平时生活中我们更多的习惯使用十进制,比如我们表示0、1、2,直到9,共十个数字,表示个位数。当想表示十时,就是向前(高位)进一位,变成10,即升了一位。所以所谓十进制即逢十进位。
同理二进制即个位数只有两种值:0和1,当表示二这个数值时,二进制就需要进位,变成10,即逢二就要进位。所以尤其在计算机技术资料中,我们看到10时,要提前说明是几进制,才能确定表达的最终结果。当然有时也会使用其它进制,如八进制(Octal,缩写OCT或O),十六进制(Hexadecimal,缩写HEX或H)。
八进制即逢八进位,个位数有0、1、2、3、4、5、6、7,八个数字,当想表示十进制的八时,就需要进位,变成10了。
同样的十六进制,个位数有0-9,分别表示零到九,但十以后的数值如何表示呢?答案是字母A、B、C、D、E、F来表示十到十五。当然要表示十六,逢十六进一,即升位了,变成10,即十六进制的十六。
1.1.2.2 常用进制转换
在计算机中,二进制是比较常用的,但生活中十进制用的更为普遍。所以经常需要我们做二进制和十进制如何相互转换,那如何实现呢?
因为二进制表示值时,会显示的位比较多,所以我们一般只需要了解最多八个二进制和十进制的相互转换即可。
为了方便转换,可以记住表1-2 常见二进制和十进制对应关系表中对于的数字,可以加快转换效率。
公式 | 十进制 | 二进制 |
---|---|---|
2^0 | 1 | 1 |
2^1 | 2 | 10 |
2^2 | 4 | 100 |
2^3 | 8 | 1000 |
2^4 | 16 | 10000 |
2^5 | 32 | 100000 |
2^6 | 64 | 1000000 |
2^7 | 128 | 10000000 |
2^8 | 256 | 100000000 |
2^9 | 512 | 1000000000 |
2^10 | 1024 | 10000000000 |
2^11 | 2048 | 100000000000 |
2^12 | 4096 | 1000000000000 |
表1-2 常见二进制和十进制对应关系表
-
十进制转换成二进制,有两种方法。
方法1,是除法实现,也是最传统的方法。
范例1:将十进制的172转换成二进制
图1-7 用除法将十进制的172转换成二进制
把十进制转换成二进制最简单的写法就是除法,比方说172是个十进制,我现在要把它转换成二进制,172除2是86,没有余数,就是
0,86除2是43余数为0,43除2是21余数1,21除2是10余数1,10除2是5余数0,5除2是2余数1,2除2是1余数0,最终结果从下往上
就是10101100,但这个除法我们平时在计算机里面不太常用,因为算起来太麻烦,容易算错了。
方法2,用减法实现,也是推荐的方法,不过需要记忆一些常见的数字的对应关系,如表1-2常见二进制和十进制对应关系表。
范例2:将十进制的172转换成二进制
图1-8 用减法将十进制的172转换成二进制
计算机二进制它其实就是计算机2的几次方,我们把这几个数字记下来就行,2的0次方就是1,2的2次方就是2,2的3次方是8,一直
到2的12次方是4096,现在我们要把172转换成二进制怎么转,你可以用减法,172哪个是比它近又稍微偏小的数字,就是128,而
128这个数字是2的7次方,而2的7次方它对应的二进制就是10000000,172减128就是44,44离的最近的就是32,32的二进制是
100000,44减32就是12,12里的最近的是8,8的二进制是1000,12减8就是4,4的二进制是100,把得到的二进制全加起来,得到
的就是10101100。
-
二进制转换成十进制,可以用以下方式:
范例3:将二进制10101111转换成十进制
图1-9 将二进制10101111转换成十进制
把二进制10101111转换成十进制,从前往后是1*27+0*26+1*25+0*24+1*23+1*22+1*21+1*20,然后转成十进制相加就
是128+0+32 +0+8+4+2+1,这些相加结果就是十进制的175。
范例4:使用linux命令bc进行十进制和二进制的转换
[root@rocky9 ~]# bc
-bash: bc: command not found
# Rocky默认没有安装bc命令
# 安装bc命令
[root@rocky9 ~]# dnf -y install bc
[root@rocky9 ~]# bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
# 默认是十进制,要转换成二进制输入obase=2,o就是output输出的意思,output base=2就是输出的时候是基于二进制的,简写obase=2就是输出的时候是基于二进制的,obase=2输完回车,意思是等你输入十进制,输出的结果是二进制。
obase=2
# 输入十进制168。
168
# 得出二进制的结果。
10101000
# quit退出bc命令。
quit
[root@rocky9 ~]# bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
# ibase=2是输入二进制得出十进制。
ibase=2
# 输入二进制1010。
1010
# 得出十进制的结果。
10
quit
范例5: 不同进制转换
# 十进制转二进制:
[root@rocky9 ~]# echo "obase=2;255" | bc
11111111
# 八进制转十进制:
[root@rocky9 ~]# echo "obase=10;ibase=8;377" | bc
255
# 二进制转十进制:
[root@rocky9 ~]# echo "obase=10;ibase=2;11111111" | bc
255
#二进制转16进制:
[root@rocky9 ~]# echo "obase=16;ibase=2;11111111" | bc
FF
# 注意前后顺序
[root@rocky9 ~]# echo "ibase=2;obase=16;11111111" | bc
100110
1.1.2.3 常见单位
- 10的36次方 X
- 10的33次方 C
- 10的30次方 D
- 10的27次方 N
- 10的24次方 B
- 10的21次方 Y
- 10的18次方 E
- 10的15次方 P
- 10的12次方 T 二进制 2^40
- 10的 9次方 G 二进制 2^30
- 10的 6次方 M 二进制 2^20
- 10的 3次方 K 二进制 2^10=1024
- 10的 2次方 百
- 10的 1次方 十
- 10的-1次方 d 分
- 10的-2次方 c 厘
- 10的-3次方 m 毫秒
- 10的-6次方 μ 微秒
- 10的-9次方 n 纳秒
- 10的-12次方 p
- 10的-15次方 f
- 10的-18次方 a
在计算机中经常用来表示数据的大小和数量,而使用bit(位)和byte(字节)太小了。就像生活中只有个位数是无法很好的表达更多的数据一样。于是对应的需要有更大的计量单位。
另外在相同的场景下,相同的单位所使用的进制是不同的。硬盘制造商在标注硬盘容量时采用十进制,比如1TB,即1012个字节,而操作系统中在识别容量时,却是以二进制为单位,比如同样1TB的文件,即240个字节,所以如果购买厂商标称为1T的硬盘,而在操作系统查看时只能看到1012/230≈931G大小。
具体单位如表1-3 常见单位所示。
单位 | 简写 | 二进制 | 二进制转换 | 十进制 | 十进制转换 |
---|---|---|---|---|---|
Kilo | K | 2^10 | 1024 | 10^3 | 1000 |
Mega | M | 2^20 | 1024K | 10^6 | 1000K |
Giga | G | 2^30 | 1024M | 10^9 | 1000M |
Tera | T | 2^40 | 1024G | 10^12 | 1000G |
Peta | P | 2^50 | 1024T | 10^15 | 1000T |
Exa | E | 2^60 | 1024P | 10^18 | 1000P |
Zetta | Z | 2^70 | 1024E | 10^21 | 1000E |
Yotta | Y | 2^80 | 1024Z | 10^24 | 1000Z |
Bronto | B | 2^90 | 1024Y | 10^27 | 1000Y |
Nona | N | 2^100 | 1024B | 10^30 | 1000B |
Dogga | D | 2^110 | 1024N | 10^33 | 1000N |
Corydon | C | 2^120 | 1024D | 10^36 | 1000D |
Xero | X | 2^130 | 1024C | 10^39 | 1000C |
表1-3 常见单位
在计算机领域,我们时常会碰到一个频繁出现的单位——K。实际上,这个K有着两种不同的含义。一种是以10为底,进行三次方运算,即103,它所代表的是十进制的1000;另一种则是以2为底,进行十次方运算,即210,它所对应的是十进制的1024。尽管这两种含义都被简称为K,但它们的数值之间却存在着24的差异。在不同的应用场合中,K所代表的具体数值会有所不同。比如,在描述文件大小时,我们常说的64KB中的K,其指的就是1024。
范例6:确定当前系统是32位或64位
目前,主流操作系统已全面迈向64位时代,32位系统已逐渐淡出舞台。64位与32位系统的核心差异之一,在于它们所能支持的最大内存容量。具体而言,32位操作系统的内存支持上限为2的32次方,即4GB内存。这意味着,如果您的服务器运行的是32位系统,那么它最多只能识别并利用4GB内存。换言之,倘若您的电脑配备了8GB内存,却安装了32位操作系统,那么有4GB内存将无法被系统识别和利用,这无疑是一种巨大的资源浪费。因此,随着技术的发展,32位系统已逐渐被淘汰,现今我们广泛使用的均是64位操作系统。
# getconf LONG_BIT查看当前的linux系统是多少位的
[root@rocky9 ~]# getconf LONG_BIT
64
[root@rhel5 ~]# getconf LONG_BIT
32
[root@rocky9 ~]# arch
x86_64
[root@rhel5 ~]# arch
i686
1.1.3 摩尔定律
由英特尔(Intel)创始人之一Gordon Moore(戈登·摩尔)于1965年提出,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。
戈登·摩尔 - 维基百科:https://zh.wikipedia.org/wiki/高登·摩爾,前面是维基百科对戈登·摩尔的详细介绍。
图1-10 摩尔定律
摩尔定律,这一与硬件发展紧密相关的规律,是由英特尔公司的创始人戈登·摩尔在1965年提出的。他指出,在价格保持不变的情况下,集成电路上可容纳的元器件数量大约每18到24个月,也就是将近两年的时间,就会翻一番,同时性能也会提升一倍。自1965年提出以来,这一规律一直相当准确,计算机的性能确实每隔两年就会翻倍。因此,我们的计算机速度提升得非常快,快到什么程度呢?快到计算机的性能已经有些过剩了。
无论是家里的电脑,还是单位的服务器,我们经常会发现它们的资源利用率很低,CPU常常处于闲置状态。很多企业花费高昂价格购买的服务器,长期统计下来,CPU利用率只有百分之十几,二十几都算是好的了,很多时候利用率甚至只有百分之几。大家有没有想过,买了这么高端的服务器、这么好的硬件,结果长期利用率却这么低,这是不是一种巨大的资源浪费?
因此,我们当前之所以要大力发展云技术,推动虚拟化技术的应用,就是为了解决这个问题。实现虚拟化、云技术,可以让资源实现动态分配。将来,我们需要的时候,可以随时开启这些计算机;不需要的时候,可以动态地将其关闭,从而大大节约成本。
1.1.4 计算机分类
1.1.4.1 按规模划分
-
超级计算机:Super Computer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型机的运算速度可达每秒百万亿次以上, “天河一号”为我国首台千万亿次超级计算机。
-
大型计算机:具有较高的运算速度,每秒可以执行几千万条指令,而且有较大的存储空间。往往用于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe。
-
小型计算机:指采用精简指令集处理器,性能和价格介于PC服务器和大型主机之间的一种高性能64 位计算机。在中国,小型机习惯上用来指UNIX服务器。
-
微型计算机:指采用 X86 CPU 架构的PC服务器,中央处理器(CPU)采用微处理器芯片,体积小巧轻便,广泛用于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理,互联网公司发起去IOE运动,代替小型机。
计算机按照规模大小,可以分为超级计算机等类别。超级计算机,那对我们来说可谓遥不可及,它们都是国家级别的重大项目,比如天河一号、曙光等,这些超级计算机通常用于特定场合,像天气预报的计算、病毒分析等。这类计算机,我们一般企业是用不到的。
接下来是大型计算机,这类计算机价格昂贵,属于商业产品范畴。要购置这样一台计算机,需要花费不菲的成本。目前,全球大型计算机的生产厂商几乎只剩IBM一家,其他企业要么无法生产,要么竞争力不足。IBM的大型计算机中,有一款名为z13的主机设备,价格同样不菲。而且,这台设备体积相当庞大,差不多有两扇门那么大,就像一个大柜子,里面装着大型计算机。这样的设备,价格动辄上亿,一年的服务费都可能高达千万。由于应用圈子较小,它主要被用于特定机构,如银行等,我们平时很难见到,也不具备通用性。
早期还有小型机,其性能相当不错,能满足一般商业机构的需求,比如电信、传统银行以及早期的互联网公司都曾使用过。但小型机的价格也非常昂贵,动辄几十万甚至上百万。特别是互联网大潮涌来后,需要应对大量用户的访问,就不得不购置大量的小型计算机。而每台机器的价格都那么高,且很多硬件和软件都是商业软件,需要统一购买。比如,买了IBM的小型机,可能上面的系统和软件都是IBM的,这样一来,整个商业系统的成本就非常高昂,不利于大规模采购。对于业务庞大、用户遍布全球的互联网公司来说,这样的成本负担是非常重的。因此,我们现在已经摒弃了小型机的方式,转而采用微型计算机,也就是PC服务器。
目前,PC服务器是比较主流的选择。由于摩尔定律的作用,早期PC服务器的性能可能略逊于小型机,但经过多年发展,每两年性能就翻一番,现在的PC服务器性能已经非常出色,而且价格也相对便宜,几千块钱就能买到一台。微型服务器,也就是我们常说的PC服务器,是目前的主流选择。不过,互联网公司在使用过程中,除了硬件问题,还遇到了一些软件问题。比如早期,互联网公司可能会采用一些商业软件,像Oracle数据库,价格就非常昂贵。因此,现在大部分互联网公司都开始采用开源的解决方案,即所谓“去IOE”。这里的“I”指的是IBM的小型机,“O”是Oracle的数据库,“E”是EMC的存储,这些都是商业产品,价格昂贵。为了节约成本,互联网公司选择摒弃这些商业解决方案,而采用开源的解决方案,比如使用开源数据库Mysql、开源存储解决方案CEPH等,甚至定制PC服务器的架构。像一些大公司,它们的硬件都是定制的。比如谷歌公司,它的服务器都不是我们常见的那种,而是放在集装箱里的各种定制服务器。这种全新的架构,颠覆了早期的商业产品,大大减轻了互联网公司的成本和负担。
1.1.4.2 按功能和角色划分
服务器和客户机
服务器:即 Server,计算机的一种,通常是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务。
客户机:即 Client,向服务器提出请求,需要服务器为之提供相应的服务和支持的计算机。
说起来,服务器其实并不是特指某一类硬件,而是一个角色的称谓。在英文中,服务器被称为Server,与之相对的是客户端Client,通常我们将其简称为C/S结构,其中C代表客户端,S则代表服务端。所谓服务器,就是那些对外提供服务的计算机;而客户端,则是向服务器发出请求,以满足自身需求的计算机。
服务器通常不会仅为单一客户提供服务,而是会同时响应多个用户的请求,这意味着其用户数量通常较多。如果我们使用普通的计算机来承担服务器的功能,可能会因为性能不足而无法满足需求。因此,作为服务器角色的计算机,其性能要求相对较高,配置也需要更为出色,比如内存要更大,CPU要更强劲。
然而,大家需要明确的是,服务器仅仅是一个角色定位,并不直接等同于高性能。服务器的性能好坏,很大程度上取决于其配置情况。有钱的话,配置自然可以更好一些;资金有限的话,配置可能就会稍逊一筹。所以,并不是说只要是服务器,其硬件配置就一定很出色。当然,既然要承担服务器的功能,那么其配置肯定是不会差的,这样才能确保提供更好的服务。
服务器按应用功能可分为:
Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、监控服务器、程序版本控制服务器、虚拟机服务器、邮件服务器、打印服务器、域控制服务器、多媒体服务器、通讯服务器、ERP服务器等。
图1-11 服务架构图
服务器能够提供多种软件服务,比如,有的服务器专注于提供Web服务。说到Web服务,我们最常见的例子就是网站。比如,当我们现在访问一个博客时,博客的背后其实是在一个Linux系统上运行的,这个系统上安装了一个名为Nginx的软件,而Nginx就是一个Web服务软件。当然,除了Web服务,背后还有数据库等支持。此外,还有很多其他类型的服务器,如数据库服务器、文件服务器等。图1-11所展示的服务架构图,实际上就是我们各种服务器的组合:有负责调度的服务器,有存储数据的数据库服务器,有解析域名的DNS服务器,有时间同步的NTP服务器,有镜像管理的Harbor服务器,有容器编排的k8s服务器,有管理节点的服务器,还有各种用于缓存的服务器。
1.1.4.3 服务器按外形分类
PC 服务器常见的三种外型:
- 塔式服务器
- 刀片式服务器
- 机架式服务器
塔式Tower服务器
图1-12 塔式服务器
图1-13 塔式服务器
早期的服务器形式,目前较少使用。
外形以及结构和平时使用的立式PC差不多。
机箱空间大,主板扩展性较强,插槽较多。
预留了足够的内部空间,以便日后进行硬盘和电源的冗余扩展,设计一般都考虑降噪。
在生产环境中,我们所接触到的服务器大多为PC服务器。这类PC服务器,其常见形态可以划分为三种。第一种是塔式服务器,它的外观与我们日常使用的家用电脑颇为相似,只是体积更为庞大。由于塔式服务器的长宽高等尺寸并不统一,每台机器买回来可能大小都不尽相同,这使得它并不适合进行大规模的安装部署。因为若要在机房里整齐摆放,尺寸不一的服务器会很难合理利用空间。因此,我们通常更倾向于选择下面将要介绍的,那些具有标准尺寸的服务器类型。
刀片式Blade服务器
图1-14 刀片式服务器
在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度。
更高的密度,集中管理,高性能,灵活扩展,按需配置。
可以使用系统软件将这些母板集合成一个服务器集群。在集群模式下,所有的母板可以连接起来提供高速的网络环境,并同时共享资源,为相同的用户群服务。
图1-14展示的是刀片式服务器。所谓刀片式服务器,形象地说,就像一个铁壳子里面能装进很多“刀片”。每一个“刀片”都内置了CPU、内存和硬盘。大家看图1-14,虽然细节不是特别清晰,但可以看到那一条条的就是服务器单元,里面装了很多这样的“刀片”。这意味着在有限且狭窄的空间里,我们放置了多台不同的计算机。
这些计算机以刀片的形式紧密排列,密度非常大,重量也不轻。它们采用了一种非常狭窄、非常紧密的布局方式。这种设计的好处在于,它极大地节约了空间,让我们能在有限的地方放置如此多的机器。
通过这种方式,我们可以将多台计算机组合成一个集群。这个集群能够共同对外提供高性能的计算服务。虽然这种应用场景相对较少,但其独特的优势和高效性使得它在特定领域发挥着重要作用。
机架式Rack服务器
图1-15 机架式服务器和机柜
图1-16 42U容量机柜
- 按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位,1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器。
- 机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器。
- 机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高2000mm(42U)。
- 现阶段是最主流的的服务器。
目前,在企业环境中,机架式服务器是更为常见的选择。机架式服务器遵循统一的尺寸标准,这里涉及到一个“U”的概念。那么,1U到底有多大呢?实际上,U是一个具有标准尺寸的度量单位,具体为44.45毫米,大约就是不到5厘米的样子。这个U,指的是服务器的厚度。因此,2U大概就是10厘米,4U则更厚。在企业中,通常使用2U或4U的服务器较多。自然,服务器越厚,内部能装载的组件就越多,而硬件配置越高,其价格也就相对更昂贵。
值得注意的是,U不仅仅关乎厚度,服务器的宽度和长度也都有标准尺寸。正因如此,我们可以按照这些标准尺寸,定制出统一的机架。图1-15右侧展示的就是一个机架,其高度大约2米,宽度则略宽于机架式服务器。安装时,服务器就像抽屉一样,通过导轨被轻松推进机架中。这样,一个机架内可以放置多个服务器,就像一层层抽屉一样整齐排列。
机架能容纳的服务器数量,与服务器的U数密切相关。1U的服务器自然能放更多,而4U的则相对较少。通常情况下,2U的服务器,一个机架能放置10来个,这是比较常见的配置。当然,我们并不会把机架塞得满满当当,因为那样可能会影响电力供应和通风散热。因此,机架内通常会预留一定的空间。
图1-16展示的是一个42U的机架,其宽度为600毫米,深度1米,高度2米,这些都是标准尺寸。这个机架适用于放置网络设备、服务器等,都可以按照这个尺寸轻松放入。
目前,这种机架式部署是我们采用的主流形式。一个机架内,可能会放置15个左右的服务器。而且,机架底部还配备了小滚轮,方便我们根据需要移动机架。比如,在机房内,我们可以轻松地将整个机架推至其他位置。机房内可以排列多排这样的机柜,从而实现服务器的高密度部署。
然而,并非所有公司都有能力自建机房。实际上,更多公司选择租用机房。比如,在北京,就有像世纪互联这样的专业IDC机房提供商。他们已经建好了机房,并配备了完善的网络设备和线路。对于公司而言,如果需要服务器存储、计算资源或网络资源,无需自行建设,只需购买服务器,然后租用IDC机房的机柜和网络设备即可。带宽则可以根据需求购买。这样,就无需从头开始盖楼建机房,因为那成本高昂,且需要相应的资质。
对于一些中小型公司来说,租用IDC机房是更为实际的选择。当然,像阿里、腾讯这样的大型公司,他们会在能源充足的地方自建机房,比如张家口,那里风力资源丰富,可以利用风能进行散热,从而节约能源。
对于初创公司或小公司而言,购买服务器并租用机房的成本可能仍然较高。而且,如果项目需要快速上马,购买服务器、拉网线、部署和安装系统等过程可能会耗费大量时间,影响业务发展。因此,许多初创公司选择使用云服务,比如阿里云、腾讯云、电信云等。这些云服务提供商提供了便捷的解决方案,用户只需在网站上选择配置,系统就已经预装好了,用户只需部署自己的程序即可。这无疑是未来的主流发展趋势。未来,大家可能对硬件的关注会逐渐减少。
1.1.5 数据中心相关硬件
图1-17 数据中心
图1-18 数据中心
上图为数据中心,有许多硬件设备,大体上可以分为三类:服务器、网络设备和存储设备,图中这一排排的就是机柜,我们平时所谓的服务器、网络交换机和存储等设备都放在这里面。
物理拓扑
图1-19 物理拓扑
在机柜中有许多的设备,用上面所示的方式进行连接,包括服务器、光纤交换机、磁盘阵列和磁带库等。其中上层的设备是服务器,中层的设备是光纤交换机,下层的设备是存储设备,包含磁盘阵列和磁带库。
实际数据中心要复杂的多,除了包含上述设备外,还包括核心路由器、核心交换机、防火墙和负载均衡器等等设备。这还不包括上述机柜、无烟灭火器、空调和UPS等辅助设备。
逻辑拓扑
图1-20 逻辑拓扑
上面复杂的结构可简化为上面的逻辑图,可以看到服务器通过主机总线适配器,即:HBA(Host BusAdapter)卡和光纤交换机相连,而存储设备也通过HBA卡和光纤交换机相连;服务器之间通过以太网交换机互联。
1.1.6 服务器硬件组成
图1-21 服务器组成
服务器,本质上也是一台计算机,只不过它的配置与我们家用的电脑在某些方面有所不同。然而,它们的硬件配置组成却是相似的,比如都包含CPU、内存、硬盘、电源、风扇、网卡等部件。图1-21展示的就是一个服务器的配置图。大家可以看到,这是一台机架式服务器。机架式服务器的设计特点是可以容纳多个硬盘,并且这些硬盘直接暴露在机箱外部,这样的设计便于我们日后更新硬盘。由于服务器需要24小时不间断运行,因此硬盘的损坏率相比家用电脑要高一些。
服务器配置示例(参考价格47588元)
图1-22 服务器配置
图1-22展示的是一款服务器的配置详情。这款服务器采用了C622芯片组的主板,支持安装2至4颗CPU,性能强劲。它配备了DDR4 RED ECC内存,ECC技术能够实现对内存错误的校验功能,确保内存中数据的准确无误。此外,该服务器支持高达2048G,即2T的内存容量,满足大规模数据处理需求。值得一提的是,它还提供了32个内存插槽,扩展性极强。这款服务器来自华为,其价格大约在5万元左右,性价比颇高。
1.1.6.1 服务器硬件—CPU
图1-23 CPU品牌
CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要的部分。
CPU 架构:
- CISC:Complex Instruction Set Computer,复杂指令集
- RISC:Reduced Instruction Set Computer,精减指令集
精减指令集和复杂指令集:
早期计算机一直沿用CISC指令集方式。它的设计目的是要用最少的机器语言指令来完成所需的计算任务。在CISC处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。CISC的指令系统庞大,功能复杂,指令格式、寻址方式多;执行速度慢;难以优化编译,编译程序复杂; 无法并行;无法兼容。大约20%的指令占据了80%的处理器时间。其余80%指令使用频度只占20%的处理机运行时间。由此CISC生产厂商长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器,同时,复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误。目前个人计算机x86体系 CPU 厂商一直在走CISC的发展道路,包括Intel、AMD、VIA(威盛)等。之所以称为X86,是因为最早Intel的CPU型号是8086,后来出现了80286,80386,80486,80586等,所以之后的Intel和其兼容的厂商的生产CPU都称为X86 CPU。而后CPU从最初的8位,16位,32位,发展到目前主流的64位。为了区别非64位的CPU,一般将64位的CPU称为X86-64。由于最早在1999由AMD设计公开 64 位技术,称为 x86-64,后来改名为 AMD64,不同厂商称呼有所不同,所以AMD 64,x86-64,x64都指的是64位的基于X86的CPU。
因为CISC存在上面的问题,于是有了RISC,它是图灵奖得主John L. Hennessy(约翰・轩尼诗)和David A. Patterson(大卫・帕特森)对行业的重大贡献,由加州大学伯克利分校于1980年发布,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,使其实现更容易,指令并行执行程度更好,此称为精简指令集RISC(Reduced Instruction Set Computing)。精减指令集其风格是强调计算机结构的简单性和高效性,其特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,支持并行,并且采用流水线技术。当需要完成复杂任务时,就由多个指令组合来实现。常用的精简指令集微处理器包括:ARM、RISC-V、MIPS、PA-RISC、PowerArchitecture(包括PowerPC)、DECAlpha和SPARC等。重点提一下ARM,全世界超过95%的智能手机和平板电脑都采用ARM架构,当前最先进的华为的海思麒麟9020的CPU,高通的骁龙8至尊版的CPU,苹果的A18 CPU也都属于ARM架构。ARM可以说是目前世界上使用最广泛的CPU架构了。
当前CPU的两大架构是CISC(复杂指令集)和RISC(精简指令集),x86是CISC的代表架构,占领了95%以上的桌面计算机和服务器市场。Arm作为RISC的一种,在智能手机、可穿戴设备等移动处理器市场占领主要地位,针对物联网、5G、AI新兴领域的应用,RISC-V和MIPS两大精简指令集架构再次登上历史舞台。
RISC-V:1980年加州大学伯克利分校(Berkeley)的David Patterson(大卫・帕特森)教授主导了Berkeley RISC项目并设计了其第一代的处理器RISC I,2010年,Krste Asanovic(克斯特・阿萨诺维奇)教授带领的团队大约花了四年时间,设计和开发了一套完整的新的指令集,这个新的指令集叫做RISC-V,这是Berkeley从RISC I开始设计的第五代指令集架构,V还代表了变化(variation)和向量(vectors),RISC-V架构使用BSD开源协议给予使用者很大自由,允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件发布和销售。
MIPS是一种RISC处理器,它最早是在80年代初期由斯坦福(Stanford)大学John L. Hennessy(约翰・亨利斯)教授领导的研究小组研制出来的,MIPS是出现最早的商业RISC架构芯片之一,2018年3月21日美国计算机协会(ACM)宣布将2017年度的图灵奖颁给了芯片界的两位大师:曾任斯坦福大学校长的John L. Hennessy(约翰・亨利斯)和曾任加州大学伯克利分校教授的David A. Patterson(大卫・帕特森)。
MIPS计算机系统公司创建于1984年,最初的目的是将斯坦福大学MIPS CPU小组的研究成功商业化,商用MIPS CPU增强了内存管理硬件,并于1985年末作为R2000面世,其后又相继推出了R3000、R4000、R10000等多款处理器。
主流CPU指令集
图1-24 主流CPU指令集
目前最主流的CPU指令集当属X86和ARM两大阵营。ARM现今归属于日本软银公司,它起初是英国公司的产物,后来被日本软银收购。在服务器领域,目前唱主角的仍是X86指令集的CPU。而ARM指令集,则在移动端大放异彩,尤其是手机端,市面上主流的手机CPU几乎都是ARM系列的。比如高通的骁龙8系列、苹果最新的A18芯片,以及华为的海思麒麟9020等,它们都是基于ARM架构打造的CPU。
X86/x86_64 架构
主导桌面与服务器芯片市场
图1-25 主导桌面与服务器芯片市场
在桌面级市场中,主流品牌依旧是Intel和AMD两家公司。
ARM 架构
图1-26 ARM架构
手机:华为、小米、三星、苹果
pad:华为、小米、三星、苹果
机顶盒:各种电视机顶盒
华为泰山服务器-鲲鹏系列CPU
POWER 架构
由IBM设计,POWER系列微处理器在不少IBM服务器、超级计算机、小型计算机及工作站中,广泛使用。
RISC-V 架构
图1-27 RISC-V 架构
官网: https://riscv.org
RISC-V架构的CPU,与其他CPU相比,有一个显著的不同之处:其他CPU架构通常都涉及版权费用,而RISC-V架构则是开源且免费的。特别是在近年来,国内公司面临美国的诸多限制和打压,许多企业因版权收费问题而备受困扰,因此纷纷转向采用RISC-V架构。
RISC-V 架构参与企业
图1-28 RISC-V 架构参与企业
RISC-V架构在国内备受众多企业的青睐,像阿里巴巴、华米等国内知名公司都积极投身于RISC-V这一CPU架构的研发之中。
平头哥半导体有限公司官网: https://www.t-head.cn/
图1-29 RISC-V架构CPU玄铁910
阿里巴巴旗下有一个被称为“平头哥”的半导体公司,它已经成功研发出了一款真正可投入使用的产品——玄铁910。这款产品是基于RISC-V CPU架构打造而成的。
服务器CPU公司
-
Intel:
Xeon 至强
Itanium 安腾
-
AMD: Althlon MP
-
IBM: Power
按照CPU体系架构来区分,服务器主要分为两类:
-
x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价格相对便宜、兼容性好、稳定性较差、安全性不算太高。
-
非x86服务器:采用RISC(精简指令集)或EPIC(并行指令代码) 处理器,主要采用UNIX和其它专用操作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的PA-RISC、Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强,主要用在金融、电信等大型企业的核心系统。
微处理器
1971年11月15日,Intel公司的工程师Ted Hoff(特德・霍夫)发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。性能很低,但它的集成度却要高很多,一块4004的重量还不到一盅司。
Intel从8086开始,就进入了我们常说的x86时代。而80386的诞生则标志着Intel正是进入了32位微处理器的时代。从80386到Pentium 4这个年代的CPU,就是传说中的IA-32时代。
x86-64( 又称x64,即英文词64-bit extended,64位拓展的简写)是x86架构的64位拓展,向后兼容于16位及32位的x86架构。x64于1999年由AMD设计,AMD首次公开64位集以扩展给x86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“ClackamasTechnology” (CT)、“IA-32e”及“EM64T”。
图1-30 Intel公司的CPU发展历程
CPU主频:主频是CPU的时钟频率(CPU Clock Speed),是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。单位是Hz。一般说来,主频越高,CPU的速度越快,由于内部结构不同,并非所有的时钟频率相同的CPU的性能都一样。
外频:系统总线的工作频率, CPU与外部(主板芯片组)交换数据、指令的工作时钟频率。
倍频:倍频则是指CPU外频与主频相差的倍数。
三者关系是:主频=外频x倍频。
高速缓存(cache):高速交换的存储器。CPU缓存分为一级,二级,三级缓存,即L1,L2,L3。
内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与二级(L2)高速缓存和内存之间的通信速度。
地址总线宽度:决定了CPU可以访问的物理地址空间。
目前市场上主流的是Intel CPU,其性能参数主要包括主频、外频和倍频。主频是我们日常最为关注的指标,因为CPU的频率越高,计算速度也就越快。外频,则是指系统总线的工作频率,它主要与内存的工作频率相关联。需要注意的是,内存的工作频率和CPU的工作频率之间存在显著差异,这种差异通常以倍数来计,这便是倍频的由来。简而言之,倍频就是两者频率之间的倍数差。因此,这三者之间存在一个简明的计算公式:外频乘以倍频等于主频。对于硬件方面的这些知识,我们做个基本了解即可。
范例7:用lscpu命令查看CPU详细信息
[root@rocky9 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 45 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: AuthenticAMD
BIOS Vendor ID: AuthenticAMD
Model name: AMD Ryzen 5 4600H with Radeon Graphics
BIOS Model name: AMD Ryzen 5 4600H with Radeon Graphics
CPU family: 23
Model: 96
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
Stepping: 1
BogoMIPS: 5988.55
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse ss
e2 syscall nx mmxext pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpui
d extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes
xsave avx f16c rdrand hypervisor lahf_lm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw t
opoext ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xs
aveopt xsavec xgetbv1 xsaves clzero arat umip rdpid overflow_recov succor
Virtualization features:
Hypervisor vendor: VMware
Virtualization type: full
Caches (sum of all):
L1d: 64 KiB (2 instances) # 一级缓存,d 数据缓存
L1i: 64 KiB (2 instances) # 一级缓存,i 指令缓存
L2: 1 MiB (2 instances) # 二级缓存
L3: 8 MiB (2 instances) # 三级缓存
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Retbleed: Mitigation; untrained return thunk; SMT disabled
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Retpolines, IBPB conditional, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Srbds: Not affected
Tsx async abort: Not affected
1.1.6.2 服务器硬件—主板
图1-31 服务器主板
主板mainboard,安装在机箱内,是计算机最基本的也是最重要的部件之一。
主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。
服务器主板与我们家用电脑的主板存在显著差异。家用电脑的主板,在内存条支持方面,通常较为有限:台式机一般支持2至4根内存,而笔记本电脑则通常支持2根内存。然而,如图1-31所示,右边的服务器主板却支持高达16条内存,其扩展能力远超家用电脑主板。
1.1.6.3 服务器硬件—内存
图1-32 内存
ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条。一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。
ECC内存_百度百科:https://baike.baidu.com/item/ECC内存/1691343。
内存: 介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。
内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快。
计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
与之相对应的还有外存:硬盘,U盘,软盘,光盘。
内存和外存的区别:
- 内存断电后数据丢失。
- 外存断电后数据可以保存。
容量:即该内存的存储容量,单位一般为GB。
内存带宽:
内存带宽是指内存与北桥芯片之间的数据传输率,byte简写B称为字节,bitb 位。
单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是双通道内存就要再乘以2。
计算公式: 内存带宽=内存总线频率×数据总线位数/8
内存带宽它的计算公式是内存总线的频率乘以数据总线位数除以8。
范例8:单通道和双通道内存带宽计算
# 单通道DDR(Double Data Rate双倍速率)内存带宽计算
DDR5-7200:7200MHz*64bit/8=57600MB/S
# 比方说我们有一个DDR-7200的一个内存条,7200指的是7200兆赫兹,现在都是64位,7200MHz乘以64bit,除8就把它变成字节,这样的话就可以算出内存的一个通讯速度,这个通讯速度可以达到57.6G。
DDR4-4000:4000MHz*64bit/8=32000MB/S
DDR4-3600:3600MHz*64bit/8=28800MB/S
# 双通道:在单通道速度的基础上再乘以2,就是单通道速度的2倍
DDR5-7200:7200MHz*64bit*2/8=115200MB/S
DDR4-4000:4000MHz*64bit*2/8=64000MB/S
1.1.6.4 服务器硬件—硬盘
图1-33 硬盘
图1-33左侧展示的是早期的硬盘。1956年,IBM公司研发出了世界上第一块电脑硬盘,其容量仅为5M,体积却与家用洗衣机相仿。而到了2013年,硬盘的容量已飞跃至多少TB,无论是容量还是速度,都实现了大幅度的提升。
常见的磁盘接口种类:
- IDE:Integrated Drive Electronics,电子集成[驱动器,早期家用电脑常用接口。
- SCSI:Small Computer System Interface,小型计算机系统接口,早期的服务器常用接口。
- SATA:Serial ATA (Advanced Technology Attachment 高技术配置),家用电脑常用的接口。
- SAS:Serial Attached SCSI,是目前服务器上主流的接口。
- 光纤通道:Fiber Channel,高性能服务器上采用的接口。
- M.2 :固态硬盘接口,性能更强。
硬盘接口早期都有IDE、SCSI现在已经不用了,现在笔记本上是SATA或M.2接口,服务器用的SAS接口,光纤通道的现在很少用了。
结构分类:
- 机械硬盘HDD(Hard Disk Drive)
- 固态硬盘SSD(Solid State Drives )
机械硬盘:
图1-34 机械硬盘
- 存储介质(Media)——盘片
- 盘片的基板是金属或玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有任何暇疵。
- 读写磁头(Read Write Head)——磁头
- 磁头是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向外传输。
- 马达( Spindle Motor & Voice Coil Motor )
- 马达上装有一至多片盘片,以7200,10000,15000 RPM等定速旋转,为保持其平衡不可抖动,所以其质量要求严谨,不产生高温躁音。
机械硬盘基本参数:
-
容量:容量是硬盘最主要的参数。单位有MB、GB、TB,常见容量:500GB,1T,2T,3T,4T,6T。
-
转速:转速是指硬盘盘片每分钟转动的圈数,单位为rpm。常见:7200rpm,10000rpm,15000rpm。
-
传输速率:传输速率(Data Transfer Rate) 。硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒(MB/s),常见:6Gb/s,12Gb/s。
-
缓存:硬盘缓存的目的是为了解决系统前后级读写速度不匹配的问题,以提高硬盘的读写速度。
-
磁盘尺寸:3.5”/2.5”/1.8”。
-
是否支持热插拔。
SSD硬盘:
图1-35 SSD硬盘
SSD,即固态硬盘,泛指使用NAND Flash组成的固态硬盘。其特别之处在于没有机械结构,以区块写入和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计SSD读写存取速度快,性能稳定,防震性高,发热低,耐低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现故障几率也较小。缺点:价格高,容量小,相对普通机械硬盘性价比低。
硬盘如今主要分为机械硬盘和固态硬盘两大类。机械硬盘内部构造以机械设备为主,而固态硬盘则全是芯片组成。通常来说,芯片的速度相较于机械硬盘会更快一些。不过,机械硬盘有个优势,就是一旦硬盘出现故障,修复的可能性相对较大。而如果是固态硬盘,里面的芯片一旦损坏,修复起来就相当困难了。
1.1.6.5 服务器硬件—网卡
图1-36 服务器网卡
图1-37 服务器网卡
服务器都在主板上集成了网卡,传输速率为1Gbps,即千兆网卡。
特殊应用需要高端网卡,如光纤网卡,Infiniband网卡等,传输速率能达到10Gbps、20Gbps、40Gbps甚至100Gbps,即万兆网卡。
1.1.6.6 服务器硬件—相关其它硬件
1.1.6.6.1 服务器硬件—远程管理卡
IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标准由英特尔、惠普、NEC、美国戴尔电脑和SuperMicro等公司制定。用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。而且更为重要的是IPMI是一个开放的免费标准,用户无需为使用该标准而支付额外的费用。
IPMI 定义管理员如何监测系统硬件和传感器、控制系统组件和检索重要系统事件的日志以进行远程管理和恢复。
自1998 年,IPMI论坛创建了IPMI标准依赖,其已经得到了170 多家供应商的支持,这使得其逐渐成为了一个完整地包括服务器和其他系统(如存储设备、网络和通信设备)的硬件管理规范,当前流行的是IPMI 2.0。
远程管理卡就是基于IPMI实现的服务器特有的远程管理部件,在家用电脑及笔记本电脑上是不存在的。
远程管理卡是安装在服务器上的硬件设备,提供一个以太网接口,使它可以连接到独立于业务网络的专用的管理网络中,提供远程访问,如查看服务器状态,调整BIOS,配置RAID,安装系统,重启系统等。这种远程管理是基于服务器主板上集成的基板管理控制器BMC(Baseboard Manager Controller)实现,BMC就是一个独立于服务器的微处理器系统,可以完成负责监测和管理操作系统之外的服务器环境和状态。它既不会占用服务器系统资源,也不会影响服务器系统的运行。所有远程管理卡都是向BMC发送指令来实现服务器的管理和监控功能.只要服务器通电而无需启动操作系统,BMC即可正常工作。
早期(2010年以前),服务器托管在IDC机房,一旦出现问题,还得跑机房或者请机房的人管理。有了远程管理卡之后,运维人员管理服务器的效率就大大的提高了。
远程管理卡有服务器自带的和独立的两类。服务器自带的远程管理卡,可以关机、开机,但是看不到开关服务器的过程。所以,建议给服务器配备独立的远程管理卡,可能会多花100多块钱的样子,但是,当服务器出现问题,就不需要打车或者出差,也不用给机房人员打电话了,可以利用远程管理卡快速查看服务器故障并恢复服务。
各个服务器厂商都提供了符合IPMI标准的远程管理接口,但称呼不尽相同,比如Dell的iDRAC,惠普的ILO,浪潮的IPMI,华为的IBMC,联想的xclarity,华三的HDM等。
图1-38 浪潮的服务器IPMI卡
上图是浪潮的服务器IPMI卡,不过和DELL不同,浪潮的服务器是出厂默认带的IPMI接口。
图1-39 Dell的iDRAC远程管理卡
上图展示的是Dell的iDRAC(Integrated Dell Remote Access Controller)卡,即远程管理卡,它宛如一台独立运行的小型PC,巧妙地附加在服务器之上。通过与服务器主板上的管理芯片BMC紧密通信,iDRAC能够全面监控并管理服务器的硬件状态信息。它自备系统与独立的IP地址,与服务器上的操作系统毫无关联,为服务器管理员提供了极为便捷的远程访问与管理工具。
1.1.6.6.2 服务器硬件—阵列卡
图1-40 阵列卡
Raid卡用来实现RAID的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID芯片使CPU的资源得以释放,阵列卡把若干硬盘驱动器按照一定要求组成一个整体、由阵列控制器管理的系统。
阵列卡可以用来提高磁盘子系统的性能及可靠性。
支持的多种RAID级别,RAID0,1,5,6等。
阵列卡提供缓存及电池保护。
1.1.6.6.3 服务器硬件—电源
图1-41 电源
支持服务器的电力负载,支持冗余,防止电源故障 ,故障预警和防止 ,故障之前的预防性维护,保证服务器持续运行,电源子系统包括:冗余电源和风扇。
1.1.6.6.4 服务器硬件—显卡
服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或32M,GPU: Graphic Processing Unit,即“图形处理器”。
1.1.6.6.5 服务器硬件—热插拔技术
热插拔技术,称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备,常见的热插拔设备:硬盘,电源,PCI设备,风扇等。热插拔硬盘技术与RAID技术配合起来,可以使服务器在不关机的状态下恢复故障硬盘上的数据,同时并不影响网络用户对数据的使用。
1.1.6.6.6 服务器硬件—机柜
图1-42 机柜
图1-43 机柜
机架式服务器-服务器放置在机柜中。
通常使用的机柜是42U(约2米高)机柜( 1U=44.45mm)。
外观尺寸一般为:宽600深1000高2000(mm)。
在一个机架上,通常累计的设备U数不超过26U,其中,全1U设备的部署数量一般不超过16台,全2U设备的部署数量则一般不超过12台,而全4U设备的数量通常保持在4至7台之间。
机架式服务器-机架及其配件
图1-44 机架及其配件
在服务器的机架上,或许还能发现其他一些至关重要的硬件设备。比如,那个负责机架电源管理的PDU,它就像机架的“能源管家”,精心调配着每一丝电力。还有KVM,全称是键盘、显示器和鼠标的集合体。在安装服务器之初,我们往往需要配置一个显示器来查看服务器界面,这时,KVM便派上了用场。它就像一个共享的桥梁,让一组服务器能够共用这一个键盘、显示器和鼠标,无需为每台服务器都单独配备一套,既节省空间又方便管理。
1.1.6.7 各种硬件处理速度和性能优化
https://www.sohu.com/a/360663667_467784
服务器的性能短板:如果CPU有每秒处理1000个服务请求的能力,各种总线的负载能力能达到500个,但网卡只能接受200个请求,而硬盘只能负担150个的话,那这台服务器得处理能力只能是150个请求/秒,有85%的处理器计算能力浪费了,在计算机系统当中,硬盘的读写速率已经成为影响系统性能进一步提高的瓶颈。
图1-45 硬件处理速度
电脑的各个设备部件之间的延时从高到底的排列,依次是机械硬盘、固态硬盘、内存、CPU。
服务器的速度差异颇为显著,其中CPU的速度独占鳌头,其运算速度达到了纳秒(ns)级别。在CPU内部,还设有缓存,其访问速度更是达到了10纳秒级别。相比之下,内存的速度则稍逊一筹,处于100纳秒级别。可以看出,它们之间的速度差异几乎达到了一个数量级。
而硬盘的速度与内存相比,又有着不小的差距。如果是普通的机械硬盘,那速度差异更是天壤之别。硬盘的访问速度通常在10毫秒(ms)级别,众所周知,1秒钟等于1000毫秒,这足以彰显硬盘与内存速度之间的巨大鸿沟。
由于硬盘和内存速度的巨大差异,我们通常选择将数据存储在硬盘上,因为内存中的数据在断电后无法永久保存。除了速度上的差异,硬盘和内存还有另一个显著区别:硬盘上的数据在断电后不会丢失,实现了数据的持久保存;而内存中的数据一旦断电就会消失,它只能提供临时存储。
当我们需要访问硬盘上的数据时,如果每次都直接从硬盘读取,速度会非常慢。因此,我们采用了缓存技术。缓存技术就是提前将硬盘上需要访问的数据放入内存中,这样下次访问时就可以直接从内存中读取,大大提高了访问速度。
缓存技术是我们生产环境中使用的主流技术之一。比如,当硬盘速度太慢时,我们可以将内存中的一块空间划分出来,作为临时存储硬盘数据的空间。下次需要使用时,直接从内存中读取数据即可。
事实上,CPU也采用了类似的缓存机制。CPU的缓存可以将内存中需要访问的数据提前放入CPU的缓存中,这样CPU在访问数据时就不需要再跑到内存中去查找了,直接从缓存中读取即可,进一步提高了访问效率。
图1-46 硬件处理速度
上图可以看到,CPU最快,一个时钟周期是0.3纳秒,内存访问需要120纳秒,固态硬盘访问需要50-150微秒,传统硬盘访问需要1-10毫秒, 网络访问最慢,都是几十毫秒。
上图最有趣的地方在于它把计算机世界的时间和人类世界的时间做了对比,常常把CPU比喻成跑得很快,但是记不住事情的“阿甘”, 他的一个时钟周期如果按1秒算:
内存访问就是6分钟。
一次 CPU 上下文切换(系统调用)需要大约需要1小时。
在 1Gbps 的网络上传输 2K 的数据需要10多个小时。
从 SSD 读取 1MB 的顺序数据,大约需要 1ms,换算成人类时间是 1个月。
从磁盘读取 1MB 连续数据需要 20ms,换算成人类时间是 20个月。
如果说打开一个网页可以秒开的话,那也相当于100年。
对于CPU来说,这个世界真是太慢了!
存储器的层次结构
图1-47 存储器的层次结构
上图以层次化的方式,增加了价格信息,它展示了一个真理:世界上没有免费的午餐。存储器越往上速度越快,但是价格越来越贵, 越往下速度越慢,但是价格越来越便宜。正是由于计算机各个部件的速度不同,容量不同,价格不同,导致了计算机系统/编程中的各种问题以及相应的解决方案。
并发
CPU的速度超级快,不能老是让它闲着,要充分地压榨它!这里有两个重要的理由:
- 人类需要多个程序“同时”运行,我们要把CPU的时间进行很小的分片,让各个程序在CPU上快速轮转,造成一种多个程序同时在运行的假象,即并发。
- 当CPU遇到IO操作(硬盘,网络)时,不能坐在那里干等“几个月”甚至“几年”,在等待的时候,要切换去执行别的程序。
缓存
需要持久化的数据一定要保存到硬盘中,但是硬盘超级慢,支持不了大量的并发访问,那怎么办呢?
可以把最常访问的热点数据放到CPU的缓存中, 其实CPU也确实就是这么做的,但是CPU的L1, L2, L3级缓存实在是太小, 根本满足不了需求。于是只好退而求其次,把热点数据放到速度稍慢的内存中,于是应用程序的缓存就出现了。缓存虽然是解决了问题,但是也带来了更多的问题,例如:缓存数据和数据库数据怎么保持一致性?缓存如果崩溃了该怎么处理?数据在一台机器的内存放不下了,要分布到多个机器上,怎么搞分布式啊,用什么算法?…